A native macOS window for everyone running many Claude Code sessions at once. Brain shows every session across all your Claude accounts, what each one is doing, and above all which ones are waiting for you. Answer them right there, or jump to the session's terminal with one key.
brain-explainer-720p.mp4
A three-minute tour of version 0.1 (German interface), narrated. Brain runs on made-up demo sessions here.
Built with GPUI, the GPU-accelerated UI framework from Zed. The interface follows your macOS language: English or German.
- Triage inbox. Sessions that wait for you come first, longest wait on top: red when
Claude asks a question or needs a permission, amber when a turn finished, quiet blue when the
turn ended but subagents or background shells still run (from the Stop hook's
background_tasks; Claude's ownbrain report --waitingstill marks it red). - Answer from Brain. Allow or deny an open permission prompt (
Y/N), or reply to a session that waits for you (T). Brain only types when the session's state is unambiguous. - All accounts in one place.
~/.claude,~/.claude-secondand any other~/.claude-*config dir (as used withCLAUDE_CONFIG_DIR) are picked up automatically. - Latest messages. Your prompts, Claude's replies rendered as Markdown, tool calls as one-line summaries, read live from the session transcript.
- Session details. Model, context fill, Claude Code's own cost total and permission mode.
- Plan usage. Five-hour and weekly limits per account with their reset times, from the status line (Brain wraps your status line command and passes its output through unchanged).
- Changes. Branch, ahead/behind and the changed files of the session's working directory.
- Pull requests. The PR of each session's branch with its checks (
#12 ✓,#12 ✗,#12 …), via the GitHub CLI (gh, logged in); click it to open the PR. - Conflicts. A warning (and one notification) when two sessions edit the same files, read from their transcripts, and a softer hint when they change files in the same checkout.
- Today. What every session reported as done today, per project; copy it as Markdown.
- Timeline. Every hook event and report of a session.
- End now, resume later.
Xtwice ends a waiting session (/exit); closing the tab works too. Ended sessions stay in the list as long as Claude Code keeps their transcript (cleanupPeriodDays, 30 days by default), with their name, last message and how many days are left.Psaves one under "Saved to resume" at the top;⏎resumes it in a new tab. - Open the terminal. iTerm2, Terminal.app and tmux (in any terminal) jump to the exact pane; VS Code and Cursor bring the project window forward.
- Search by name, path, account or last message; group by project (git worktrees count as their main repository); pin and mute sessions.
- Rename a waiting session; Brain types
/rename <name>into its terminal. - Menu bar count and native notifications with Open and Snooze 15 min, sound only
when a session calls you; reminders while a session keeps waiting (
remind_after_minutesinconfig.json, 10 by default, 0 turns them off) and snoozing per session. - New sessions in a recent folder and any account (
⌘N), or from a template: a Markdown file with folder, account, model and a first prompt with placeholders (below). - Move a session to the other account (
Atwice), e.g. when one hits its five-hour limit: Brain copies the transcript, resumes it there withclaude --resume <id> --fork-sessionand closes the original. - Quick replies.
T, then1–9sends a canned reply; set your own with"quick_replies": ["…", "…"]in~/.claude-brain/config.json. - English or German, following your macOS language (override with
BRAIN_LANG=de|enor{"language": "de"}in~/.claude-brain/config.json).
Every session appends JSON lines to ~/.claude-brain/events/YYYY-MM-DD.jsonl, from two
sources:
- Hooks (automatic):
SessionStart,UserPromptSubmit,Notification,StopandSessionEndcallbrain hook. - Reports (written by Claude, instructed via
CLAUDE.md):brain report --doing|--waiting|--done "<one line>".
Without hooks Brain still shows a coarse state from Claude Code's own
<config>/sessions/<pid>.json files.
Requirements: macOS 13+ (Apple Silicon for the release builds).
brew tap martinemmert/big-brain-claude https://github.com/martinemmert/big-brain-claude
brew install --cask brain
brain installThe cask installs Brain.app and links the brain CLI that ships inside it. The app is
only ad-hoc signed, not notarized, so macOS blocks the first start: System Settings →
Privacy & Security → Open Anyway, or xattr -dr com.apple.quarantine /Applications/Brain.app.
brain install (once) adds the hooks, see From source.
Download Brain-<version>-macos-arm64.zip and brain-<version>-macos-arm64.tar.gz
(Apple Silicon) from Releases.
-
Unzip and move
Brain.appto/Applications. The app is only ad-hoc signed, not notarized, so macOS blocks the first start: right-click → Open (macOS 15: System Settings → Privacy & Security → Open Anyway), or runxattr -dr com.apple.quarantine /Applications/Brain.app. -
Put
brainon yourPATHand runbrain install. The hooks callbrainat the path it was installed from, so move it first:tar -xzf brain-*-macos-arm64.tar.gz sudo mv brain /usr/local/bin/ # or any other directory on your PATH brain install
If macOS refuses to run it,
xattr -d com.apple.quarantine /usr/local/bin/brain.
Requires a recent stable Rust toolchain.
git clone https://github.com/martinemmert/big-brain-claude.git
cd big-brain-claude
./scripts/install.shThis
- builds
dist/Brain.appanddist/brainwithscripts/bundle.sh, - installs the
brainCLI to~/.cargo/bin, - installs
~/Applications/Brain.app(open it via Spotlight), - runs
brain install, which adds Brain's hooks, aBash(brain report:*)permission and a short protocol section to thesettings.jsonandCLAUDE.mdof every~/.claude*account. Existing files are backed up as*.brain-backup-<timestamp>; running it again is safe.
Running sessions pick up the hooks on their own.
Download Brain.alfredworkflow from the
latest release and
double-click it. Type cc and part of a session's name, path or latest message:
⏎brings the session's terminal to the front (brain open <account>:<pid>),⌥⏎shows it in Brain (brain show <account>:<pid>).
The workflow finds brain in /opt/homebrew/bin, /usr/local/bin or ~/.cargo/bin.
Sessions are listed in Brain's order: needs you, your turn, working.
brain uninstallThis removes Brain's hooks, the Bash(brain report:*) rule and the protocol section from
the settings.json and CLAUDE.md of every ~/.claude* account, with backups as above.
Then delete Brain.app, the brain binary (~/.cargo/bin/brain or wherever you put it)
and ~/.claude-brain. With Homebrew: brew uninstall --zap --cask brain removes all three.
| Key | Action |
|---|---|
↑ ↓ / j k |
select |
⏎, double-click |
open the session's terminal (resume it if it ended) |
1–9 |
open the n-th session |
Y / N |
allow / deny an open permission prompt |
T |
reply to a session that waits for you (then 1–9 for a quick reply) |
R, click the name |
rename (only while the session waits for you) |
/, ⌘F |
search (esc clears) |
P / M |
pin (an ended session: save it to resume) / mute notifications |
S |
snooze: 15 min → 1 h → until tomorrow 9:00 → off |
G / D |
group by project / today's digest (⌘C copies it) |
X X |
end the session (/exit); it stays resumable |
A A |
move the session to the next account (an ended one resumes there) |
⌘N |
start a new session |
← → |
switch between messages, timeline and changes |
⇥ |
cycle the account filter |
E |
show ended sessions |
brain status prints the board in the terminal; brain sessions --json lists the open
sessions for scripts (account, pid, name, phase, headline, cwd).
Templates live in ~/.claude-brain/templates/*.md and are edited in your own editor
(⌘E in the ⌘N dialog opens the selected one, ⌘⇧N creates a new one):
---
name: Review a merge request
folder: ~/Work/app
account: main
model: haiku
---
Review the merge request for {branch} and list blocking issues first.Every header line is optional. Brain asks for each {placeholder} and, if the template has no
folder, for the folder, then starts claude --model … '<prompt>' in a new terminal tab.
cargo test -p brain-core # protocol, state, transcript and Markdown logic
cargo run -p brain-app # the app against your real sessions
BRAIN_DEMO=1 cargo run -p brain-app # made-up sessions, e.g. for screenshots
./scripts/make-icns.sh # re-render the icon
./scripts/bundle.sh # release build into dist/ (ad-hoc signed Brain.app, brain,
# Brain.alfredworkflow)Pushing a v* tag that matches the version in Cargo.toml builds a GitHub release with
the zipped app, the brain binary, the Alfred workflow and SHA-256 checksums, then points
Casks/brain.rb at it (a commit to main).
crates/brain-core: event protocol, store, accounts, session discovery, state reducer, transcript and Markdown readerscrates/brain-terminal: terminal adapters (iTerm2, Terminal.app, tmux, VS Code, Cursor)crates/brain-cli: thebrainbinary (hook,report,install,uninstall,status,sessions,open,show)crates/brain-app: the GPUI app
Design notes: docs/superpowers/specs/2026-10-02-claude-brain-design.md

0 comments
log in to comment.