Overseer — a control panel for AI agents: production in 28 days
An RNM product of our own: one panel that shows and drives every Claude Code and Codex session running on your own machines — including from a phone on the road. It took 28 days from the first commit to a working production instance.
Task
An AI agent runs on the developer’s machine — with its databases, credentials, private network and configured environment. That work cannot move to the cloud, and it can only be driven from that one computer’s terminal: to see what the agent is doing on the dev box you have to SSH into it, and away from your desk there is neither visibility nor any way to step in. We needed one panel for the whole fleet — on the condition that the agents and the data stay exactly where they are.
Project story
The connection was turned outward
The daemon opens an outbound secure connection to the server itself, and both commands and files travel over it. That is how a machine behind NAT connects — with no public IP, no port forwarding and no mandatory VPN, all of which used to be a precondition.
The source of truth stayed on the machine
Sessions, the conversation with the agent and files belong to the daemon; the server keeps only a rebuildable projection. So the panel never paints state it does not have: if a machine is unreachable, you see that honestly, and the list repairs itself once the machine answers.
A dropped connection is normal, not a failure
Every command carries a stable identifier and explicit "accepted" and "completed" stages. The laptop closes, the network drops, the daemon updates — once it is back, state converges with no lost and no duplicated actions.
Two agents, one interface
Claude Code and Codex differ in protocol and capabilities, yet both expose the same run, statuses and metrics. Codex is wired through its native app-server — a persistent process instead of a restart on every turn.
What we built
- →Fleet panel: which machines are connected, where work is running, which one went offline
- →Live work with an agent: answer its question, stop it, queue the next task
- →Claude Code and Codex behind one event stream — adding a third agent needs no new panel
- →A machine behind NAT connects over an outbound link, with no public IP or port forwarding
- →Clients for iOS, Android, macOS, Windows and Linux from one codebase, plus the web panel
- →Push on exactly one event: a run you started finished while you were not watching
- →Voice input from the phone: the recording goes to our server, so the provider key never reaches the device
- →Token and cost accounting by author, project, model and time — you see where the agent budget goes
The product in use




Result
Overseer went from an idea to a working tool: we now build Overseer itself and the team’s other projects through it. In 28 days — 97 released tasks and 318 commits, a web panel and a client on five systems, support for two agents and machines behind NAT. It is our own product, so the whole story is visible and can be checked against the dates — and it is the same mode of work a client gets on the subscription: no extra approvals and no extra charges along the way.