August 11, 2026 · active
Chronicle
Local-first AI roleplay client with memory you can see and fix. Structured story state instead of a hidden context window. Testing how to run an AI product with decision records and architectural invariants from day one.
Why this exists
Long AI conversations forget things. Characters drift, relationships reset, plot points vanish. Every roleplay client hides this inside a context window the user cannot inspect.
Chronicle makes memory visible. Characters, relationships, and story state live in a structured store the user can read and correct. The model draws from it instead of from a rolling transcript.
What it looks like


How it is built
Local-first, cloud optional. The full app runs on your machine for free. Cross-device sync is the one paid thing.
A framework-agnostic core. The TypeScript core knows nothing about Electron or React. The desktop shell is one consumer. A mobile shell is planned as another.
Memory as RAG plus graph. Retrieval for the long tail, a graph for the relationships that retrieval gets wrong.
The experiment
This is the first side project where I set up the process before the product: a product definition, an engineering spec, architectural invariants that must hold from the first commit, and decision records for every reversal. Agent instructions live in the repo so every AI session starts with the same rules.
The finding so far: the documents that get read are the invariants and the decisions. The roadmap does not.
Status
Early. Desktop shell and core in place. Mobile and sync are next.
Stack
Electron, React, TypeScript, a vector store and a graph store behind one memory interface.