Skip to content

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

Chronicle story view with the Story Memory panel open, showing the story so far and a character card the AI updated

Chronicle library of stories with cover art

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.