Skip to content

LAN access

SimDeck binds to 127.0.0.1 by default. Bind to a LAN address when another device needs to open the browser UI.

Start a LAN session

sh
simdeck \
  --bind 0.0.0.0 \
  --advertise-host 192.168.1.50 \
  --open

Open the printed network URL from the remote browser:

text
http://192.168.1.50:4310

Enter the pairing code printed by the CLI. After pairing, the browser receives the API cookie.

Pick the right host

Use an IP address or hostname that the remote device can resolve:

sh
simdeck --bind 0.0.0.0 --advertise-host my-mac.local --open
simdeck --bind 0.0.0.0 --advertise-host 192.168.1.50 --open
simdeck --bind 0.0.0.0 --advertise-host 100.101.102.103 --open

If you bind to 0.0.0.0 but advertise localhost, remote browsers will try to connect to themselves. Tailscale addresses work like direct HTTP hosts; discovery does not use LAN broadcast across the tailnet, so use the Tailscale IP or MagicDNS name when pairing a native client.

Direct API access

Loopback browser sessions are authenticated automatically. Direct API callers should send the token from:

sh
simdeck service status

Use either header:

text
X-SimDeck-Token: <token>
Authorization: Bearer <token>

Security checklist

  • Use LAN mode only on networks you trust.

  • Treat the service token as a secret.

  • Restrict the port with macOS Firewall when needed.

  • Stop the service when the shared session is done:

    sh
    simdeck service stop

Troubleshooting

SymptomFix
Remote browser cannot connectConfirm --bind 0.0.0.0, firewall rules, and the advertised host
Pairing code is rejectedRestart the service and use the newly printed code
Stream connects but stuttersUse --stream-quality low or --video-codec software
API script gets 401Send X-SimDeck-Token or Authorization: Bearer <token>

Released under the Apache-2.0 License.