Your work,
run by your agents.

Talk to one CEO agent. Its VPs run your projects, each with its own Claude Code sessions.

Download for Mac
macOS 12 or later · Apple siliconIntel Mac
Or one line on macOS or Linux curl -fsSL https://openwalnut.dev/install.sh | sh
Used by engineers at AmazonDoorDash
Your company

Talk to the CEO.
Its VPs run the rest.

The CEO sees every project. Each VP plans its projects and hands the work to workers, each one its own session. Click a task.

You
CEOSees every project
5 working1 needs you
PPersonal VP2 tasks
SSide projects VP2 tasks
WWork VP2 tasks
Plan the coast weekendPersonal VPNeeds you
Your MacClaude Code

Two cabins are free that weekend. Which one should I book?

WorkingNeeds you
Under the hood

Every machine. Every agent.
One calm list.

Drive Claude Code on your laptop and any SSH host. Walnut sets up its own daemon there, and sessions keep running when the connection drops.

WALNUT
Your Maclocal · 3 sessions
Dev boxSSH · 4 sessions
Cloud VMSSH · 2 sessions
Build boxSSH · 1 session
connection dropped · session still running
Claude Code
Codex
Gemini
OpenCode
Goose
Focus
Satellite
Parked
Fix the login bug
Review the onboarding redesign
Blog post draft
Prepare the team demo
Renew the car registration
Ship the releaseWaiting · CI run

checked 12:05 · running

checked 12:10 · running

checked 12:15 · passed

Back on your list: CI passed. The session is merging.
Fix the login bug · Claude Code

Reading src/auth/session.ts

The cookie expires before the redirect.

Resumed after the restart. Picking up the fix.

Edited src/auth/session.ts · running the tests

See it work

One window for all of it.

Tasks, several sessions side by side, their files and their changes, and the Org page, in one app. It plays on its own; click to look around.

WalnutHome
Tasks
Focus
Satellite
Blog post draft Prepare the team demo
Parked
Renew the car registration
Fix the login bugDev boxClaude Code
Terminal

Why does login fail after the redirect?

The session cookie expires before the redirect lands. Here is the flow:

The fix goes in , line 42.

src/auth/session.ts
40export function startSession(user) {
41  const cookie = createCookie(user.id);
42  cookie.maxAge = 60;
43  return redirect('/home', cookie);
44}
src/auth/session.ts +1 −1
41  const cookie = createCookie(user.id);
42− cookie.maxAge = 60;42+ cookie.maxAge = 60 * 60 * 24;43  return redirect('/home', cookie);
Review the onboarding redesignYour MacClaude Code
ChatChangedFilesTerminal

Read the five new screens. Two notes so far:

The skip button is easy to miss on step 2.

Step 4 asks for the same email twice.

Org
CEOSorted two new asks; the Work VP took the demo.
VPs · 3
P
Personal VPNeeds you: which cabin to book
S
Side projects VPFixing the login bug, 1 change to review
W
Work VPTwo tasks working
CEO

Book the coast weekend and keep the demo on track.

The Personal VP is on the weekend; it needs one answer from you. The Work VP has the demo; Codex is building the script.

Rich answers

Sessions that draw.

A session can answer with a diagram, a table or a laid-out page, drawn as the answer streams.

You
How does a web request reach our server?
Claude Code
It goes through four stops, and the response comes back the same way
BrowserGET /orders Load balancer:443 App serverorders.list() DatabaseSELECT 200 OK · JSON, back along the same chain request BrowserGET /orders Load balancer:443 App serverorders.list() DatabaseSELECT 200 OK · JSON, back the same way
Review

See what each session changed.

A per-session diff of every file it touched. Comment on a line, send the review back to the session.

server.jsREADME.md
+6 −2
14 function readBody(req, callback) {
15− let data = '';
15+ const parts = [];
16− req.on('data', (chunk) => { data += chunk; });
16+ req.on('data', (chunk) => parts.push(chunk));
17+ req.on('end', () => {
18+ const text = Buffer.concat(parts).toString();
You · line 18

Handle an empty body here, so a bare POST does not throw.

19+ callback(null, JSON.parse(text));
20+ });
21 }
1 comment pendingDiscardSubmit review (1)
And

Open source. On your machine.

MIT licensed and self-hosted. It needs only Claude Code, signed in once.

Notes the AI can search

Markdown notes with keyword plus vector search, on your machine.

Claude CodeCodexGeminiOpenCodeGoose

Codex, Gemini, OpenCode and Goose

In the same columns as Claude Code. Install their CLIs first.

To Do⇄⇄Jira

Microsoft To Do and Jira

Two-way sync ships built in, as plugins.

~/.open-walnut/
├─ *.json
├─ *.md
└─ *.sqlite

Your data, on your disk

Plain JSON, Markdown and SQLite. No telemetry.

TasksNotesYour appSettings

Build your own app inside Walnut

A plugin can add a full-page app to the sidebar, tools the AI can call, and task sync.

Run your work
like a small company.

It needs only Claude Code, signed in once. The Mac app keeps itself up to date.

Download for Mac
macOS 12 or later · Apple siliconIntel Mac
Or one line on macOS or Linux curl -fsSL https://openwalnut.dev/install.sh | sh
Star on GitHub