Summary
From a task on the phone, open the box's running dev server in the phone browser (e.g. a Vite/Next dev server the agent started) — a one-tap "preview" of what the agent is building.
Why
The other recurring Termius highlight (~990 likes): run the agent's web app on the box, port-forward, and open localhost:3000 on the phone. It's how people eyeball the agent's output from the couch.
Why it's nearly free for us
Termius needs SSH port-forwarding for this. We don't. The phone is already on the tailnet, so it can reach the box's services directly:
http://<box-tailscale-ip>:<port>
No tunnel, no port-forward machinery, no new transport. This is a UI affordance, not infrastructure:
- A "Preview" action that opens
http://<host>:<port> (host = the connected box's Tailscale address we already store in apps/mobile/src/storage.ts) via Linking.openURL or an in-app WebView/expo-web-browser.
- Let the user set/pick the port (default 3000), or — stretch — detect a listening dev-server port on the box over RPC.
Acceptance
- From the board (or a task), a control opens
http://<box-ip>:<port> in the browser / in-app webview.
- Port is user-settable; sensible default (3000).
- Works over Tailscale with no changes to the daemon or the WS transport.
Priority
Low–medium. Cheap and self-contained; nice quality-of-life once image paste (higher value) is in. Because reachability is already solved by Tailscale, this stays consistent with the "SSH-to-any-host shelved" decision — see the Clawnify decision doc.
Summary
From a task on the phone, open the box's running dev server in the phone browser (e.g. a Vite/Next dev server the agent started) — a one-tap "preview" of what the agent is building.
Why
The other recurring Termius highlight (~990 likes): run the agent's web app on the box, port-forward, and open
localhost:3000on the phone. It's how people eyeball the agent's output from the couch.Why it's nearly free for us
Termius needs SSH port-forwarding for this. We don't. The phone is already on the tailnet, so it can reach the box's services directly:
No tunnel, no port-forward machinery, no new transport. This is a UI affordance, not infrastructure:
http://<host>:<port>(host = the connected box's Tailscale address we already store inapps/mobile/src/storage.ts) viaLinking.openURLor an in-appWebView/expo-web-browser.Acceptance
http://<box-ip>:<port>in the browser / in-app webview.Priority
Low–medium. Cheap and self-contained; nice quality-of-life once image paste (higher value) is in. Because reachability is already solved by Tailscale, this stays consistent with the "SSH-to-any-host shelved" decision — see the Clawnify decision doc.