Skip to main content

Viewer (read-only)

daimon serve opens a local, read-only view of one project's memory in your browser. Every surface renders an existing engine's output — the viewer has no logic of its own to disagree with the CLI, and nothing in it writes.

daimon serve # binds 127.0.0.1:7717, opens a browser tab
daimon serve --port 7800 --no-browser

Flags: --data-dir (checkpoint dir, and the store for every route; default is the directory the CLI uses: DAIMON_CHECKPOINT_DIR from the environment or from ~/.daimon/env, then ~/.daimon/checkpoints), --project-dir (project to scope to, default the working directory, resolved to the project root the way the CLI resolves --project), --port (default 7717), --no-browser.

What you see​

  • Search is daimon recall, rendered. The results header says so — what you find in the browser is what an agent would be briefed with.
  • Every entry has a "why" page: the stored text, its origin, the stored quote, a transcript context window (fetched at read time, never stored), the evidence axes behind the item, a Life panel showing how the entry changed across checkpoints, and a History panel rendering its human-confirmed relations (see relations).
  • Sibling views alongside the entry page: the project ledger, a session page, a Refutations page reading the negative-knowledge ledger, a Check strip, a checkpoint Diff, and a print view that sets one checkpoint as a printed record.

What the viewer does not show​

The project list, the checkpoint and session lists, a checkpoint, the Diff, the activity feed, the ledger, the check strip, a session page and an item's Life panel show only what a reader of the project may see. An item you quarantined or forgot does not appear in them, and a withheld topic reads as no topic. A quarantined value in a note or an event reads as a withheld marker. A forgotten value reads as absent, and so does the key that names it: the activity feed shows a forget as the bare word forgotten. Counts are counts of the items you can see, so a number never tells you that something is hidden. If the trust ledger cannot be read, no item is shown (notes stay readable) and the page says which ledger failed.

The viewer reads no ledger file itself: every route that shows project content asks the same read view the CLI uses (search, why, refutations and relations ask their own engines).

The Diff, the ledger and an item's Life panel close an item with the same rule: a resolution closes it, whatever status closed it (the rule daimon diff uses), unless a later event reopened it. The Diff lists an item that left between two checkpoints as resolved in that case, and as dropped otherwise.

Read-only as a commitment​

The server answers GET requests only, and no route writes to your checkpoints, ledgers or trust records. Confirming a relation, resolving a loop, or forgetting an item all stay in the CLI, where the terminal enforces who is speaking.

One derived cache is the exception: /api/recall may rebuild the recall index (recall.db) when it no longer matches the store, and it logs an index error beside it. The index is rebuilt from your ledgers and holds nothing the store does not.

On a tenant-scoped home (DAIMON_TENANT_SCOPED) the viewer lists and opens only the current project, the same rule daimon projects and the MCP projects tool follow. If a request fails inside the viewer it answers HTTP 500 with a generic JSON error that names only the exception type.

Localhost-only posture​

The server binds 127.0.0.1 and additionally refuses any request whose Host header is not 127.0.0.1 or localhost. Nothing is exposed to your network, and nothing is transmitted anywhere — the viewer reads the same local files the CLI reads.