Network diagram
How doki reaches a machine on another network
Your Mac- Everything on the laptopAgents live while the lid is open, and you do not need them to continue after you close it.
- A machine that stays onYou want Claude, Codex, or Droid to keep going on a Mac mini or a VPS, and to see them in the laptop’s Inbox and on the iPhone.
SSH without turning the server into a public service
You do not install a daemon open to the internet or forward a port on the router. doki starts the connection toward the machine. The server needs your agent, and tmux if you want to type into the live session. Without tmux, doki can still see the work depending on how the agent was started. With tmux, the remote keyboard goes into that session.
The SSH key doki uses for this is its own, in ~/Library/Application Support/AgentsWorkers/. It is not the personal key you use for other things, and it is not committed to the repository.
When the laptop and the server are not on the same network
In the same house, the local network is enough. Away from it, you generate doki-bridge’s install command in the app and paste it on the remote machine. The bridge tries, in order, the local network, a direct UDP link, and the server relay.
The relay is opt-in. doki’s server introduces the two machines. It does not decrypt the SSH session. If you do not want that third hop, you stay on the local network or the direct link.
What shows up in the Inbox
A remote session uses the same status as a local one: working, needs you, done, error. You can answer from the laptop or from the iPhone. Ports the agent opened on the server are listed, and you can open them through an SSH tunnel instead of exposing them.
That covers the frontend left running on the VPS and the database the agent started. Stopping the process can also be done from the list, not only by SSHing in to kill a PID.
Which agents are worth leaving there
Any you already use on the Mac and can install on that machine: Claude Code, Codex, Droid, OpenCode, Gemini CLI. Droid fits well because its sessions stay on disk and exec can deliver a reply. That case is in Factory Droid vs doki.
Cursor over the API can stay on the Mac even if the repo is cloned on the server. You do not have to move everything. The Inbox collects both origins. More context in several agents.
What to be careful about
Guard still applies to what the agent wants to run on that machine: deletes, sudo, force push, secrets, migrations, deploys. Approving from the phone does not change the rule. It only changes where you tap.
A copy of .env in a remote worktree is as sensitive as the original. doki does not send it to its server. It stays on the machine where the agent runs, under the account you used for SSH.
Frequently asked questions
Do I have to open port 22 to the world?
No. doki does not ask you to publish SSH on the internet. The Mac starts the connection, and the bridge covers the case where the networks cannot see each other, without a new inbound port.
Does doki’s server see my code?
No. If you use the relay, the server only introduces the machines. SSH stays end-to-end encrypted, and you can skip the relay.
Does it work on a Linux VPS?
Yes. Mac mini, Linux, and VPS use the same flow. tmux is what lets you type live inside the session.
Can I see it on the iPhone?
Yes. The remote machine reaches the Mac’s Inbox, and the iPhone is a client of that Inbox. Pairing the phone is separate from SSH.
