Architecture: Moneypenny vs Agent Runners
Fleet-facing summary distilled from chezmoi:docs/architecture/moneypenny-system-architecture.md, moneypenny-product-overview.md, and moneypenny-vs-radlo-grounding.md.
One-Sentence Answer
Moneypenny is the intake/classification/triage/dispatch pipeline. Pi, Codex, Claude Code, and Gemini are swappable agent runners called through agent-mesh.
MP does not fork pi. Pi does not become MP. They are separate concerns at different layers.
Layer Map
┌─────────────────────────────────────────────────────────┐
│ LISTENERS (always-on, event-driven) │
│ iMessage · Gmail · WhatsApp · Telegram · SMS · Voice │
└───────────────────────┬─────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────┐
│ EAVESDROPPER (passive observer) │
│ Signal rules: keyword · regex · sender · semantic │
│ Flags content for triage without generating responses │
└───────────────────────┬─────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────┐
│ CLASSIFICATION PIPELINE │
│ Classifier → Ticket Builder → Entity Extraction │
│ → HITL Feedback → Splitter / Refiner │
└───────────────────────┬─────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────┐
│ SWITCHBOARD (HITL triage surface) │
│ Tinder-swipe UX: approve · kill · re-label · split │
│ 5-second decisions → propagate to execution pipeline │
└───────────────────────┬─────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────┐
│ BATONPASS ENGINE (execution dispatch) │
│ conductor/tracks · symphony runner · eval gate │
│ Dispatches agents via agent-mesh transport │
└───────────────┬───────┬───────┬───────┬─────────────────┘
▼ ▼ ▼ ▼
┌──────┐┌──────┐┌──────┐┌──────┐
│ pi ││Codex ││Claude││Gemini│
│ ││ ││ Code ││ │
└──────┘└──────┘└──────┘└──────┘
Agent Runners (swappable via stable contract)Why This Split Matters
Subsumption-resistant architecture. Every frontier lab is converging on agentic capabilities. A stronger Claude Code is a stronger runner — it's a dependency upgrade, not a competitor.
The value Moneypenny owns sits above the runners (intake, classification, triage, dispatch) and below them (evidence substrate, ClickHouse archive, eval gate, self-improvement flywheel). No frontier lab will build passive cross-channel eavesdropping on personal comms or a Tinder-swipe HITL triage surface for personal AI task management.
Source Locations (chezmoi repo)
| Component | Path | Runtime |
|---|---|---|
| MP core pipeline | projects/moneypenny/ | Bun :9100 |
| MP SDK | projects/moneypenny-sdk/ | Library |
| Switchboard UI | projects/batonpass/switchboard/ | SvelteKit |
| MP CLI | dot_local/bin/executable_moneypenny | Bash |
| iMsg pipeline | dot_local/bin/executable_imsg-{eavesdropper,classify,ticket-builder,pipeline} | Bash + qwythos |
| Agent mesh transport | dot_pi/agent/lib/mesh/ | Bun sidecar |
| Mesh gateway | dot_pi/agent/extensions/mesh-gateway.ts | Pi extension |
| Architecture docs | docs/architecture/moneypenny-*.md (25+ files) | Markdown |
| Brand system | docs/design/moneypenny-brand-system.md | Markdown |
| Strategic roadmap | docs/strategy/2026-06-29-moneypenny-strategic-roadmap.md | Markdown |
Current State (2026-07-02)
- Pipeline core: TypeScript classes tested (79 expect() calls across eavesdropper/classifier/ticket-builder). Not running as daemon yet.
- Channel adapters: iMessage (378 LOC, 69 expects) and Gmail (417 LOC, 37 expects) built and tested.
- Switchboard UI: SvelteKit components on macwork branch (2504 LOC across 15 files). Not yet on main.
- Agent mesh: Cross-machine verified (steambox ↔ Mac) via Bun/Tailscale P2P. ClickHouse archive layer wired.
- CLI:
moneypenny start/stop/status/logs/tailoperational.
Gap to Live
- Channel registry runtime (glue between adapters, eavesdropper, and classifier)
- Semantic matching in eavesdropper (returns 0; keyword/regex/sender work)
- Gmail polling daemon (adapter built, no LaunchAgent)
- Switchboard UI merge from macwork branch to main
- LM Studio loaded for qwythos classifier gate
Authored by research-docs-GUY, 2026-07-02.