§ overview
Stop window-switching to babysit your agents.
The overlay never asks for a window switch. Whatever the agent is doing — waiting, streaming, asking permission, finishing — the current state lives at the top of the screen, where your eyes already pass.
Quorum pairs naturally with Chidori and Tael — a single chord moves your cursor between sessions while telemetry stays queryable from the terminal.
§ states
Six states. Always in view.
01
Idle
No active turn. Quorum sleeps in the notch and stays out of your way.
02
Streaming
Live token activity from the agent — see progress without focusing the tab.
03
Approval
A pending permission request surfaces in the notch. Approve from the keyboard.
04
Compaction
The agent is compacting its context window. You know before the next turn lands.
05
Usage
Token and cost accounting for the running session, always one glance away.
06
Multi-session
A stacked queue of active sessions. One chord steps through them in order.
§ pipeline
Hooks → Quorum → You.
No polling. Claude Code and Codex emit lifecycle events through native hook commands; Quorum receives them on a local socket and renders the notch with Metal. Your move.
01 / Hookclaude / codex config
Both agents call a tiny shell hook on every lifecycle event — no SDK, no daemon to babysit.
claude code · ~/.claude/settings.json
{
"hooks": {
"Stop": [
{
"type": "command",
"command": "quorum hook --source claude"
}
]
}
}codex · ~/.codex/config.toml
[notify]
command = ["quorum", "hook", "--source", "codex"]
02 / Quorumlocal · Rust + Metal
The Rust agent drives a Metal-rendered island. Settings sync through a Swift helper. Nothing crosses the network.
rust agentserving
metal renderer60 fps
claude transcriptsreading local
codex transcriptsreading local
cloud bytes sent0
03 / You
Carbon-style hotkeys step through pending notifications and focus the iTerm tab running Claude Code or Codex behind each one.
§ shortcuts
One chord. Right tab.
Notifications stack in the notch. A single chord steps through them and reveals the iTerm tab running the agent behind each one — Claude Code or Codex, doesn't matter. No window picker, no Mission Control.
⇧⌘JFocus next session
Step forward through pending notifications. Quorum raises the iTerm tab running Claude Code or Codex behind the alert and lands your cursor inside it.
⇧⌘KFocus previous session
Walk back through the stack. Same jump-to-tab behavior, opposite direction — pair with ⇧⌘J to triage a queue without touching the mouse.
⇧⌘LOpen planning
Pop the planning tab inline in the island so you can read the current Claude Code or Codex plan without leaving your editor.
Every chord is rebindable in Settings → Keyboard Shortcuts.
§ principles
Local first. Native always.
Quorum is built for developer machines, not data centers. It treats the Mac as a first-class operating environment — quirks, notch, launchd, and all — and refuses the usual web-app shortcuts.
0pkts — sent off-device
Sessions, transcripts, and usage are read from the local Claude Code and Codex data directories and never leave your machine.
60fps — native Metal
The notch island is drawn by a Metal pipeline written in Rust. No web view, no Electron, no compositor lag.
≤24MB — resident
A single menu-bar agent. The Swift settings helper only spawns when you open preferences.
0ms — polling interval
No timers asking "is something happening." Hooks fire, the island redraws, the queue updates — push only.
§ install
Download and wire it in.
01
02
Add the Claude Code hook
{
"hooks": {
"Stop": [
{
"type": "command",
"command": "quorum hook --source claude"
}
]
}
}03
Or the Codex notify command
[notify]
command = ["quorum", "hook", "--source", "codex"]
An overlay for the agentic terminal. Built in Rust, drawn with Metal, scoped to a notch.