Skip to content

From your phone

The board can answer your phone over Tailscale, a private network between your own devices. Nothing is exposed to the internet and nothing is configured.

  1. Install Tailscale on this Mac and on the phone, and sign in to both with the same account.
  2. Press phone in the board’s masthead, then Share with my phone.
  3. Scan the code. The link signs itself in, once, within ninety seconds.

Stop sharing takes the board back off the network and forgets the key, which signs out every device that scanned one. Sharing is off until you ask for it, and a board that is not sharing holds no secret at all.

A scanned code is the only way in - there is no password to type and so nothing to guess at. A device with no camera cannot join.

A feature’s dev server comes along while you are sharing: its URL chip on the phone opens it at the board’s own tailnet name, on the dev server’s port, behind the same sign-in, with the notes toolbar on it and hot reload working. Kelpie adds and removes those ports with tailscale serve as features come and go, so tailscale serve status lists one per running feature.

Two kelpie.json keys cover a dev server that needs more than that. env may use {tailnetHost}, this Mac’s tailnet name, for a dev server that has to be told which host to accept - the variable is left unset when Tailscale is not running. extraPorts names a JSON file the dev server writes and the keys of the other ports in it, read once the app is ready and shared on the same port numbers, for a page that dials a websocket server beside it:

"env": { "DEV_ALLOWED_ORIGINS": "{tailnetHost}" },
"extraPorts": { "file": ".acme/instance.json", "keys": ["ports.ws"] }
  • The Preview tab, which needs the desktop app. The URL chip opens the app instead.
  • Typing into the Terminal tab: a soft keyboard will not open for it.
  • Open and focus, which raise windows on the Mac.
  • Notifications. The board tells you something needs you only while you are looking at it.