Operating the org

Internal systems & data

The file-backed systems that hold an org's shared state, and the complete on-disk layout of an org home.

An org’s state is just files. Every internal system stores its state as plain files on disk, so it’s inspectable, diffable, and crash-safe: the board is the source of truth, every task is persisted before it runs, and a mid-cycle crash resumes next tick.

The systems

SystemHoldsWhere
GoalTrackergoals + progress + the fair-rotation cursorworkspace/goals
TaskBoardthe task DAG — deps, delegation, quality flagsworkspace/tasks
Triggersschedules, webhooks, process watchers + firing stateworkspace/triggers
CMSshared content (meeting minutes, decisions)workspace/cms
CRMshared contactsworkspace/crm
Rosterthe ledger of employed agentsagents/roster.json
Chatthe operator ↔ org conversationlogs/chat
AuditLogappend-only JSONL, one file per actorlogs/audit
CostLedgerevery LLM call’s tokens + USDlogs/cost/ledger.jsonl

Per-agent worklogs and long-term memory live under agents/<id>/, not in the shared CMS.

Structured stores are runtime-owned

The structured storesgoals, tasks, crm — are owned and written by the runtime, not hand-edited by agents. That’s what keeps them schema-valid, atomic, and fully audited. Agents read the shared data directly (it’s files) and produce their work as files and artifacts, but they go through the systems to change structured state.

Don’t hand-edit goals, tasks, or crm yourself either — go through the running org so the changes stay valid and audited.

The on-disk layout

workspace/ holds only shared data; per-agent files and all logs live elsewhere under the org home:

<org-home>/
  QUORUM.md               the org definition (name, budget, mission, agents) — yours to version
  agents/                 each agent's working directory (its Bash/code sandbox)
    <id>/                 MEMORY.md, scratch, artifacts
    roster.json           the ledger of employed agents
  workspace/              SHARED data / internal systems only
    cms/ crm/ goals/ tasks/
  logs/
    audit/<actor>.jsonl   append-only audit log, one file per actor
    cost/ledger.jsonl     token + money cost ledger
    analytics.db          SQLite read-model projected from the audit log
  dashboard/dashboard.json  org-owned dashboard spec
  .quorum.json            on-disk format stamp (created at init)

The audit log & analytics

Every bus message and system action is recorded to the audit log — one JSONL file per actor under logs/audit/. On boot, the runtime projects the audit log into a SQLite read-model (logs/analytics.db, via Node’s built-in node:sqlite) and then follows it live, which is what powers the dashboard’s metrics and audit feed without re-scanning JSONL on every request.