Using it
Memory and the wiki
Three separate things get called "memory" and confusing them is the fastest way to be surprised by what your agent does or does not know. They have different owners, different storage, and different rules about who may write to them.
| Thing | Where | Who writes it |
|---|---|---|
| Memory — extracted facts | ~/.prometheus/memory.db | The daemon, automatically, from conversations |
| The wiki — a compiled view of those facts | ~/.prometheus/wiki | The daemon. Machine-owned; regenerable |
| The brain vault — a hand-built knowledge repo | Wherever you point it | You. Prometheus reads it and never writes to it |
Memory
As conversations happen, facts are extracted and stored in
~/.prometheus/memory.db. On a later turn, the few most relevant ones are
injected into that turn's system prompt as a Recalled memory section.
Four settings govern it, and the defaults are deliberately conservative:
| Key | Default | What it bounds |
|---|---|---|
memory.recall.enabled | true | Whether recall happens at all. |
memory.recall.max_facts | 6 | Hard cap on facts injected per turn. |
memory.recall.max_chars | 900 | Hard cap on the rendered block, preamble included. |
memory.recall.min_confidence | 0.6 | Low-confidence extractions are ignored. |
Two caps rather than one is the point. A fact count alone would let six long facts crowd out the conversation; a character budget alone would let thirty short ones through. Both apply.
Three behaviours worth knowing
Recall is request-only. Facts injected into a turn never enter durable history — if they did, the extractor would read them back out and re-ingest its own output, and confidence would climb on nothing but repetition.
It fails open. A missing or corrupt memory.db never blocks
a turn. You get an agent with no recall rather than an agent that will not answer, which is
the right trade for something that is an enhancement rather than a dependency.
Not every surface recalls. Recall applies to the chat surfaces — CLI, web, Telegram, Slack, Discord. Coding mode, the gym and evals never recall, deliberately: a coding run that behaves differently because of something remembered from a chat last week is a run whose result means nothing. Reproducibility beats helpfulness there.
The wiki
~/.prometheus/wiki (wiki.root) holds a compiled projection of
what is in memory — a readable view rather than a second source of truth. It is
machine-owned: the daemon regenerates it, so hand edits are not a thing to rely on.
If you want to know what your agent believes, this is the thing to read. It is ordinary
files on disk, so grep works.
The brain vault
Separate from both of the above, and the distinction is enforced rather than advisory.
The vault is a git repo of knowledge you compile yourself. Prometheus reads it through
vault_search and vault_read and never writes to it.
Set vault.root in your config, or PROMETHEUS_VAULT in the env
file alongside your tokens. The shipped default is a generic placeholder, not a real path.
An absent vault is not a startup error — the tools report it clearly when called, naming
the resolved path and the key that set it.
oara vault status shows the vault's format marker and instance state.
oara vault adopt mints a marker for an existing un-markered vault, once and
explicitly.
Clearing it
There is no partial forget. oara --reset-data deletes all user data —
telemetry, memory, LCM, audit, evals, wiki, sentinel and generated skills — and exits. It
does not ask twice, and it does not touch the brain vault, which was never Prometheus's to
delete.
For a single wrong fact, the practical approach today is to correct it in conversation and let extraction record the correction, rather than to edit the database by hand.