Skip to content
Logo

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:

CommandEffect
get_stateWorkspaces, panes, tabs, focus
get_screenCurrent terminal screen contents
send_textType text into the active terminal
send_keySend special keys (arrows, Enter, etc.)
switch_workspaceSwitch workspace
select_paneFocus a pane
select_tabSwitch tab
new_tabOpen a new tab
agent_respondApprove or deny a waiting agent
agent_jumpBring 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 ssh session 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.