Zephr

Continuity you can show.

One retraction. Every tool. A record of who pulled it.

Zephr fans memory out across Claude Code, Cursor and Codex — and pulls it back the moment a decision is wrong, with the reason recorded. Every decision, error, and preference is held as a separate kind with its sources and review state, so a retracted claim is the loudest kind of evidence on the page.

memoryfact · confirmed

True 2026-01-09 → still true · written 2026-01-09

Session tokens are validated in the edge middleware, never in route handlers.

apps/web/src/middleware.tsADR-009 §48d13ba0

What Memory keeps

FactNotePreferenceErrorDecisionPolicyAnti-patternTask
FactNotePreferenceErrorDecisionPolicyAnti-patternTask
Retract

Wrong note in every tool at once. Then it’s gone.

Pull it back and Claude Code, Cursor, and Codex lose it together. Not a silent delete - you, just now, and why.

Where it was

Claude Code- claude
Cursor- cursor
Codex- codex

What you get instead

A signed audit line, not a silent delete.

Every pull leaves an attributable line - who, when, why. The next session can read why a note is gone without trusting memory of the reason.

Illustrative example — not live data

Recall

It would rather say nothing than make Tuesday up.

Same question, two honest outcomes. A Fact with the file it rests on, or a typed gap - no confirmed note on refresh tokens - and what would fix it. Empty is not a guess.

where do we validate session tokens?
Hitgrounded

Session tokens are validated in the edge middleware, never in route handlers.

Factmiddleware.ts - L31-L58
ADR009 S4 - rev 4
Commit8d13ba0
Not enough to saya typed gap

No confirmed note on refresh tokens.

Empty is not a guess. Confirm a note, or keep asking - it will not invent one.

Illustrative example — not live data

Stale
In development

When the source moves, the note should not pretend it did not.

This path is in development. The picture is the intended check: the file shifted, the Fact no longer matches, and we say so - we do not ship it as if it already runs.

Source file

-apps/web/src/middleware.ts - L31before - 2025-12-18
-apps/web/src/middleware.ts - L48now - 2026-01-09

The memory stays readable

Session tokens are validated in the edge middleware, never in route handlers.

Stale - still true - no longer matches

Illustrative example — not live data

Pack

Show a colleague. Or leave with the file.

A signed link lasts a week and needs no account. A pack is a file you can take. Break one character and import refuses - the check is the product, not a badge.

zephr pack

The packet

intact - accepted

0100 zephr.pack/v1
0201 sha-256: 9f2a - e7c1 - 3b4d - a8e6
0302 memory.belief: r3 confirmed
0403 memory.source: middleware.ts L31
0504 memory.reason: human review 2026-01-09
0605 signed.by: [email protected]

Break one character

Watch what the import sees.

Signature, digest, and HMAC agree. The import may proceed.

Illustrative example — not live data

What it keeps

What Memory can keep.

The same names as the console. Planned rows stay planned - they do not animate as if they work.

Fact

Facts

Shipped
Note

Notes

Shipped
Pref

Preferences

Shipped
Err

Errors

Shipped
Dec

Decisions

Shipped
Pol

Policies

Shipped
No

Anti-patterns

Shipped
Tsk

Tasks

Shipped
T-F

As of a date

Shipped
Src

Where it came from

Shipped
NaN

Not enough to say

Shipped
Sup

Edits supersede

Shipped
All

Pull from every tool

Shipped
Lnk

Share by link

Shipped
Pck

Signed pack

Shipped
Stl

Stale when the file moves

In development
MP

Memory Packs

Planned
Tm

Team-shared memory

Planned

Illustrative example — not live data

The capability stack

Each rung depends on the one below it.

Memory is not a flat list of features. Facts are the foundation. Sources and revisions depend on facts. Staleness tracking depends on sources. Memory Packs are designed but not built — the top rungs are dashed outlines with nothing standing on them yet.

Memory capabilities as a vertical ladderFacts is shipped, Sources is shipped, Revisions is shipped, Review state is shipped, Staleness tracking is evolving, Memory Packs is planned. Shipped rungs are solid teal. Planned rungs are dashed outlines.The ladder shows what depends on what. Shipped rungs are solid. Planned rungs are dashed. The status is never inferred from the drawing — it is stated in words.FactsshippedSourcesshippedRevisionsshippedReview stateshippedStaleness trackingevolvingMemory Packsplanned
  1. 01FactsShipped

    Observed and checkable. The foundation everything else builds on.

  2. 02SourcesShipped

    Where a fact came from — file, commit, what replaced it.

  3. 03RevisionsShipped

    Edits supersede. History stays readable.

  4. 04Review stateShipped

    Every belief carries its review state. Nothing is confirmed that is not.

  5. 05Staleness trackingEvolving

    A changed source marks its citations stale.

  6. 06Memory PacksPlanned

    Designed. Not built.

The ladder shows what depends on what. Shipped rungs are solid. Planned rungs are dashed. The status is never inferred from the drawing — it is stated in words.

What we measure

Truth, not volume.

Most memory products measure how much they store. We measure whether what they store is true. These are the metrics that matter, with their honest status.

Recall precision

Always

When a source exists, it is shown. When it does not, the system abstains.

✓ shipped

Review state accuracy

Always

Every belief carries its review state. Nothing is marked confirmed that is not.

✓ shipped

Handoff integrity

Ed25519

Every cross-tool handoff is signed. Corrupt a byte and it refuses.

✓ shipped

Memory volume

Not measured

We do not count how many memories you have. We measure whether they are true.

— not measured

Recall latency

Not measured

Speed is not the product. Truth is. When the evidence graph is slow, we fix that.

— not measured

Why we do not measure volume: A memory product that stores a million wrong answers is worse than one that stores a hundred right ones. The number you want is not "how many" — it is "how true." That is what we measure.

Illustrative example — not live data

Start remembering, on the record.

Every decision you make has a source. Zephr keeps it — the claim, the file it rests on, the date, and the review state, all still attached.