Zephr

Use cases / Solo developer

Your AI rememberswhat you decided.

You work alone, across Claude Code and Cursor, on a project that has accumulated a year of decisions you can no longer hold in your head. One SQLite file, no account, and continuity that survives closing the window and switching the tool.

Local mode shipped · Cloud sync plannedlocal SQLiteEd25519 handoffno account
tuesday · the decisionon record

Use PKCE for the public client — decided in PR #312.

src/auth.md#L41a37f0b22026-05-12reviewed

zephr recall "why did I choose PKCE?"

→ the same sentence, with the source attached

next tuesday, in a different editor — the answer is still there

Illustrative example — not live data

The problem you actually have

It is Tuesday and you cannot reconstruct last Tuesday.

You made an auth decision a week ago in a Claude Code session you have since closed. You reopen the file in Cursor, ask why it looks the way it does, and get a fluent answer that may or may not be the reason you had. The answer sounds the same either way, and that is the actual problem — not that the tool forgot, but that you cannot tell when it did. So you do the thing everyone does: you re-derive the decision from the code in front of you, land somewhere close to the original, and carry a small unpayable debt about whether the constraint you were working around still exists. Multiply that by a year of decisions and the project stops being something you know and becomes something you keep re-reading.

The same question, asked a week later

On the left, what a week-old decision looks like without a ledger. On the right, the record Zephr keeps — the claim, the file it rests on, the date, and the review state, all still attached.

Without ZephrNo record

“Why did I choose this auth pattern last week?”

The answer is somewhere in a Claude session you closed, or a Cursor thread you did not save, or a note you meant to write. Whatever the next agent tells you about it will sound equally confident either way.

no source · no date · no review state
With ZephrVerified

Use PKCE for the public client — decided in PR #312.

The implicit flow was rejected because the client cannot hold a secret, so a code interception without PKCE is trivially replayable.

Source
src/auth.md#L41
Commit
a37f0b2
Review
Reviewed · two sources agree

Any connected tool can recall this, and ifsrc/auth.md changes, the anchor is reclassified before the claim is served again.

Illustrative example — not live data

One Tuesday, start to recall

The day, in five beats.

Scrub the timeline. The question, the decision, the capture, the closed window, and next Tuesday's recall in a different editor — each beat shows the real artifact Zephr leaves behind, because the story is the artifacts, not the adjectives.

Tuesday · 09:14

The question

You open the auth flow in Claude Code and ask how the public client should hold its token. The answer matters and you will not remember why in a week.

the question

> how should the public client hold its token?

illustrative day — the commands and record shape mirror the shipped local mode

How it works for you

Capture it once. Switch tools. Ask again.

Three steps, each leaving a real artefact behind: a cited record in your graph, a signed packet between tools, and a recall that shows its sources or says plainly that it has none. None of the three asks you to keep a second set of notes. The record is written where the work already happens, which is the only kind of bookkeeping that survives a bad week.

zephr remember "Use PKCE for the public client" --source src/auth.md#L41
zephr recall "why did I choose PKCE?"
  1. 01

    Capture a memory

    Hand a decision to zephr_remember with its source and anchor. It enters your local evidence graph as a dated, cited record — not a summary in a black box.

  2. 02

    Switch tools

    Open Cursor against the same admitted worktree. The continuity packet carries the decision across, and the receiving agent verifies the signature before trusting it.

  3. 03

    Recall with provenance — or abstain

    zephr_recall shows why a result came back: which files, which commit, which review state. When nothing clears the bar it abstains and says what is missing.

Two sessions, one file on diskClaude Code You reason through the auth flow and hand the conclusion to zephr_remember with the file it rests on. The record lands in ~/.zephr/ledger.sqlite. Cursor You reopen the same worktree in a different editor and ask why the code looks like this. The answer comes back with its citation attached. Continuity is a storage decision here, not a personality. The two sessions never speak to each other; they both speak to one SQLite file on your disk, and that file is the only thing that survives closing the window.Claude CodeCursorsession closed~/.zephr/ledger.sqlitecited · dated · signed
Tuesday · Claude Code
You reason through the auth flow and hand the conclusion to zephr_remember with the file it rests on.
Next Tuesday · Cursor
You reopen the same worktree in a different editor and ask why the code looks like this. The answer comes back with its citation attached.

Continuity is a storage decision here, not a personality. The two sessions never speak to each other; they both speak to one SQLite file on your disk, and that file is the only thing that survives closing the window.

Without it, the second session starts from nothing and reconstructs an answer that sounds exactly as confident as the one you actually had.

Illustrative example — not live data

What applies to you

Four of these you can use today. Two you cannot.

Clone the repo, build from source, connect a client, and start capturing cited memories. The shipped capabilities come first. The two that are not built are named here rather than discovered later, because finding out during setup that the install path does not exist is a worse experience than reading it on the page that sold you on it.

  • Local evidence graph

    Shipped

    SQLite-backed beliefs with provenance, confidence, and revision chains. One file on disk, no account, no egress.

    core evidence graph · ADR-012

  • Continuity Format v1 handoff

    Shipped

    An Ed25519-signed, single-use continuity packet carries a decision between sessions and tools. The signature covers the citations, not just the claim.

    Slipstream v1 · E2E-proven on main

  • TrustBench CI suite

    Shipped

    Deterministic, CI-blocking tests for retrieval, scope, and contradiction behavior. You can run the trust claims yourself rather than take them on faith.

    deterministic suite · ADR-013

  • Claude Code & Cursor adapters

    Shipped

    Consented MCP configuration for both clients. Zephr reads what it is handed; it does not scrape private editor state.

    client-adapters package

  • npx distribution

    Planned

    The one-line install path does not exist yet. Today the entry point is cloning the repo and building from source.

    golden path designed in the Connect cluster; not built

  • Cross-device sync

    Planned (managed cloud)

    Resuming on a second machine under the same account requires the managed cloud, which is still gathering evidence.

    gated on the ADR-010 tenancy gate

npx distribution and cross-device sync are documented in the roadmap and are not available today.

The daily loop

What changes about your day.

You stop opening a session by re-explaining the project. You ask the question you actually have, and what comes back either carries the file and the date it rests on or tells you it has nothing. Both answers are useful; only one of them was available before. The work of remembering moves out of your head and into a file you can read, and it stays on your machine.

Start with local mode.

Build from source, connect your first client, and capture one decision. Nothing on the roadmap has to land before this is useful to one person on one machine.