Memory & compaction

How agents keep long-term memory across runs without unbounded prompt growth, and how long meetings stay bounded.

Last updated

A long-running org would blow up its prompt size — and its cost — if every agent carried its entire history verbatim. Quorum keeps context bounded in two places: per-agent memory, and meetings.

Agent memory

Each agent has a long-term memory file, agents/<id>/MEMORY.md, loaded into its system prompt each turn. It’s how an agent remembers what it learned, decided, or was granted across cycles and across restarts.

When the file grows past a threshold, older notes are summarized and recent ones kept verbatim — so prompt size and cost stay bounded no matter how long the org runs. The agent’s recent context stays sharp while its older history compresses into a running summary.

Compaction is never silent: each one lands a context.truncated event in the audit log — deduped by content, so a stable-but-oversized memory warns once rather than every cycle — and streams live to the dashboard.

Memory is also where asynchronous results land — anything that arrives after an agent’s turn has ended is delivered to its memory so the next turn starts with it in hand. When you answer a request an agent raised, the reply is written into that agent’s memory (and inbox), so it actually receives the account, credential, or decision it asked for. The checkout link a CHARGE produces and the digests a LOGS[...] or ERRORS[...] pull returns arrive the same way. See Dashboard & steering.

Memory is what an agent learns. For know-how you author — a coding standard, an outreach playbook — hand the agent a skill pack instead: versioned files, shared across roles, no compaction.

Memory is also distinct from an agent’s sessions: MEMORY.md is what it carries across tasks, while a task and its retries share one resumable brain session — its memory within a single piece of work. See session continuity.

Meeting compaction

Meetings are real multi-round debates. A long debate would similarly bloat context, so older turns roll into a summary as the meeting proceeds, keeping the working context bounded. The full transcript still goes to the minutes — nothing is lost to the record, only to the live prompt. Each compaction also lands a context.truncated event in the audit log.

Speakers are also capped, so a large roster doesn’t run a super-linear all-hands.

Worklogs vs. shared content

Memory is per-agent and private to that agent’s directory. Two related things live elsewhere:

  • Per-agent worklogs — what an agent did on a task — live under agents/<id>/ alongside its memory.
  • Shared documents (the roadmap, market analysis, decisions) live in the org’s docs folder under workspace/docs/, and meeting minutes under workspace/meetings/ — both readable by the whole org.

See Internal systems & data for where each of these sits on disk.

Why it matters

Bounded memory is what makes an org safe to leave running. Without it, prompt size — and therefore cost per turn — grows with history, so a productive org would get more expensive the longer it worked. With summarization, an agent on day thirty pays roughly what it paid on day one, while still remembering the decisions that shaped its work.