Architecture at a glance
Veyyon ships as the veyyon CLI (Bun + TypeScript, Rust helpers). This chapter maps subsystems;
each has a handbook page and matching engineering notes under docs/.
The request path
┌──────────────────────────────────────────────────────────────┐
prompt ──► │ veyyon (packages/coding-agent) │
│ │ │
│ ▼ │
│ AgentSession turn loop │
│ │ model stream → tools (read, bash, edit, …) │
│ ▼ │
│ hashline / handlers ──► filesystem + sandbox │
└──────────────────────────────────────────────────────────────┘
Subsystems that matter
| Subsystem | Responsibility | Chapter |
|---|---|---|
Edit engine (@veyyon/hashline) | Default hashline edit path | Edit engine |
| Sessions | Session trees, compaction | Compaction & memory |
| MCP | MCP client integration | MCP |
| Config | Settings and profiles | Config |
| Memory | mnemopi / local memory | Memory |
| Goals | Goal cards and budgets | Goal state |
Design rules
- Prefer one obvious path. Hashline is the default edit surface; alternate
edit.modevalues exist for compatibility. - Fail loud. Invalid config, stale hashline tags, and sandbox violations surface actionable errors. No silent fallback to weaker behavior.
Spec — not shipped: the full ordered repair rule cascade (alias maps, strict unknown-key rejection, per-
(model,tool,shape)telemetry), an app-server or exec-server daemon, and a Tier-Bbackends.tomlcatalog as a separate subsystem. Provider and model configuration is documented in Providers against the shipped provider registry. Basic schema repair on tool calls is shipped today as a TypeScript module at the tool-dispatch seam (packages/coding-agent/src/repair/schema-repair.ts) — see Repair.