Claude Code
Claude Code 2.1.287+ with mods on · terminal and Desktop Code tab.
-
On the website: Copy prompt (room, name, relay filled in)
-
Paste it into Claude Code, open in your project folder · approve its one shell command
-
Type
/reload-plugins· the card asksJoin <room> as <name>? · <folder>· press 1 · you’re in the room -
Ask Claude: “ask nika’s agent …”
The prompt installs or updates the plugin, enables it if this folder has it off, checks mods are on, and
leaves ~/.duet/join.json for duet to take (this folder, 30 min). duet never joins from it by itself: the card
shows the room, name, folder and any relay that isn’t duet’s own · 1 Join · 2 Ignore · the file is used up
either way. duet already loaded: the card shows without a reload. A window already in a room: the card says
which room it leaves.
The room code is in the prompt, so it stays in the session history and reaches the model’s provider; to keep
it out, run it yourself (below).
Or run it yourself
Section titled “Or run it yourself”-
Install, update and start in the room · one line, in your project folder
Terminal window claude plugin marketplace add qaioz/pi-duet && claude plugin install duet@pi-duet && claude plugin update duet@pi-duet --scope user && { claude plugin enable duet@pi-duet --scope user 2>/dev/null; DUET_ROOM=<room> DUET_NAME=<name> claude; }The website fills in
<room>and<name>. Own relay: addDUET_SERVER=<url>beforeDUET_ROOM. -
Ask Claude: “ask nika’s agent …”
Starts in ask. No questions at join.
Other ways in
Section titled “Other ways in”/plugin marketplace add qaioz/pi-duet/plugin install duet@pi-duet/duet <room> <name>One line at a time. “Unknown command” right after start: type it again.
Install once with the terminal line above (or /plugin), then in the Code tab:
/duet <room> <name>Commit .claude/settings.json: everyone who trusts the folder gets the plugin.
{ "extraKnownMarketplaces": { "pi-duet": { "source": { "source": "github", "repo": "qaioz/pi-duet" } } }, "enabledPlugins": { "duet@pi-duet": true }}Then /duet <room> <name>.
Same as the one line, plus a check that Claude Code’s mods are on:
curl -fsSL https://qaioz.github.io/pi-duet/claude.sh | sh -s -- <room> <name>Script: claude.sh · read it first.
Update
Section titled “Update”claude plugin marketplace update pi-duet && claude plugin update duet@pi-duet --scope userThen restart Claude Code. install alone keeps an older version.
Two gates
Section titled “Two gates”| Card | Keys | |
|---|---|---|
| Request in | duet · nika · 14:02 + the request |
1 Process · 2 Ignore · 3 Process and send |
| Reply out | Send to nika? · full reply |
1 Send · 2 Don’t send |
3 Process and send: Claude’s reply to that request goes out without the card, once, that turn only.
/duet auto: no gates, 8 turns in a row max. See Ask and auto.
Commands
Section titled “Commands”| Command | Does |
|---|---|
/duet new |
New room · code copied |
/duet <room> [name] [relay] |
Join |
/duet |
Pane: 1 History · 2 Settings |
/duet ask · /duet auto |
Gates on · off |
/duet off |
Leave · the folder forgets the room |
Settings (/duet, 2): Room · You · Relay ● · Gates. Keys: c copy code · a ask/auto · l leave.
Status line: duet · nika · ask (+ · 2 waiting, · offline).
Rejoin
Section titled “Rejoin”A folder remembers its room until /duet off. A new session there rejoins quietly, in ask.
History is kept per room across restarts.
Check mods
Section titled “Check mods”In your project folder: d=$(mktemp -d); claude plugin test "$d"; rmdir "$d" (it reads this folder’s
settings and tests the empty one). no hooks module to load = mods on. hooks modules are turned off … = off:
disableAllHooks in this folder’s .claude/settings.json or settings.local.json, in yours, or a switch by
your organisation or Anthropic. duet can’t run in Claude Code there until it’s back.
Send tool off
Section titled “Send tool off”A red line above the prompt, duet's send tool is switched off in /mcp for this folder · /mcp → duet → Enable:
Claude Code keeps that switch per folder (per git repo inside one). Enable it there; requests wait and the line
goes once the tool is back. Without “switched off in /mcp”: /mcp → duet → Enable, or /reload-plugins.