Docs
Watching and steering agents
Watch an agent's terminal live from your Mac or Windows PC, a browser, your iPhone or your iPad, answer it, and start new sessions. What each needs.
An agent that runs in a terminal on your computer can be watched and steered from FEATit: you see its terminal live, you type the answer it waits for, and you start the next session, from your Mac or Windows PC, a browser, your iPhone or your iPad. The terminal travels from that computer to your screen over your own VPN, such as Tailscale, never through FEATit’s servers.
What you need
On the computer the agent runs on:
- The FEATit desktop app, running, on the Mac or Windows PC, with its bridge installed. It is the part that reads the terminal and serves it. Download it from the download page, and see Agent setup for the bridge.
- The agent inside tmux. A Claude Code or Codex session in a pane of your usual tmux server can be watched. A session in a plain terminal window, or on a tmux server you started under its own name with
tmux -L, cannot.
To watch from anywhere other than that computer, also:
- Your VPN on that computer and on the device you watch from. The computer serves its terminals only on its VPN address, over HTTPS. Tailscale is the tested example: both devices in the same tailnet, with the Tailscale app on an iPhone or iPad.
- HTTPS certificates switched on for your tailnet, in the Tailscale admin console under DNS. The computer serves its terminals over HTTPS only, and without a certificate it serves none.
- Watching from a browser switched on for that computer, in the desktop app under Infrastructure. It is off until you switch it on, and switching it off closes the connection at once.
Watching on that computer itself needs none of the three: the desktop app shows its own terminals with nothing leaving the machine.
Watch an agent
Open Agents and choose an agent. Its details show its terminal, live, exactly as it is in tmux. Watching copies the screen and nothing else: it never resizes the pane, never changes its window and never sends it a key.
- History scrolls back through what the terminal printed. For a full-screen program, Replay steps back through the screens you saw while watching, skipping the ones that did not change, with a scrubber to move through them. Both are kept in your browser while you watch and nowhere else.
- Fit height shows every line of a tall terminal at once, and Actual size keeps the text full size. The choice is remembered.
- An agent whose terminal cannot be shown says why, and what to change.
Every agent on one board
Choose Board on the Agents page to see every running agent as a tile. Nothing is watched until you choose: watch one tile, or Watch all for a work area. The tiles you watch come first and keep their order, and each one scrolls back through its own history. On a phone, one tile is watched at a time.
Each computer shows a limited number of terminals at once, four unless you change it. Its watch limit is set on the board, from one to thirty-two. Every watched terminal costs that computer a little processor time, which is why the limit is the computer’s.
Answer an agent
Under a watched terminal, tick Type into this session, write the answer and press Send. The whole text goes to the agent as one message, line breaks included, followed by Enter. Your draft is kept for each session, and what you sent before is one step away.
- You can type into the sessions you own, and into others only with the permission to type into a shared terminal.
- Sends are limited to ten in ten seconds for each watch.
- Every send is recorded: who sent it, when, to which session and how many characters. The text itself is never stored. A send that cannot be recorded is not sent.
Approve a permission request from any device
When an agent asks permission to run a tool, the request shows in its conversation and as Needs you on every device you are signed in on. Read what it wants to run, then choose Approve or Deny, and the agent carries on.
- It works for a conversation you run through FEATit, and for a Claude Code session in a terminal while its hook waits for your answer. A Codex session in a terminal waits for an answer from another device only when nobody is at its terminal.
- A question an agent asks in a terminal session can be read from any device, and is answered on the machine. In a conversation you run through FEATit, you answer its questions from any device too.
- Notifications come from the FEATit iPhone app, in early access. It tells you which agent is waiting and on which machine, never what the agent asked. They are on by default and switched off in the app’s settings. The desktop app sends no notification: its icon in the menu bar or the taskbar counts the decisions waiting for you.
- Every answer is signed with the key of the device you give it on, and recorded with who answered and on which device. An answer that is stale or repeated is refused.
Watch its screen
Some work happens outside the terminal: a simulator, a browser, an app the agent is testing. On an agent’s page, Screen shows the windows that agent opened on its computer, live and view only. On the computer’s own page, its owner can watch one window or, as an explicit choice, the whole screen. The computer shows a sign while it is watched.
Screen watching is off until the computer’s owner switches it on in the desktop app, for the agent’s windows or for the full screen too. It travels the same way as the terminal, from that computer to your device over your VPN, never through FEATit’s servers, and every watch needs a single-use pass. Others can watch only if the owner allows people with the permission to.
Start a new session
From the board or an agent’s page, Start session opens a new Claude Code or Codex session in tmux on your computer, in your own sign-in session there, so it has the same access as one you open yourself. It starts only in folders you allowed for that computer, and every start is confirmed by you. The desktop app must be running.
What FEATit sees, and what it records
The terminal goes from that computer straight to your browser over your VPN, encrypted by the VPN and over HTTPS. Your FEATit deployment never receives it. What the deployment does hold:
- A single-use pass for every watch from another device. Your browser asks your FEATit for it, the computer checks it and your FEATit spends it once. It records who watched which session, from where and when. A pass lasts thirty seconds unused, and a watch renews it every ten minutes without a gap.
- Each computer’s address on your VPN and whether it serves watching, shown to you only.
- The record of every send, as above, without the text.
Only you can watch your agents’ terminals. Your own record of watches and sends is in Export your data, in your account settings.
When it does not show
| What it says | What to do |
|---|---|
| Not a tmux pane | Start the agent inside tmux. |
| Watching from a browser is switched off | Switch it on in the desktop app on that computer, under Infrastructure. |
| Not on a Tailscale network | Install Tailscale on that computer, or watch from the desktop app there. |
| No HTTPS certificate | Switch on HTTPS certificates for your tailnet in the Tailscale admin console. |
| This browser cannot reach that machine | Join this device to the same VPN, and check that the desktop app runs there. |
| Already showing as many terminals as its watch limit allows | Stop watching one, or raise that computer’s watch limit on the board. |
| More than one Codex terminal shows this session | Close the extra Codex window for that session. |
NextSelf-hosting