docs/03-architecture.md
Architecture
v0 is composed of three main layers:
- Daemon (control plane):
packages/daemonmanages runs, scheduling, and event logs. - Provider adapters (execution plane):
packages/providersspawn CLIs or call APIs. - UI (observability + control):
packages/uirenders the graph and inspector.
Core components
Daemon (packages/daemon/src)
- Runtime: top-level coordinator for runs, nodes, edges, and artifacts.
- RunStore: in-memory run state with persistence to disk.
- EventBus: emits events to WS subscribers and persists to JSONL.
- Scheduler: runs queued nodes, handles auto-reprompt for the orchestrator, and stall detection.
- CliRunner: builds prompts, runs provider turns, parses tool calls, and emits events.
- PromptBuilder: assembles system + role + mode + task prompt blocks.
- ProviderResolver: resolves provider config from env and applies CLI defaults.
- ArtifactStore / EventLog: write artifacts and append event logs under
dataDir.
Provider adapters (packages/providers/src)
- CliProviderAdapter: spawns CLI processes and normalizes stream-json/jsonl output.
- ApiProviderAdapter: calls provider APIs when
VUHLP_<PROVIDER>_TRANSPORT=api.
Local forks live in:
packages/providers/codex(Codex fork withcodex vuhlp)packages/providers/gemini-cli(Gemini fork with stream-json stdin)
UI (packages/ui)
- Graph canvas + inspector built with Cytoscape.
- Connects to daemon via REST (
/api/*) and WS (/ws).
Storage layout
<dataDir>/
runs/<runId>/
state.json
events.jsonl
artifacts/
Monorepo structure
vuhlp-code/
├── packages/
│ ├── daemon/
│ ├── providers/
│ ├── ui/
│ ├── contracts/
│ ├── shared/
│ └── mobile/
└── docs/
