docs/14-decisions.md

Design decisions (v0)

Why local-first?

  • Mirrors how Codex/Claude/Gemini CLIs are commonly used
  • Keeps auth simple (reuse existing login flows)
  • Avoids storing credentials in vuhlp code

Why canonical events?

Provider harnesses vary. A stable event model enables:

  • consistent UI
  • deterministic storage
  • provider-independent replay/export

Why Cytoscape?

  • Mature graph UI tooling
  • Fast enough for current graph sizes
  • Easy to integrate with React

Why JSONL event logs?

  • Append-only
  • Human debuggable
  • Easy to stream
  • Fits event-sourced state materialization

Why not store chain-of-thought?

  • Providers differ in what they expose
  • v0 focuses on observable actions, tool calls, and outputs
  • Optional thinking streams are supported when providers emit them