OAra Labs | Docs

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.

ThingWhereWho writes it
Memory — extracted facts~/.prometheus/memory.dbThe daemon, automatically, from conversations
The wiki — a compiled view of those facts~/.prometheus/wikiThe daemon. Machine-owned; regenerable
The brain vault — a hand-built knowledge repoWherever you point itYou. 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:

KeyDefaultWhat it bounds
memory.recall.enabledtrueWhether recall happens at all.
memory.recall.max_facts6Hard cap on facts injected per turn.
memory.recall.max_chars900Hard cap on the rendered block, preamble included.
memory.recall.min_confidence0.6Low-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.

Do not point them at the same path The wiki is machine-owned and regenerable. The vault is yours and is not Prometheus's to regenerate. Aiming both at one directory invites the daemon to overwrite work it did not author — the daemon logs a warning if you do it, and the warning is worth heeding.

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.