Local-first agent OS · for the markdown vault

One surface
for your whole
_brain

Underscore Brain wraps your markdown vault in an agent runtime and a keyboard-first desktop. Chat, an approval inbox, notes, daily orchestration — one window, summoned in under 100ms. The same vault still drives from Claude Code and Codex. Two front-ends, one system of record.

Summon it ⌥Space Read the principles
zero-servertelemetry-offoffline-capableyour keys, your machine
⌘1 Chat ⌘2 Inbox ⌘3 Notes ⌘4 Orchestrator
⌥Space to hide
Chief of Staff · claude-sonnet-4 · local index
OPwhere does the Domendor launch stand, and what should I ship today?
_Three initiatives are mid-flight. Domendor's Q3 launch is blocked on the pricing note — last touched 6 days ago [50-Initiatives/domendor.md#L42]. I drafted a plan; it's waiting in your inbox.
1 agent $0.04 today sonnet-4 index ✓ 48,210 ⌘K
The Phase-1 spine · five apps, one window

The tools you reach for most,
behind one keyboard.

Not everything at once — the highest-frequency surfaces first, each a sandboxed view over a typed bridge. Switch between them in under 50 milliseconds, state preserved.

Hero
Daily Orchestrator
Describe where every project stands. It researches read-only, proposes an approvable plan, then emits the copy-paste Claude Code prompts that spin up the work.
new session · ⌘4
Agent Inbox
The trust spine. Every irreversible or external action gates here — approve, edit, reject, respond. Nothing canonical changes without you.
triage · ⌘2
Chief of Staff
A persistent, model-agnostic chat that retrieves from your vault with click-to-note citations and drives tools through the inbox.
ask · ⌘1
Notes + Index
Browse and edit the vault under its own contract. A semantic index gives hybrid search with exact line-provenance citations.
open · ⌘3
Settings
Models and keys per persona, eight live themes, every shortcut remappable, and the auto-approve rule store.
configure · ⌘,
Command Palette
Do, go, ask, search — fuzzy, prefix-forced, context-aware. The mouse is convenience; this reaches everything.
anywhere · ⌘K
The hero workflow · the Daily Orchestrator

State dump in. Approvable plan out.

The morning ritual, automated to the edge of consent: it reads, it reasons, it proposes — and stops. Nothing runs until you approve. On approval it emits two artifacts you paste straight into Claude Code.

01
Intake
A free-text dump across every project and the outcomes you want.
02
Research
Read-only claude -p --permission-mode plan over vault + index.
03
Propose
One review interrupt: per-initiative files, overview, prompts.
04
Emit
On approval, copy-paste prompts. Nothing auto-runs by default.
artifact (A) · docs-level prompt
# paste at the brain root
Impersonate a world-class operator.
Create 50-Initiatives/domendor-q3/,
drop research, write README-domendor-q3.
Context: @50-Initiatives/domendor.md
Ask questions, then on approval — build.
artifact (B) · per-initiative template
# run inside the initiative repo
System: sequential rounds of foreground
Opus agents + a validate-and-heal round.
Attached: README-domendor-q3.md
Honor the vault contract. Write only to
_BrainOS/_review/ — the human promotes.
The trust spine · human-in-the-loop
Review
Daily Orchestrator run 7f3a · control-plane
Today's plan — 3 initiatives
Researched read-only over the vault. Creates 3 initiative folders and drafts each README. Files are staged in _review/; promotion copies them into the vault.
risk lowcost $0.00reversible yesscope control-plane
✓ Approve Edit plan Respond Reject

The vault is sacred.

Agents write only to a staging folder. You promote or reject — there is no canonical mutation, no data loss, without an explicit decision. The approval gate sits outside the sandbox; a sandbox escape can't disable it.

notify · question · review — one flag-driven renderer, three modes, zero branches.

The contract · P1–P10, binding

Ten principles. No black boxes.

P1
The vault is sacred
Agents stage; the human promotes. No silent canonical writes.
P2
Always in control
See, pause, edit, reject, or kill any run through the inbox.
P3
Keyboard-first
Every primary action has a shortcut. The mouse is optional.
P4
Inspectable, not magic
Plans, tool calls, memory, and cost are visible on demand.
P5
One surface
The highest-frequency tools embedded first. Low switching.
P6
Local-first, model-agnostic
Core tasks work offline. Models swap; data stays put.
P7
Calm by default
Agents are ambient. Notify, don't interrupt.
P8
Progressive disclosure
Simple by default; power revealed on demand.
P9
Fast is a feature
Show/hide <100ms, workspace switch <50ms, instant streaming.
P10
Composable & extensible
New power arrives as apps, plugins, and MCP tools.
Local-first · model-agnostic · sandboxed

Your keys. Your machine.
Your data stays.

Chat, retrieval, notes, and the inbox all work offline against a local model and a local index. Cloud models are the only network-dependent surface — and each one is gated, sandboxed, and deny-all by default.

Ollama · local Anthropic OpenAI Google any OpenAI-compatible
Sandbox by default
Every exec, tool, and plugin subprocess runs under Seatbelt with network deny-all + per-server allowlist.
Review-only writes
Path-confined and symlink-safe — agents can only write to the staging folder, enforced at the tool layer.
Zero telemetry, zero server
No analytics, no outbound connection without an explicit action. Proven under a deny-all audit.
Semantic index, on-device
EmbeddingGemma → sqlite-vec, hybrid BM25 + vector, reindexed under a second on save.
Architecture · three layers, one record

A shell, its apps, and a runtime.

Shell
BaseWindow + WebContentsView
One window, N isolated views. Quake hotkey, workspaces ⌘1–4, panes, the ⌘K palette, dock, status bar, themes — each app its own renderer process.
Quake summon⌘1–4 workspaces8 themes<100ms
Apps
Sandboxed views over a typed bridge
A declarative registry drives the dock and switcher. Each app reaches capabilities only through a minimal contextBridge preload — no raw IPC, no Node.
per-app partitioncapability tiersno mocks
Runtime
The pi agent spine + MCP bus
A small, ownable loop with branchable JSONL sessions, a multi-provider layer with per-message cost, the review-gate, and the CLI bridge supervising claude -p / codex exec.
pi runtimeMCP toolsreview-gateCLI bridge
Claude Code / CodexUnderscore Brain_Brain vault (git)

Claude writes. You curate. The agents stay ambient, the gate stays yours, and the vault stays exactly as true as you let it be.

Underscore Brain · local-first by conviction · keyboard-first by design
esc