The cycle · the memory layer
A brain that sleeps on it.
Raw sessions become a typed graph through a cycle borrowed from how memory actually consolidates: capture while awake, digest and prune while asleep, recall on demand. The model proposes; a deterministic validator disposes. The confident lands on its own. The uncertain, and anything destructive, waits for your sign-off.
Capture
Every session is recorded per project, but only where you opt in. Secrets are redacted before they touch disk, and again before any model reads them. Configurable patterns catch tokens, keys, cards, and emails first, so those secrets are stripped from the raw log before it lands on disk.
Nothing is uploaded. The capture hook writes into your second brain on disk and queues prompts for the next digest pass.
# hook fires on each turn capture ▸ redact ▸ queue redacted: 2 tokens · 1 email backlog: 37 prompts pending digest
Digest
An extractor proposes entries, a separate reviewer checks them against the transcript, validation runs, then it commits. Two passes catch hallucinations a single pass would let through. Each entry cites the exact prompt it came from, so nothing enters the graph unsourced.
This is where a messy transcript becomes a clean, typed slice: named entities, dated events, standing facts.
$ hyp digest + entity agent-harness [tooling] + event pr-45-merged → raw/2026-07-16 #12 + fact telnyx-retry → raw/2026-07-16 #12 ✓ reviewer pass · validated · committed
Consolidate
A slow-wave garbage collector runs on a schedule. It finds duplicate entities, contradicting facts, and stale entries, then proposes merges and supersedes to a pending queue you approve with hyp approve. The graph stays coherent without you curating it by hand.
Belief evolution is preserved as supersede chains here, not overwrites. You always keep the old, marked, with the reason it changed.
$ hyp consolidate candidates: 3 dup · 1 contradiction ~ supersede old-telnyx-fix → new reason: rate-limit changed the retry → pending.md · hyp approve
Dream
The REM counterpart to consolidation: abstracting specifics into higher-order patterns, associating entries that never met in one session. It is scaffolded in the roadmap, not yet firing. The brain metaphor is the design, not a slogan.
When it ships, it will propose generalizations to the same pending queue every other stage feeds. Human-gated, like the rest.
# roadmap · scaffolded · not yet firing abstract ▸ associate ▸ generalize status: stage present · disabled
Recall
You get it back through the hyp CLI and an Agent Skill: hybrid search, literal grep, entity lookup with backlinks, relation traversal, and a timeline. A new session inherits what past ones learned, cited, instead of re-solving a settled question.
$ hyp search "telnyx decision" wiki/facts/telnyx-webhook-retry.md cite: session-0716 · prompt 12 wiki/events/switched-to-signed-webhooks.md · prompt 3 wiki/entities/telnyx.md (+4 backlinks)
Every stage but Dream is live today. Capture and Recall run while you work; Digest and Consolidate run asleep, on a schedule. The changes most able to poison this memory, the uncertain and the destructive, wait for your approval: they queue in pending.md until you rule on them.
Why it can answer
It connects the dots, not just stores notes.
A flat MEMORY.md is a pile of loose notes. This memory links them, so it can answer the questions that actually come up mid-build: who else touched this, what happened after that PR, is this still how we do it. And when you change your mind, it never loses track of why.
For the curious: the three node types, and how a correction keeps its reason
A durable thing you keep referring to: a person, a project, a tool, a place. Entities accrue backlinks as other entries mention them.
Something that happened, dated, with a raw-transcript citation. A merged PR, a decision, an incident. Events are the timeline of the work.
A standing belief the graph treats as current. When corrected, the old one is marked superseded, with a reason, and the new one cites it. Belief evolution, never overwrite.
↳ retry after 5s · reason: rate-limit
Keeping the reason is the load-bearing idea. A raw agent that changes its mind leaves you two contradictory notes and no way to tell which is current. Here the correction keeps its ancestry: superseded_by points forward, the reason travels with it, and hyp returns the current fact and the history that produced it.
Every entry traces back to sources: [{ file, prompt_index }], a specific prompt in a raw transcript. There is no unsourced claim in your second brain.
Anatomy of one memory
Open any fact. It shows its work.
This is not a database row you take on faith. It is a markdown file you can open. And every claim in it points back to the exact prompt, in the exact session, that produced it.
--- type: fact id: telnyx-webhook-retry status: active confidence: high sources: - { file: raw/2026-07-16.md, prompt_index: 12 } # the receipt supersedes: ["[[telnyx-retry-30s]]"] # the old belief, kept about: ["[[telnyx]]"] --- Webhook retries back off to 5s. The 30s window tripped Telnyx's rate limit after the 429 incident.
The superseded entry is still on disk, one hop away, with the reason the belief changed. Ask git log who wrote what, when: memory with a paper trail, because it is the paper trail.
The payoff
Ask it, in plain words, in the terminal.
This is the payoff: ask what past sessions decided (you, or your agent mid-build) and get it back with a citation. When the answer isn't there, it says not found instead of inventing a confident one.
$ hyp search "why signed webhooks" # hybrid: BM25 + vector + rerank wiki/events/switched-to-signed-webhooks.md cite: session-0709 · prompt 3 wiki/facts/telnyx-webhook-retry.md (supersedes: retry-30s) $ hyp entity telnyx wiki/entities/telnyx.md [tooling] · 6 backlinks · 3 facts · 2 events $ hyp related telnyx --depth 2 telnyx ──about──▶ webhook-retry ──caused_by──▶ rate-limit-429 $ hyp timeline --since 2026-07-01 07-09 switched to signed webhooks 07-16 pr-45-merged $ hyp search "kafka migration" no matches · not in memory # an empty recall says so
For the curious: the recall verbs, and how search ranks
Recall is a small set of hyp verbs, callable by you or by an Agent Skill mid-session. Search is hybrid (BM25 plus vector plus rerank) so a plain-language question still lands the right entry.
Hybrid retrieval. The default way in.
A literal sweep, when you know the string.
One node, with everything that points at it.
Walk the typed relations outward, as a real traversal.
The events, in order, in the window you name.
Corrected facts return with their supersede history intact, so recall shows the current answer and what it replaced.
Against the field
What everyone else calls memory.
Even the labs building these agents treat every session as an amnesiac shift-worker, reaching for a progress file and git because context compaction isn't enough. A second brain is that instinct done right: where most memory products ask you to trust a database, this one hands you the files.
Memory you can read.
Elsewhere, memory lives in a vector store you query blind. Yours is markdown in a folder: read it, grep it, git-diff it, take it with you. Delete the search index and rebuild it from git; the files are the truth.
ls ~/.hyperception/vault/wikiEvery fact keeps its receipt.
Recall without provenance is rumor. Here an entry with no source trace is not allowed to exist: every fact cites the exact prompt, in the exact session, it came from. You can check the receipt.
sources: [{ file, prompt_index }]Corrections don't overwrite.
Most systems update a fact by destroying the old one. Here the old belief stays on disk, marked superseded, with the reason it changed and the receipts for both. The graph knows why you changed your mind.
status: superseded · one git-revert-clean commitNothing lands unvetted.
An extractor proposes, a second pass reviews, a deterministic validator disposes. The confident majority applies itself; the uncertain rest waits in a queue for your sign-off. The changes most able to poison this memory, the uncertain and the destructive, wait for your approval.
hyp pending · hyp approveNo server. No account. No vendor.
Secrets are redacted before anything touches disk. Your second brain is a git repo that syncs only to a private remote you point it at, or to nowhere at all.
hyp sync remote <url>A typed knowledge graph that is also just markdown in a folder. The memory tools we studied make you pick one or the other.
Where your memory lives
Your second brain is a git repo on your disk.
Local-first, not hosted. Your memory is a directory you can read, diff, and back up like any other repo.
Everything lives in ~/.hyperception/vault/, its own git repo on your machine. Entries are plain markdown with typed frontmatter, so you can open any one, see its sources, and follow its supersede chain by hand if you ever want to.
Because it is just git, continuity is free: clone it on a new box and recall works immediately. Where your data lives and how secrets stay out of it is covered in full on Security & data ownership.
The new way of working
Stop re-explaining what your agent forgot.
A memory that answers "what did we decide, and why" with a citation instead of a guess. Typed, sourced, and superseded with a reason when it changes. Run it beside the work and every session compounds instead of resetting.