Guide

Coding agents on other machines

The laptop sleeps. The agent, if it sits on a machine that stays on, can keep going. You need it in the same Inbox, not in another forgotten SSH session.

Updated October 16, 2026 · 4 min read

Network diagram

How doki reaches a machine on another network

Your Mac
Local networkDirect SSH on the LAN
Direct UDP linkHole punching via STUN
Server relaydoki server · SSH stays end-to-end encrypted
Mac mini / VPS

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.

Never leave an agent waiting.

doki pulls Claude Code, Codex, Cursor and the other agents you already use into one Inbox, on your Mac, your iPhone and your servers.

See pricing →