Quick start
cd ~/code/my-project
nerd- Right-click a pane and choose Split right or Split down.
- Start an agent in a pane, for example
claude. The sidebar shows its state. When it finishes or asks you something, it moves up into needs you. - Click ≡ at the top of the sidebar for the main menu: the file tree, new spaces, settings, plugins and the rest.
- Right-click a pane and choose Isolation… to limit what its program can reach.
- Close the window whenever you like.
nerd --resumebrings it back.
Supported agents
For exact states, install nerd's hook from Settings… → Agent hooks, or run nerd --install-hook. It goes into every supported agent whose config folder exists. Before it writes into an agent for the first time, it shows the agent, its settings file and the command it resumes with, and asks. When an agent's resume command changes, a restored pane stops typing it until you confirm it again with nerd --install-hook. When nerd starts, it brings a hook an older nerd installed up to date; it never adds one to an agent you did not hook.
| Agent | Config | States and needs you | Subagents | Resumes after a restart with |
|---|---|---|---|---|
| Claude Code | ~/.claude/settings.json | Yes, with the tool it asks for | Rows with their tools and runs | claude --resume=<id> |
| Codex | ~/.codex/hooks.json | Yes, with the tool it asks for; no failed calls | Rows, without a task | codex resume <id> |
| Qwen Code | ~/.qwen/settings.json | Yes, with the tool it asks for | Rows with their tools | qwen --resume <id> |
| Copilot CLI | ~/.copilot/hooks/nerd.json | Yes, with the tool it asks for | Rows only; the general-purpose subagent does not report | copilot --resume <id> |
| OpenCode | ~/.config/opencode/plugins/nerd.js | Yes | Child sessions as rows | opencode --session <id> |
| pi | ~/.pi/agent/extensions/nerd.js | Yes, when an extension asks you something (a permission gate) | None: its helpers are separate pi -p runs | pi --session <id> |
| Gemini CLI | ~/.gemini/settings.json | Yes, with the tool it asks for | None: it reports no subagents | gemini --resume <id> |
| Cursor | ~/.cursor/hooks.json | Yes; it asks no permission nerd can see | Rows only: their tools count as the agent's | Does not resume: starts fresh |
A click on a subagent in the sidebar opens its tool calls beside the agent. A restored pane types only a resume command you confirmed.
Other agents are recognised by name, and their state is read from what they print. It can lag, be wrong, or miss "waiting for you".
Each agent is described by a manifest, plugins/<name>/plugin.json in the source. To add another agent without a new nerd, put its manifest in ~/Library/Application Support/nerd/plugins/<name>/plugin.json and choose Reload plugins and agents in the main menu. Such a manifest adds its hook to a JSON config under ~/.<name> or ~/.config/<name> and never replaces a file. A manifest that breaks a rule, or names a built-in agent, is skipped, and the log says why.