Interactive simulation
How doki handles Factory Droid
Inbox0Waiting for the agent…
Which layout do you want for pricing?
Click an option or press 1, 2, or 3
- 1Finds the sessionReads sessions in ~/.factory/sessions.
- 2Tells youThe question rises to the Inbox with its options.
- 3You answerA key, your voice, or the iPhone. Two seconds to undo.
- 4Delivers the replydoki replies with droid exec · or in the terminal
- Droid aloneOne assignment, Droid’s TUI open, and nothing else running in parallel.
- Droid with dokiSeveral droids, or a droid on a server, and you want to approve actions without hunting for the session.
| Factory Droid | doki | |
|---|---|---|
| Runs the task in the repo | Yes | No |
| Sessions on disk | ~/.factory/sessions | Read on the Mac |
| Reply | Its own UI | droid exec or the terminal |
| Command permissions | The agent’s own | Guard: allow, ask, or block |
| Several at once | Several sessions | One list, with an optional worktree per agent |
| Another machine | You install it | SSH or doki-bridge, no open ports |
Sessions doki already knows how to read
The same way Claude leaves transcripts in ~/.claude and Codex in ~/.codex, Droid leaves its own in ~/.factory/sessions. doki does not wait for you to open the TUI to know a session exists. If the process is also in a terminal, it can type there. If not, it uses droid exec.
Kiro follows a similar path, with sessions in ~/.kiro/sessions. Droid and Kiro show up as first-class agents in the app, not as a generic “other”.
Approving what a droid wants to run
An agent that moves on its own eventually asks for actions that are not reversible: install, migrate, publish, push to a branch. Guard ships with rules for those cases and allows per-project exceptions. Each approval explains what the command does and how risky it is.
Those approvals also reach the iPhone, with buttons on the notification. The rules are covered in permissions. Droid still executes what you approve. doki does not run a parallel plan.
A droid on the server
Factory fits machines that stay on. From the Mac you add the host over SSH, or you generate doki-bridge’s one-line install and run it there. You do not open an inbound port. With tmux, typing is live.
Remote agents covers the local network, the direct link, and the optional relay. The server session looks like a local one: if it needs you, it is at the top of the Inbox.
More than one droid
Several assignments want several checkouts. A worktree per agent keeps them from sharing files, a port, and .env. When one finishes, diff review can send the findings back for a fix, or mark the branch ready for a PR.
If the split is “one builds and another reviews”, doki’s combos chain those two roles until the result is approved or stuck. Droid can take either role, next to Claude or Codex. More in several agents.
Frequently asked questions
Does doki include Factory Droid?
No. You install Droid yourself. doki discovers the sessions already in ~/.factory/sessions and replies to them.
What if Droid’s TUI is closed?
doki can deliver the reply with droid exec. If the terminal is still open, it types there.
Can I block a force push from a droid?
Yes. Guard has a rule for git push --force, along with others for deletion, sudo, secrets, migrations, and deploys. You decide whether it is allowed, asked, or blocked.
Does Kiro work the same way?
Kiro is also discovered from its on-disk sessions. The reply goes through the terminal. It shares the Inbox with Droid.
