Agents

A harness for all your coding agents.
You stay in charge.

Claude Code, Codex, Cursor, Gemini and the rest work side by side in one list. Each gets the same workspace and the same rules: a real terminal, a browser, devices and Git, with every risky step waiting for your yes.

Claude CodeApprovals and questions
CodexApprovals and steering
CursorProgress
Gemini CLIProgress
A
AntigravityProgress
Co
Copilot CLIApprovals
Oc
OpenCodeApprovals
Am
AmpProgress
G
GrokSessions in Nook
+
Any ACP agentOr your own, via a hook
Live

Every session in one list. Every step in plain sight.

See who's working, who's stuck and who needs you. Open a session to follow its work, read what it changed, and answer right where it asks.

AgentswebsiteDark mode toggle feature/dark-mode+82−12
Working (3)
websiteWorking
Dark mode toggle
feature/dark-mode+82−12
nookWorking
Fix the flaky relay reconnect
fix/relay+31−8
websiteWorking
Tests for the toggle
Asked by Claude Code
Waiting on you
apiQuestion
Migrate invoices
db/invoices
Recent
nookMerged
Group avatars on reactions
#1227
docsDone
Write the release notes
Add a dark mode toggle to Settings and check it in the browser. Ask Codex for the tests, and open a PR when it works.
Working…
Read src/settings/Appearance.tsx, theme.ts✓
Ran npm run dev · in Nook's terminal, :5173✓
Opened localhost:5173/settings · no console errors✓
Asked Codex to write the tests · 6 passed✓
The toggle is in Settings › Appearance and follows the system by default. I checked both themes in the browser and Codex added six tests. Ready to push feature/dark-mode and open a pull request.
src/settings/Appearance.tsx+64 −3
src/theme.ts+18 −9
Dark mode toggle · websiteNeeds your yes
Push and open a pull request
git push origin feature/dark-mode && gh pr create
✓ AllowAlwaysDeny
Real hands

Not just words. A workspace to actually do the work.

Every agent Nook runs, and every agent you link, gets Nook's workspace through a small local MCP server. Whatever it starts or opens shows up beside its session.

A visible terminalDev servers and watchers run in a Nook terminal you can see and take over, badged with the agent that started it.
Its own browserOpen a page, read its text and console errors, take a screenshot, click and type. Each session has its own, so agents never swap pages.
Simulators and devicesThe iOS Simulator and Android devices, with screenshots the agent can check its work against.
Pull requestsPush and open a pull request after your Allow, then watch it: failed checks, conflicts and reviews wake the agent.
Agents that delegateHand a subtask to another agent: two levels deep at most, four at a time, never with more rights. Stop the parent and its children stop too.
Scheduled tasksEvery morning, every hour, on chosen days: a task runs in a new session, proposed by the agent and started only after you approve it.
Secrets, on requestAn agent asks for a key by name and says why. On your Allow it gets the value from Nook's keychain, never shown in the timeline.
The rest of NookAgents can use Nook's own tools too: send a chat message, add an event, play music. Each action waits on the same card.
Another machineRun a session on a server over SSH, with Nook's browser and its own timeline, and nothing that acts on your Mac.
terminal_runbrowser_openbrowser_readbrowser_screenshotdevice_screenshotpull_request_createwatch_pull_requestdelegate_taskschedule_taskrequest_secretnook_use
Review and ship

From diff to merge, without leaving Nook.

Changed files, branches and worktrees sit beside every session. Commit, push and open a pull request with one click each, always your click.

The whole pull requestDescription, checks, a timeline of reviews, comments and commits, and every file's diff. Tick files as viewed.
A review guideLet Claude Code or Codex lay out the changes in reading order, what to look at closely, and the questions only you can answer.
Merge your wayMerge, squash or rebase after you confirm. Commit messages in the style you pick.
GitHubGitLabGiteaForgejoBitbucket
Pull requests#1228Merge
Rebuild the pull request side panel
main ← nook/pr-panel· 3 files+412−87
Checks9 of 9 passed
ReviewsApproved
ConflictsNone
Claude Code wrote a review guide2 min
3 commits pushed8 min
Ada approved these changes20 min
✓ PanelSidebar.swift+210 −40
✓ PullRequestView.swift+188 −47
PullRequestTests.swift+14
Nook is the gatekeeper

An agent's own flags never get around you.

Whatever an agent asks of Nook goes through one policy. The card shows the whole command or pull request, and every decision lands in a local audit log.

Plan mode is read-onlyA session in Plan can look around but not change a thing, and cannot start an agent that can.
Only your userAgents talk to Nook over a local socket only your account can open. If Nook is not running, the agent just carries on.
RunsReading files, a safe dev commandnpm run dev
Asks youAnything not provably harmlessgit push
RefusedDestructive commands, alwaysrm -rf ~/
Fix the flaky relay reconnectNeeds your yes
Run a command
rm -rf node_modules && npm ci && npm test
✓ AllowAlwaysDeny
09:41 allowed claude · npm test
09:39 allowed codex · pull request #412
09:31 refused codex · rm -rf ~/
Accounts and limits

Know where you stand before you hit a wall.

Keep a personal and a work account for each agent, each in its own folder. Nook shows the live 5-hour and weekly limits of Claude and Codex, plus tokens and costs, and sums it up every Monday.

Approve from your phoneNook Companion on iPhone and Android shows what needs you: approve, answer, send a prompt or stop an agent, end-to-end encrypted.
Picks up where it left offStop, resume and retry sessions, also after Nook restarts.
Usage and costs
Resets in 2 h 14 min
Claude · this 5-hour window62%
Claude · this week41%
Codex · this week88%
Claude · PersonalMax plan
Connected
Claude · WorkTeam plan
Connected
CodexPlus plan
Nearly at its limit
Connect

Already running agents in your terminal? Keep them there.

In Settings › Agents, Nook connects them with one click: it shows the exact change first, keeps a backup, and writes only after you confirm. To give them Nook's workspace too, click Connect in Settings › Automation, or run:

$ claude mcp add --scope user nook -- ~/.nook/nook-mcp --agent claude-code $ codex mcp add nook -- ~/.nook/nook-mcp --agent codex
ConnectOne click per agent in Settings › Agents, or the commands above for the workspace tools.
Restart the agentIts sessions appear in Nook's list right away, with what they do and what they ask.
Answer where you areIn Nook's window, on your phone, or in the notch if you turned it on. The terminal still works too.
Questions

Good to know.

Do my agents still work without Nook?

Yes. Agents talk to Nook over a local socket; when Nook is not running, the hook and the MCP server simply step aside and the agent carries on and asks you in its own way.

Which agents can I approve from Nook?

Claude Code, Codex, Copilot CLI, Muse Code, OpenCode and Hermes send their approvals to Nook. Gemini CLI, Antigravity, Cursor and Amp give a hook no way to allow a call, so they ask in their own window. In sessions Nook runs itself, every agent asks in Nook.

Can two agents work on the same repository?

Yes. Start each session in its own Git worktree on its own branch, so they never overwrite each other's work, and each gets its own browser.

Does Nook send my code anywhere?

Nook itself doesn't. Your agents talk to their own providers as they always do; Nook watches them locally and keeps its audit log on your Mac.

Run a team of agents.
Stay the one who decides.

Free and open source. Bring the agents you already use.