ROLE — pm + builder + operator IN FLIGHT 02-2026 → now
A-2 ACTIVE

Code Brain

agents · infrastructure · personal-automation

◐ OVERNIGHT FLEET · LAUNCHD-NATIVE

A pencil-test illustration on cream paper: a figure seen from behind hunched over a glowing laptop at a night desk, an amber desk lamp lighting scattered notes, a window opening onto a starry city skyline, a plant-topped bookshelf behind. Four small mascot helpers sit in the corners, linked by a thin amber thread.

─ OPENER ─

At 02:30 every morning while I am asleep, an agent on my Mac Mini reads everything I wrote yesterday and turns one item of it into a concept, and at 03:30 two more agents read what the first one wrote and argue about whether it’s any good, and by 08:30 a fourth agent has drafted my morning note, and the day starts with a fleet that has been working since I went to bed.

This is Code Brain: an Obsidian vault that built itself a fleet, SDK agents that grow and shrink with the work, running on launchd, a knowledge graph that lints itself on Sundays, a critic that splits to Codex CLI and Anti-Gravity CLI in parallel so the variance is real, and a daily-driver agent that writes the dateline at the top of this portfolio.

The orchestration runs across three machines: Mac Mini for the long fleet, MacBook Pro for heavy local inference, an Alienware RTX 5080 for the CUDA jobs. Comprehension is the artifact. The fleet is how I keep comprehending while I do other work.

─ INVESTIGATION BOARD ─

Fleet memory Phase 1: plan landed

Shared filesystem-memory layer at vault/90_system/fleet-memory/. Per-agent namespacing, explicit promote_to_shared(). Pilot agents: vault_synthesizer + daily_driver. Default-disabled; opt in per agent.

Knowledge Loop Phase 6: producer + consumer ship

Phase 6/6 shipped. Producer: SessionEnd flush → 02:30 synthesize. Consumer: SessionStart re-inject as additionalContext. Critic splits to Codex CLI + Anti-Gravity CLI in parallel so the variance is real. The vault now serves itself back into the next morning's context window.

Phase D: typed reasoning edges shipped

Typed-edge SQLite layer shipped. Six relation types: supports, contradicts, evolved_into, supersedes, depends_on, related_to. Weekly knowledge-lint contradiction detection collapses from an LLM scan to a single SQL query.

Process Inbox: pause cloud-Sonnet path; await local rewrite

Pause cloud-Sonnet Path A. Local gemma4:e4b Path B rewrite becomes the re-enable precondition; manual triage via the process-inbox skill in interactive sessions is the working alternative.

Cost-efficiency: cloud Sonnet ran $1.16/file at ~3 files per run. Local path is $0/file. An agent that validates working at $1.16/file is not the agent worth running on a daily schedule. Pause is a cost call against a capability that worked.

launchd PATH bug: fix in plist EnvironmentVariables

Every launchd plist now ships EnvironmentVariables with PATH set explicitly to include /Users/seanwinslow/.local/bin and /opt/homebrew/bin.

Without explicit PATH, the claude CLI isn't discoverable from launchd context; agents fail with CLIConnectionError on the next macOS update. The plist is the deployment surface; the surface has to be self-contained or it silently breaks.

Code Brain: first commit

Repo initialized Feb 6. The Obsidian vault predates it by years; the agent fleet starts at this commit. Everything else on this board grew from here.

─ METHODS ─

Tools, agents, and models used on this project
TASK AGENT / TOOL MODEL / COST
agent runtime Claude Agent SDK per-token billing
scheduling launchd (macOS) local / $0
local inference (heavy) qwen3.6_35b-a3b-32k on MBP via Ollama local / $0
multi-CLI critic Codex CLI + Anti-Gravity CLI in parallel $0 incremental (subscriptions absorb)
local-cloud routing HybridRouter (qwen3.6_35b-a3b-32k → Sonnet 4.6 fallback) per-token (capped)
animation pipeline (downstream consumer) Animation Pipeline see case study

─ 4Q ─

A-2.Q1 What is this?

Code Brain is a personal command center built on Claude Code, sized to fit a PM with a writing habit and an animation pipeline running one repo over. An Obsidian vault with a fleet of SDK agents on macOS launchd. Three machines orchestrating local and cloud models. A knowledge loop that flushes session content overnight, turns it into concepts, critiques them across Codex CLI and Anti-Gravity CLI in parallel, and lands the expansions in the vault by morning. The roster turns over weekly because the working method does. The Daily Driver agent writes this portfolio's daily-dated layer at 08:30 before the workday starts.

A-2.Q2 Why this approach?

Three options considered: ChatGPT Plus with custom GPTs, Cursor with project rules, or a Claude-Code-native fleet. Chose Claude-Code-native because skills compose better than prompts and because the Agent SDK lets a single launchd job orchestrate an entire morning across local and cloud models.

A-2.Q3 What would break?

Three named failure modes. First, launchd silently failing on the first run after a macOS update. Second, the morning agent saturating its tool-call quota mid-brief. Third, prompt-cache misses cascading across the day's runs and tripling the token bill.

A-2.Q4 What did I learn?

The fleet's job isn't to write code. The fleet's job is to keep me thinking about the next problem instead of the last one.