Primitives
OpRelay's coordination model is built on four primitives — deterministic, queryable data structures that agents read and write to coordinate work.
No magic. No embeddings. No black boxes. Just structured state your agents can reason about.
The Four Primitives
Facts
Operational knowledge that persists across sessions. Configuration values, learned context, environment state — anything an agent might need to know.
await oprelay.call("upsert_fact", {
project_key: "myproject",
category: "infra",
key: "db.engine",
value_json: { type: "postgres", version: 16 }
});
Decisions
Architectural choices with rationale, status, and audit trail. When an agent or human makes a decision, it's recorded so every future agent understands why, not just what.
await oprelay.call("upsert_decision", {
project_key: "myproject",
decision_key: "auth.strategy",
summary: "Use stateless OAuth for MCP connections",
rationale: "Eliminates session expiry mid-conversation",
status: "accepted"
});
Tasks
Units of work with lifecycle management, advisory locking, priority, and assignment. Agents claim tasks, execute in isolation, and transition through states.
await oprelay.call("core_create_task", {
project_key: "myproject",
title: "Implement SSE broker endpoints",
priority: 1,
assigned_to: "codex-worker-01"
});
Runs
Execution records tied to tasks. Every agent run captures token usage, model, duration, outcome, and optional traces. Append-only — the audit trail is permanent.
How they compose
An agent connects, calls get_context to load relevant facts and decisions, claims a task, starts a run, executes, and records the outcome. The next agent sees everything the previous one did.
This is operational memory — not what your agent remembers, but what your agents know together.