Remote Janet · Tailscale

Reach Janet at home on 8080 (API) and 8765 (Call Janet WebSocket) from phone or laptop — no public port forwarding. Replace YOUR-JANET-HOST.your-tailnet.ts.net with your MagicDNS name or Tailscale 100.x IP.

Copy-paste · janet-mesh · privacy-first

Before you start

1 · Install janet-mesh + Tailscale

bash
brew tap MzxzD/janet && brew install MzxzD/janet/janet-mesh
Linux — tailscale service
brew services start tailscale
sudo tailscale up
Sanity check
tailscale status
tailscale ip -4
janet-mesh-env

Enable MagicDNS in the Tailscale admin console.

2 · Bind Janet on the host

Environment
export JANET_API_HOST=0.0.0.0
janet-api-server
Put the same env in your LaunchAgent plist, systemd unit, or menu bar starter. WebSocket for Call Janet: run simple_websocket_server.py from janet-seed if that’s your stack.

3 · Linux firewall (ufw)

Allow Janet on tailscale0
sudo ufw allow in on tailscale0 to any port 22
sudo ufw allow in on tailscale0 to any port 8080
sudo ufw allow in on tailscale0 to any port 8765
sudo ufw allow in on tailscale0 to any port 9090
sudo ufw reload
sudo ufw status

4 · janet-peer trusted_networks

~/.config/janet-peer/config.toml
trusted_networks = [
    "192.168.0.0/16",
    "10.0.0.0/8",
    "172.16.0.0/12",
    "100.64.0.0/10",
]

5 · iPhone (Call Janet)

Server URL (Settings)
ws://YOUR-JANET-HOST.your-tailnet.ts.net:8765

Install the Tailscale app; sign in to the same tailnet.

6 · Health check from laptop

curl
curl -sS "http://YOUR-JANET-HOST.your-tailnet.ts.net:8080/health"

7 · Cursor (Composer / Agent)

User settings.json
"cursor.openai.baseUrl": "http://YOUR-JANET-HOST.your-tailnet.ts.net:8080/v1",
"cursor.openai.apiKey": "janet-local-dev"

8 · Continue.dev

~/.continue/config.yaml (per model)
apiBase: http://YOUR-JANET-HOST.your-tailnet.ts.net:8080/v1
apiKey: janet-local-dev

9 · Snippet helper (repo or Homebrew)

From janet-seed/scripts
bash janet_cursor_tailscale_snippet.sh --skip-health YOUR-JANET-HOST.your-tailnet.ts.net
After brew ships the binary
janet-cursor-tailscale-snippet --skip-health YOUR-JANET-HOST.your-tailnet.ts.net

Verification

CheckAction
Tailscaletailscale ping OTHER-NODE
APIcurl …/health
iPhoneLTE + Tailscale → Call Janet connected
IDEOne Agent + one Continue turn
Full runbook with repo links: Janet-Projects/janet_orchestration_module/docs/REMOTE_ACCESS_TAILSCALE.md. Inference stays on your hardware; Tailscale is only the overlay.