Remote Control
Boo can serve a small web UI to control the terminal from another device on your LAN — a phone, tablet, or second computer.
Starting the Server
Terminal → Start Remote Control Server starts an HTTP server (default port 8899) and shows a URL like:
http://192.168.1.20:8899/#<session-token>
Open the URL on any device in your network. Terminal → Copy Remote Control URL copies it again later; selecting the menu item again stops the server.
What You Can Do
The web UI polls the app over a JSON command API:
| Command | Effect |
|---|---|
get_state | Workspaces, panes, tabs, focus |
get_screen | Current terminal screen contents |
send_text | Type text into the active terminal |
send_key | Send special keys (arrows, Enter, etc.) |
switch_workspace | Switch workspace |
select_pane | Focus a pane |
select_tab | Switch tab |
new_tab | Open a new tab |
agent_respond | Approve or deny a waiting agent |
agent_jump | Bring an agent's tab to the front |
The screen is rendered in the browser by the same terminal core Boo uses — Ghostty's VT parser compiled to WebAssembly — so colors and layout match the app.
Answering Agents
When a coding agent waits for you (a permission prompt, see Agent Inbox), a card appears above the screen with the agent, its workspace and the end of its screen, where the agent shows what it wants to run. The page title counts waiting agents and the phone vibrates on each new request.
- Approve types Return into the agent's terminal, picking the dialog's default "Yes".
- Deny types Escape, which cancels the request; Claude then waits for new instructions.
- Open brings the agent's tab to the front, so the screen below shows it.
The agent's tab does not have to be in front on the Mac. If the agent has asked something new since the card was drawn, the answer is refused instead of landing on the new question.
Add to Home Screen
The page ships a web manifest and icons, so Share → Add to Home Screen (iOS) or Install app (Android) gives it its own icon and a full-screen window. Add it while the page is open with the #token URL; the installed app opens that same URL. The token changes whenever the server restarts, so add it again after a restart.
Phone Push
Browsers only allow web push on HTTPS pages, and this page is plain HTTP on your LAN. So Boo pushes through ntfy instead: install the ntfy app, subscribe to a hard-to-guess topic, and paste its URL (https://ntfy.sh/<topic>, or your own ntfy server) into Settings → Notifications → Push to Phone. Send Test checks the URL.
Boo pushes when, in a tab you're not looking at:
- an agent needs your input
- a command that ran longer than the threshold (default 1 min) finishes
- an
sshsession drops (ssh exits with 255 after being connected)
A push carries only the event type, the workspace name and the agent name — never commands or terminal output. At most one push per event type is sent every 10 seconds. While the remote control server runs, tapping the push opens this page; the link leaves out the token, which the page already remembers.
Push is off by default.
Security
- Every API request must carry the session token via
Authorization: Bearer <token>. Requests without it are rejected. - The token is regenerated on every server start and delivered in the URL fragment (
#...), which browsers never send over the network. - Connections use
Connection: close; idle connections are dropped, and client count and request sizes are bounded.
