Architecture overview¶
Angelo is four MCP servers over stdio plus an install CLI, sharing two file-backed knowledge stores in the project repo.
┌─────────────┐ records to ┌─────────────┐
│ coordinator │────────────────────▶│ memory │
│ (task DAGs) │ │ (.memory/) │
└──────┬──────┘ └─────────────┘
│ drives extraction
▼
┌─────────────┐ writes to ┌──────────────┐
│ stream │────────────────────▶│ zettelkasten │
│ (ingestion) │ │(.zettelkasten)│
└─────────────┘ └──────────────┘
Design principles¶
- Files are the source of truth.
.memory/and.zettelkasten/are markdown - YAML, committed to git. Caches under
.angelo/are disposable. - Lean MCP surface. Cursor caps total tools across servers, so each server keeps a deliberately small, dispatch-style tool set.
- Editable-install dev loop. The servers import from the workspace; see
.cursor/rules/dev-environment.mdc. - Two dashboards, one per store. Each knowledge store has its own read-mostly
web UI, launched from its own MCP server: the memory dashboard (console
script
angelo-dashboard, from the memory MCP'slaunch_dashboard) over.memory/, and the zettelkasten dashboard (console scriptangelo-zk-dashboard, from the zettelkasten MCP'slaunch_dashboard) over.zettelkasten/. They are separate processes and separate UIs — see Dashboard and Zettelkasten.
Decision record¶
Design choices recorded during development are promoted into browsable
architecture decision records, generated from the memory
graph. Mark an entry with publish: true in its frontmatter to publish it there.
Related¶
Semantically related entries from the memory graph.