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.