This document defines the canonical registry entries for all agents owned by Synedrix OS. These agents are cross-domain: they operate identically regardless of which domain pack is active. Domain packs contribute their own agent entries using the same registry schema defined in §2; those entries are not listed here.

Status: Canonical OS-level reference · Date: October 2026 Scope: OS-owned agents — control, intelligence, and observability families


1. Purpose

The agent registry is the authoritative catalog of what agents exist in the system, what they are responsible for, what they are permitted to do, and where they sit in the authority and escalation structure. Without a formal registry, multi-agent systems accumulate implicit assumptions about agent roles and permissions that are difficult to audit or evolve safely.

This document covers the OS layer of the registry. It:

  • Defines the twelve OS-owned agents and their full contracts
  • Specifies the authority boundary and tool access for each
  • Documents how OS agents interact with each other and with domain agents
  • Provides the registration schema that domain packs must use when contributing their own agents

2. Agent Registry Schema

Every agent registered in Synedrix OS, including whether OS-owned or domain-contributed, must declare all fields in this schema.

FieldTypeDescription
agent_idstringStable unique identifier, e.g. os-agt-001
namestringHuman-readable name
familyenumcontrol · intelligence · observability · domain · customer
ownerenumsynedrix-os · <domain-pack-id> · <business-instance-id> (Business Instance Extension agents, §6.1) · <domain-pack-id>.<module-id> (Capability Module agents, §6.1)
missionstringSingle-sentence statement of the agent’s sole responsibility
input_contractobjectSchema of structured inputs the agent accepts
output_contractobjectSchema of structured outputs the agent always produces
tools_allowedstring[]Explicit list of tools and adapters the agent may invoke
systems_allowedstring[]External systems the agent may read from or write to
memory_scopeobjectWhich memory stores the agent may read and write, and at what privilege
decision_scopeenumrecommend - may propose actions only · approve - may validate/block proposals · execute - may trigger side effects
execution_scopestringSpecific side effects the agent is authorized to trigger
approval_requiredobjectWhether policy approval or HITL review is required before execution: keys policy and hitl, both always present, each boolean, and for the memory agents also broker. Every agent declares it, including agents that do not execute, and omitting it or either key fails the check (ADR-OS-017 §3.4); a delegating execute-scope agent declares { policy: false, hitl: false } (see §4.1)
risk_tierenumlow · medium · high · critical. high and critical obligations are set by ADR-OS-017 §6.2
governance_classenumautonomous · policy-gated · hitl-required. A gate agent (decision_scope: approve) declares autonomous
authorityobjectcan_recommend, can_draft, can_execute, can_approve, can_delegate (booleans), per the Agent Spec. Execution means a change of state in a system other than the acting agent’s own outputs (§4.1)
task_surfaceobjectTask classes the agent handles, each autonomous or approval_required, per the Agent Spec. A gate agent’s gate-function classes (for example validate-policy) are listed in neither and are marked gate (ADR-OS-017 §3.3)
escalation_pathstring[]Ordered list of escalation targets when the agent cannot proceed
owner_workflowsstring[]Workflow IDs where this agent plays a primary role
statusenumplanned · active · paused · deprecated
versionstringSemantic version of this agent definition

3. OS Agent Summary

Twelve agents are owned and shipped by Synedrix OS across three families.

Agent IDNameFamilyLayerDecision scopeStatus
os-agt-001Orchestrator AgentControl3executeActive
os-agt-002Policy Guard AgentControl9approveActive
os-agt-003Registry & Capability AgentControl5recommendActive
os-agt-004HITL Gateway AgentControl9approveActive
os-agt-005Analytics AgentIntelligence10recommendActive
os-agt-006Forecasting AgentIntelligence10recommendActive
os-agt-007Anomaly Detection AgentIntelligence10recommendActive
os-agt-008Audit & Lineage AgentObservability10recommendActive
os-agt-009General Chat AgentIntelligence4recommendActive
os-agt-010Memory Curator AgentControl7executeActive
os-agt-011Consolidation & Reflection AgentIntelligence7recommendActive
os-agt-012Memory Access Broker AgentControl9approveActive

The twelve agents by family:

flowchart TB
    OS["Synedrix OS: 12 agents"]
    subgraph control["Control family"]
        os_agt_001["Orchestrator Agent (os-agt-001)"]
        os_agt_002["Policy Guard Agent (os-agt-002)"]
        os_agt_003["Registry & Capability Agent (os-agt-003)"]
        os_agt_004["HITL Gateway Agent (os-agt-004)"]
        os_agt_010["Memory Curator Agent (os-agt-010)"]
        os_agt_012["Memory Access Broker Agent (os-agt-012)"]
    end
    OS --> control
    subgraph intelligence["Intelligence family"]
        os_agt_005["Analytics Agent (os-agt-005)"]
        os_agt_006["Forecasting Agent (os-agt-006)"]
        os_agt_007["Anomaly Detection Agent (os-agt-007)"]
        os_agt_009["General Chat Agent (os-agt-009)"]
        os_agt_011["Consolidation & Reflection Agent (os-agt-011)"]
    end
    OS --> intelligence
    subgraph observability["Observability family"]
        os_agt_008["Audit & Lineage Agent (os-agt-008)"]
    end
    OS --> observability

3.2 Canonical identifier forms

Per Naming Convention Spec §3, agents also carry a canonical {layer}-{archetype}-{capability-slug}-{seq} identifier. Both forms are valid until migration completes.

Legacy IDCanonical ID
os-agt-009os-int-general-chat-001
os-agt-010os-ctl-memory-curator-001
os-agt-011os-int-memory-consolidation-001
os-agt-012os-ctl-memory-broker-001

4. OS Agent Definitions


os-agt-001 - Orchestrator Agent

Family: Control · Owner: Synedrix OS

Mission: Decompose incoming goals and events into executable task graphs, route work to the correct specialist agents or workflows, manage sequencing, retries, and approvals, and ensure every execution path reaches a declared terminal state.

FieldValue
Input contract{ goal_id, goal_type, intent_payload, priority, correlation_id, domain_context? }
Output contract{ task_graph, agent_assignments, execution_status, terminal_state, correlation_id }
Tools allowedWorkflow router · Task graph builder · Retry manager · Escalation dispatcher · Agent invocation interface
Systems allowedn8n (read/write) · Redis hot state (read/write) · Supabase workflow registry (read) · Agent registry (read)
Memory scopeOperational memory: read/write · Workflow audit state: write · Semantic memory: read-only
Decision scopeexecute - may invoke agents, trigger workflows, and transition task states
Execution scopeAgent invocation · Workflow instantiation · Retry triggering · Approval checkpoint insertion · Escalation dispatch
Approval required{ policy: false, hitl: false } - not required for orchestration itself. Approval gates are inserted into the task graph as declared by each workflow contract.
Escalation pathPolicy Guard Agent → HITL Gateway Agent → human operator
Owner workflowsAll workflows - the Orchestrator Agent is a participant in every workflow execution
Version0.2

Authority boundary: The Orchestrator Agent routes and sequences work but does not itself execute domain-specific business logic, make domain decisions, or write to external systems directly. All side effects are delegated to specialist agents through governed invocation.


os-agt-002 - Policy Guard Agent

Family: Control · Owner: Synedrix OS

Mission: Evaluate proposed actions against the active policy ruleset before execution proceeds, enforce authority boundaries, apply risk thresholds, and emit a binding allow / block / escalate decision that the Orchestrator Agent must respect.

FieldValue
Input contract{ action_type, action_payload, requesting_agent_id, workflow_id, domain, correlation_id, policy_context? }
Output contract`{ decision: allow\block\escalate, policy_rule_triggered?, risk_score?, reason, requires_hitl: bool, correlation_id }`
Tools allowedPolicy rule engine · Risk scoring adapter · Authority boundary checker · Audit log writer
Systems allowedSupabase policy store (read) · Supabase audit trail (write) · Redis idempotency store (read/write)
Memory scopePolicy state: read · Audit state: write · Operational memory: read-only
Decision scopeapprove - produces binding allow/block/escalate decisions; does not itself execute actions
Execution scopeAudit record write · Escalation flag set · Policy event emission
Approval required{ policy: false, hitl: false } - none - the Policy Guard Agent is itself a governance control, not a governed actor
Escalation pathHITL Gateway Agent → human risk owner
Owner workflowsAll approval-gated and high-impact workflows · WF-OS-POLICY-EVAL
Version0.3

Authority boundary: The Policy Guard Agent evaluates and decides, it never executes business actions itself. Its block decision is final within the current workflow invocation; no human decision, including a HITL approval, reverses it. To change the outcome, a human changes the policy or thresholds and the action is re-proposed and re-evaluated (ADR-OS-018).


os-agt-003 - Registry & Capability Agent

Family: Control · Owner: Synedrix OS

Mission: Resolve which agents, workflows, and capabilities are available, active, and correctly scoped for a given goal or task, and return a structured capability map that the Orchestrator Agent uses for routing.

FieldValue
Input contract{ goal_type, domain?, required_capabilities[], task_context?, correlation_id }
Output contract{ capability_map: [{ agent_id, workflow_id?, capability, availability_status, version }], unresolved_capabilities[], correlation_id }
Tools allowedAgent registry reader · Workflow registry reader · Capability index searcher
Systems allowedSupabase agent registry (read) · Supabase workflow registry (read) · Redis capability cache (read)
Memory scopeRegistry state: read-only · Semantic memory: read-only (for capability similarity matching)
Decision scoperecommend - produces capability maps for the Orchestrator Agent to act on; does not invoke agents directly
Execution scopeRegistry cache refresh (write to Redis)
Approval required{ policy: false, hitl: false } - none
Escalation pathOrchestrator Agent (unresolved capability gap) → human operator
Owner workflowsWF-OS-CAPABILITY-RESOLUTION · Any workflow with dynamic agent selection
Version0.2

Authority boundary: The Registry & Capability Agent reads registry state and returns routing recommendations. It never modifies agent or workflow registry entries, registration is a human operator action, not an agent action.


os-agt-004 - HITL Gateway Agent

Family: Control · Owner: Synedrix OS

Mission: Manage the human-in-the-loop approval surface for all workflows that require human review - route approval requests to the correct reviewer, capture structured decisions, enforce review timeouts, and return binding outcomes back to the requesting workflow.

FieldValue
Input contract{ approval_request_id, workflow_id, action_type, action_payload, requester_agent_id, reviewer_role, timeout_seconds, correlation_id }
Output contract`{ decision: approved\rejected\timeout, reviewer_id?, rationale?, decided_at?, correlation_id }`
Tools allowedHuman interface notification dispatcher · Approval state writer · Timeout manager · Hookdeck Outpost (notification delivery)
Systems allowedSupabase approval state (read/write) · Hookdeck Outpost (write) · Redis timeout keys (read/write)
Memory scopeApproval state: read/write · Audit state: write
Decision scopeapprove - captures and relays human decisions; does not make autonomous approval decisions
Execution scopeApproval record write · Notification dispatch · Timeout escalation trigger
Approval required{ policy: false, hitl: false } - not applicable - this agent is the approval surface itself
Escalation pathSenior reviewer → human operator (on timeout or contested decision)
Owner workflowsAll HITL-gated workflows · WF-OS-APPROVAL-ROUTING
Version0.2

Authority boundary: The HITL Gateway Agent is a routing and capture mechanism, it does not interpret, modify, or override the human decision it receives. On timeout it escalates rather than deciding autonomously.


os-agt-005 - Analytics Agent

Family: Intelligence · Owner: Synedrix OS

Mission: Aggregate cross-domain operational metrics, generate structured performance reports, and surface business-level signals that support human decision-making and domain pack monitoring, without owning or acting on the domain data it summarizes.

FieldValue
Input contract{ report_type, domains[], time_window, metrics_requested[], filters?, correlation_id }
Output contract{ report_id, report_type, period, metrics: [{ name, value, unit, trend, domain }], anomaly_flags[], generated_at, correlation_id }
Tools allowedQuestDB query adapter · Supabase analytics read · PostHog event query · Langfuse metric query
Systems allowedQuestDB (read) · Supabase (read) · PostHog (read) · Langfuse (read)
Memory scopeTime-series memory: read · Operational memory: read · Semantic memory: read (for context enrichment)
Decision scoperecommend - produces reports and signals; does not act on findings
Execution scopeReport record write to Supabase · Anomaly flag emission as OS event
Approval required{ policy: false, hitl: false } - none for report generation · Anomaly flags that trigger downstream workflows are governed by those workflows’ own contracts
Escalation pathAnomaly Detection Agent (for signal amplification) → Orchestrator Agent (for workflow trigger) → human domain steward (of the affected business function)
Owner workflowsWF-OS-ANALYTICS-REPORT · WF-OS-METRICS-AGGREGATION
Version0.3

Authority boundary: The Analytics Agent reads broadly but writes nothing except its own report records and anomaly event emissions. It must not modify source data or trigger execution workflows directly.


os-agt-006 - Forecasting Agent

Family: Intelligence · Owner: Synedrix OS

Mission: Generate forward-looking projections from historical time-series and operational data across domains, and return structured forecast outputs that domain agents and human operators can use for planning and threshold calibration.

FieldValue
Input contract{ forecast_type, target_metric, domain, history_window, horizon, model_params?, correlation_id }
Output contract{ forecast_id, target_metric, domain, horizon, projections: [{ timestamp, value, confidence_interval }], model_used, generated_at, correlation_id }
Tools allowedQuestDB time-series read adapter · Statistical/ML model invocation adapter · Langfuse trace writer
Systems allowedQuestDB (read) · Qdrant (read - for similar historical pattern retrieval) · Langfuse (write - trace)
Memory scopeTime-series memory: read · Semantic memory: read (pattern retrieval) · Forecast record store: write
Decision scoperecommend - produces projections only; does not trigger actions based on forecast results
Execution scopeForecast record write to Supabase
Approval required{ policy: false, hitl: false } - none - forecasts are informational outputs
Escalation pathAnalytics Agent (for context) → human domain steward (if projection triggers planning decision)
Owner workflowsWF-OS-FORECAST-GENERATION
Version0.2

Authority boundary: The Forecasting Agent produces probabilistic outputs. It must not represent forecasts as decisions or thresholds. Acting on a forecast is always the responsibility of the requesting workflow or human operator.


os-agt-007 - Anomaly Detection Agent

Family: Intelligence · Owner: Synedrix OS

Mission: Continuously monitor operational signals, workflow metrics, and event streams across all active domains, identify patterns that fall outside configured normal bounds, and emit structured anomaly events for downstream triage and response.

FieldValue
Input contract{ monitoring_scope: domains[], signal_types[], detection_config: { thresholds, window, sensitivity }, correlation_id }
Output contract`{ anomaly_id?, status: anomaly_detected\nominal, signal_type?, domain?, deviation_score?, context_snapshot?, recommended_action?, correlation_id }`
Tools allowedQuestDB streaming read adapter · Redis signal cache · Grafana/Prometheus metric query · Anomaly model adapter
Systems allowedQuestDB (read) · Redis (read) · Prometheus (read) · Supabase anomaly log (write)
Memory scopeTime-series memory: read · Hot state: read · Anomaly log: write
Decision scoperecommend - emits anomaly events and recommended actions; does not execute remediation directly
Execution scopeAnomaly event emission · Anomaly log record write
Approval required{ policy: false, hitl: false } - none for detection and emission · Any remediation triggered by an anomaly event is governed by the responding workflow’s contract
Escalation pathAnalytics Agent (for context enrichment) → Orchestrator Agent (for automated response workflow) → HITL Gateway Agent (for human review) → human domain steward (of the affected business function)
Owner workflowsWF-OS-ANOMALY-DETECTION · WF-OS-INCIDENT-TRIAGE
Version0.3

Authority boundary: The Anomaly Detection Agent observes and signals, it never acts on what it detects. Remediation is a separate workflow that must be explicitly triggered and governed.


os-agt-008 - Audit & Lineage Agent

Family: Observability · Owner: Synedrix OS

Mission: Correlate workflow execution traces, agent invocation records, policy decisions, and tool call logs into structured run lineage, and respond to explainability queries with a complete, sourced reconstruction of what happened, why, and under whose authority.

FieldValue
Input contract`{ query_type: lineage_trace\decision_explanation\policy_audit\run_summary, entity_id?, workflow_id?, correlation_id, time_range? }`
Output contract{ lineage_id, query_type, entity_id?, workflow_id?, steps: [{ timestamp, actor, action, inputs, outputs, policy_decision?, authority }], audit_complete: bool, correlation_id }
Tools allowedSupabase audit trail reader · Neo4j lineage graph reader · Langfuse trace reader · Log aggregation query adapter
Systems allowedSupabase (read) · Neo4j (read) · Langfuse (read) · Grafana/Loki log store (read)
Memory scopeAudit state: read · Graph memory: read · LLM trace memory: read
Decision scoperecommend - produces lineage and audit outputs; does not modify any records
Execution scopeNone - this agent is read-only by design
Approval required{ policy: false, hitl: false } - none for standard lineage queries · Access to sensitive policy decision details may require role-based authorization check via Policy Guard Agent
Escalation pathHuman compliance owner (for audit findings requiring action)
Owner workflowsWF-OS-AUDIT-QUERY · WF-OS-LINEAGE-TRACE · WF-OS-INCIDENT-POSTMORTEM
Version0.2

Authority boundary: The Audit & Lineage Agent is strictly read-only and always will be. It may never modify, redact, or amend audit records. Any amendment to audit state is a human operator action with its own audit trail.


os-agt-009 - General Chat Agent

Family: Intelligence · Owner: Synedrix OS · Layer: 4 (Agent Runtime) · Canonical ID: os-int-general-chat-001

Mission: Answer natural-language questions about Synedrix OS by retrieving grounded context from a semantic knowledge base and composing a cited response, for standalone chat surfaces (e.g. a public website) that sit outside any domain pack.

FieldValue
Input contract{ correlation_id, causation_id, agent_id, execution_pattern: "iterative", deployment_mode: "self-hosted-hybrid", active_tool_set[], input: { messages[] } }
Output contractCanonical Outcome Envelope (status, result: { messages[], sources[] }, execution_context, timing, errors[])
Tools allowedSemantic knowledge-base retrieval tool (Qdrant, read-only) · Local/self-hosted model inference (LiteLLM gateway)
Systems allowedQdrant (read) · LiteLLM gateway (inference only, no data at rest) · Langfuse (write - trace)
Memory scopeSemantic memory: read-only · No access to operational, conversation, or canonical relational memory
Decision scoperecommend - answers questions and cites sources; triggers no side effects
Execution scopeNone beyond its own trace emission to Langfuse
Approval required{ policy: false, hitl: false } - no write-class tool is bound; this declaration must flip to true and the agent re-certified through the governance bridge before any write-capable tool is added (see DGX Vercel Chat Agent Deployment §8)
Escalation pathHITL Gateway Agent (os-agt-004) → human operator
Owner workflowsNone - directly invoked as a standalone LangGraph service, not orchestrated by an n8n workflow. See DGX Vercel Chat Agent Deployment for the invocation path and its bounded governance-bridge exception.
Runtime enginelanggraph
Version0.3

Authority boundary: The General Chat Agent retrieves and answers; it never writes to any system of record and holds no execution authority. Its direct Vercel-to-LangGraph invocation path bypasses the n8n orchestration layer that normally carries the governance bridge — this is compliant only while decision_scope: recommend holds and no write-class tool is bound. Any expansion of its tool set to include a write-class tool requires routing through n8n/Orchestrator or embedding an equivalent Policy Guard/HITL call inside the graph before that tool may be enabled.

Organisational-interface conditions (ADR-OS-015 §4.4): os-agt-009 is not the organisational interface, and may not classify and route requests to os-agt-001 or os-agt-005, until all of the following hold: its approval_required.policy flips to true; it is re-certified through the governance bridge; its invocation path carries the bridge, or an equivalent in-path governance control is specified; and its memory_profile is reviewed against the wider recall surface routing implies. Until then, any depiction of os-agt-009 as an organisational interface is marked as target state.


os-agt-010 - Memory Curator Agent

Family: Control · Owner: Synedrix OS · Layer: 7 (Memory & Data) · Canonical ID: os-ctl-memory-curator-001

Mission: Commit every durable memory record on behalf of the agents that propose them — forming, consolidating, promoting, expiring and erasing records under the memory lifecycle — so that no agent writes durable memory directly and every record carries complete provenance.

FieldValue
Input contract{ operation: form|consolidate|promote|demote|expire|erase, proposals[], correlation_id, causation_id, broker_decision, policy_decision? }
Output contract{ committed[]: { memory_id, tier, consolidation_state }, rejected[]: { proposal_ref, reason }, events_emitted[], correlation_id }
Tools allowedMemory record writer (Supabase) · Qdrant projection writer · NAMS graph writer (Neo4j, bolt) · Tombstone writer · Event emitter
Systems allowedSupabase (read/write) · Qdrant (read/write) · Neo4j via NAMS (read/write) · Redis (read)
Memory scopeEpisodic memory: read/write · Semantic memory: read/write · Procedural memory: read/write · Profile memory: read/write · Graph memory: write · Canonical memory: read/write (memory tables only) · Working memory: read-only
Decision scopeexecute - the only agent permitted to commit durable memory records
Execution scopeMemory record creation · Consolidation commit · Tier promotion and demotion · Validity-interval closure · Supersession · Erasure and tombstone creation · memory.* event emission
Approval required{ policy: false, hitl: false, broker: true } - every operation requires an os-agt-012 scope decision; the agent-level policy is false because policy approval is not uniform and is declared per task class (§4.1): erasure, promotion into relational, visibility widening beyond tenant, and promotion of records carrying regulated compliance_labels additionally require os-agt-002 policy approval (see Memory Fabric Spec §7.3)
Escalation pathMemory Access Broker Agent (os-agt-012) → Policy Guard Agent (os-agt-002) → HITL Gateway Agent (os-agt-004) → human operator
Owner workflowsWF-OS-MEMORY-CONSOLIDATE · WF-OS-MEMORY-ERASURE
Runtime enginen8n-aiagent - commits are deterministic; no cyclic reasoning is required
Version0.2

Authority boundary: The Memory Curator commits but never decides what should be remembered. Formation and consolidation proposals originate elsewhere — from any agent for formation, from os-agt-011 for consolidation and reflection — and the Curator’s role is to validate the envelope, enforce provenance, apply the write across the write-authoritative store and its projections, and emit the event. It has no authority to originate a memory record of its own, and no authority to commit an operation that os-agt-012 has not scoped or that os-agt-002 has blocked. It may never destroy lineage: erasure removes content and leaves a tombstone.


os-agt-011 - Consolidation & Reflection Agent

Family: Intelligence · Owner: Synedrix OS · Layer: 7 (Memory & Data) · Canonical ID: os-int-memory-consolidation-001

Mission: Analyse accumulated memory records to propose consolidations, higher-order reflections, distilled procedural skills, tier promotions and conflict resolutions — producing recommendations only, never writes.

FieldValue
Input contract{ scope: { tenant_id, tier[], window }, candidates[]: memory_id, correlation_id, causation_id, thresholds }
Output contractCanonical Outcome Envelope with result: { proposals[]: { operation, target_tier, derived_from[], content, confidence, rationale }, conflicts[]: { memory_ids[], resolution_proposed } }
Tools allowedMemory record reader (Supabase, read-only) · Qdrant similarity search (read-only) · NAMS entity deduplication (read-only) · Local/self-hosted model inference (LiteLLM gateway)
Systems allowedSupabase (read) · Qdrant (read) · Neo4j via NAMS (read) · LiteLLM gateway (inference only) · Langfuse (write - trace)
Memory scopeEpisodic memory: read · Semantic memory: read · Procedural memory: read · Profile memory: read · Graph memory: read · Temporal memory: read · No write access to any tier
Decision scoperecommend - proposes consolidations, reflections, skills and promotions; commits nothing
Execution scopeNone beyond its own trace emission to Langfuse
Approval required{ policy: false, hitl: false } - this agent triggers no side effects; every proposal it produces is gated downstream by os-agt-012 and committed only by os-agt-010
Escalation pathMemory Curator Agent (os-agt-010) → HITL Gateway Agent (os-agt-004) → human operator
Owner workflowsWF-OS-MEMORY-CONSOLIDATE
Runtime enginelanggraph - consolidation is reflect-and-revise: a proposal is generated, critiqued against the existing record set, and revised
Version0.2

Authority boundary: The Consolidation & Reflection Agent reads broadly and writes nothing. Reading broadly is precisely why it holds no write authority: an agent that can both survey the whole fabric and commit to it could rewrite memory to match its own inference without a second opinion. Every proposal it emits is a recommendation carrying its derived_from chain and a rationale, and is only durable once os-agt-012 has scoped it and os-agt-010 has committed it. It may not resolve a detected conflict unilaterally — it proposes a resolution and the contested records remain flagged until the proposal is committed.


os-agt-012 - Memory Access Broker Agent

Family: Control · Owner: Synedrix OS · Layer: 9 (Governance & Controls) · Canonical ID: os-ctl-memory-broker-001

Mission: Mediate every memory recall and every memory write proposal, resolving the requester’s declared scope against its memory_profile before any store is queried, and emitting an allow, partial or deny decision.

FieldValue
Input contract{ request_type: recall|propose|promote, requesting_agent, tiers[], scope, filters?, correlation_id, causation_id }
Output contract{ decision: allow|partial|deny, scope_applied, tiers_granted[], tiers_denied[], filter_predicates, reason?, correlation_id }
Tools allowedMemory profile reader (Supabase, read-only) · Agent registry reader (read-only) · Tool authorization resolver · Event emitter
Systems allowedSupabase (read) · Agent registry (read)
Memory scopeCanonical memory: read (memory profile and registry tables only) · Recall decision log: write · No access to memory record content in any tier
Decision scopeapprove - validates and blocks memory access; performs no reads of memory content and no writes to memory records
Execution scopeNone - emits decisions and memory.recall.* events only
Approval required{ policy: false, hitl: false } - not required for the brokering decision itself. Denials are terminal for the request; the requester escalates rather than retries.
Escalation pathPolicy Guard Agent (os-agt-002) → HITL Gateway Agent (os-agt-004) → human operator
Owner workflowsWF-OS-MEMORY-RECALL · WF-OS-MEMORY-CONSOLIDATE · WF-OS-MEMORY-ERASURE
Runtime enginen8n-aiagent - deterministic scope intersection; no model inference on the decision path
Version0.2

Authority boundary: The Memory Access Broker decides whether and at what scope memory may be read or written, and never sees the memory content itself. That separation is deliberate: the broker is on the path of every recall in the system, so granting it content access would make it the single most privileged reader in the OS. It resolves scope before the store is queried and returns filter predicates that are pushed down into the query — it never inspects and filters results after retrieval, because out-of-scope memory that has already entered the process has already leaked. A denial is terminal; the requesting agent escalates through its own path rather than reissuing a narrowed request automatically.


4.1 Authority and task surface declarations

These declarations instantiate authority and task_surface for the twelve OS agents, so the autonomy ladder of ADR-OS-010 can be derived for each task class. They apply the conventions of ADR-OS-017: the agent-level approval field is approval_required (an object), risk_tier takes the four values in §2, and every agent declares governance_class. os-agt-002’s risk_tier is critical, which supersedes control-plane. The other tiers, the can_* flags and the task-class names are proposals taken from each agent’s existing input contract, execution scope and owner workflows, and the agent’s owner confirms them.

Own-output convention. Writes to an agent’s own outputs, caches, telemetry, declared events and designated audit records are not execution. Only a change of state in another system counts, and only that sets can_execute. A store that another agent reads as an input to a decision is not an own output, because a write to it changes what another agent decides; writing it is execution (ADR-OS-017 §3.1, limit 4). This is why os-agt-005, 006 and 007 stay can_execute: false although their execution scope lists writes to a report, forecast or anomaly store. os-agt-003 is an open case: its refresh-capability-cache task writes the Redis capability cache that os-agt-001 consults when it decomposes and dispatches, which limit 4 reads as execution. The registry keeps os-agt-003 at can_execute: false and recommend scope as provisional, and the owner decides whether the agent is re-scoped or the cache is treated as a designated output.

Agent-level declarations.

AgentNamedecision_scopeauthority flags setrisk_tiergovernance_classapproval_required
os-agt-001Orchestratorexecuterecommend · draft · execute · delegatehighautonomous{ policy: false, hitl: false }
os-agt-002Policy Guardapproveapprovecriticalautonomous{ policy: false, hitl: false }
os-agt-003Registry & Capabilityrecommendrecommendmediumautonomous{ policy: false, hitl: false }
os-agt-004HITL Gatewayapproveapprovehighautonomous{ policy: false, hitl: false }
os-agt-005Analyticsrecommendrecommendlowautonomous{ policy: false, hitl: false }
os-agt-006Forecastingrecommendrecommendlowautonomous{ policy: false, hitl: false }
os-agt-007Anomaly Detectionrecommendrecommendmediumautonomous{ policy: false, hitl: false }
os-agt-008Audit & Lineagerecommendnonemediumautonomous{ policy: false, hitl: false }
os-agt-009General Chatrecommendnonemediumautonomous{ policy: false, hitl: false }
os-agt-010Memory Curatorexecuteexecutecriticalpending (ADR-OS-010 §8){ policy: false, hitl: false, broker: true }
os-agt-011Consolidation & Reflectionrecommendrecommendlowautonomous{ policy: false, hitl: false }
os-agt-012Memory Access Brokerapproveapprovecriticalautonomous{ policy: false, hitl: false }

os-agt-001 delegates: it decomposes and dispatches, and the dispatched task carries its own gate, so it declares an explicit { policy: false, hitl: false } rather than leaving the field implied. os-agt-008 and os-agt-009 set no flag: they answer queries and write nothing, and can_recommend is declared false explicitly because it defaults to true. The gate agents (os-agt-002, 004, 012) set only can_approve.

Task surface. autonomous marks a class that needs no approval gate. A gate agent’s gate-function classes are listed in neither list and are marked gate, because the agent is itself the control and the class is not an action awaiting approval (ADR-OS-017 §3.3). They sit off the ladder, and governance_class stays autonomous. os-agt-001’s decompose-goal drafts a task graph and changes no external state, so it is L2; dispatch-task is not graded because the dispatched task carries its own level. The level is derived by the ADR-OS-010 mapping (most restrictive bound wins) and is a read-only view, never an input to authorisation.

AgentTask classClass kindside_effect_classDerived level
os-agt-001decompose-goalautonomousnoneL2
os-agt-001dispatch-taskautonomouslownot graded
os-agt-002validate-policygatenonenot graded (gate)
os-agt-003resolve-capabilitiesautonomousnoneL1
os-agt-003refresh-capability-cacheautonomousnoneL1
os-agt-004route-approvalgatenonenot graded (gate)
os-agt-004capture-decisiongatenonenot graded (gate)
os-agt-004escalate-timeoutgatenonenot graded (gate)
os-agt-005generate-reportautonomousnoneL1
os-agt-005aggregate-metricsautonomousnoneL1
os-agt-006generate-forecastautonomousnoneL1
os-agt-007detect-anomalyautonomousnoneL1
os-agt-008trace-lineageautonomousnoneL0
os-agt-008explain-decisionautonomousnoneL0
os-agt-008audit-policyautonomousnoneL0
os-agt-008summarise-runautonomousnoneL0
os-agt-009answer-questionautonomousnoneL0
os-agt-010formapproval requiredlowL4
os-agt-010consolidateapproval requiredlowL4
os-agt-010demoteapproval requiredlowL4
os-agt-010expireapproval requiredlowL4
os-agt-010promoteapproval requiredhighL4, flagged no human gate
os-agt-010eraseapproval requiredirreversibleL4, flagged no human gate
os-agt-011propose-memory-changeautonomousnoneL1
os-agt-012broker-recallgatenonenot graded (gate)
os-agt-012broker-write-proposalgatenonenot graded (gate)

os-agt-010 carries one class per operation in its input contract. All six are approval_required; form, consolidate, demote and expire are low, promote is high because it can widen visibility or cross into relational, and erase is irreversible. The agent-level object declares only the gate every operation shares, an os-agt-012 scope decision (broker: true). Policy approval is declared per class, because Memory Fabric Spec §7.3 requires it for some operations only:

Task classapproval_required
form, consolidate, demote, expire{ broker: true }
promote{ broker: true }, plus policy: true where the promotion enters relational, widens visibility beyond tenant, or carries a regulated compliance_labels value into a longer-retention class
erase{ broker: true, policy: true }

Consistency check. The rules of ADR-OS-010 §4 item 6, plus the checks the declarations make possible, were applied to these declarations: scope against flags, level against the decision_scope ceiling, a class never both autonomous and approval-required, governance_class against the class gates, risk_tier values, an execute-scope agent declaring approval_required, and, as a flag rather than a rule, an irreversible class with no human gate. Four findings are open, and the declarations are published as they are until the owners and the ADR decide:

  • os-agt-010 erase is irreversible and no human gate is declared. Under ADR-OS-010 §3.1 an irreversible task with policy approval is L4, and the read-only view flags it (and promote, which is high) as having no human gate. That is not a rule failure: the ADR does not require HITL for irreversible work (§4 item 9). The canon declares { broker: true, policy: true } for erase, with no human gate, and the Memory Fabric Spec §7.3 does not require one. Whether erase should gain a hitl requirement is an enforcement decision, since erasure leaves a tombstone and lineage survives. This registry does not decide it, and keeps the canon’s declaration. The owner of os-agt-010 decides, and the decision goes in a later registry version.
  • Rule R1 as worded fails every recommend-only class marked autonomous. R1 ("can_execute false with a class marked autonomous") is still the accepted rule, so an implementation of it rejects the autonomous classes of os-agt-003, 005, 006, 007, 008, 009 and 011. They are listed here as failures against the rule as written, not as passes. This registry reads autonomous as “no approval gate needed”, which a recommend-only class legitimately is, and ADR-OS-010 records the proposed narrowing to a class whose side_effect_class is not none; that ADR is amended first, and this finding closes with it.
  • os-agt-003 writes a store another agent reads as a decision input. The capability cache that refresh-capability-cache writes is consulted by os-agt-001, which the own-output convention reads as execution, yet os-agt-003 is recommend scope with can_execute: false. Either the agent is re-scoped or the cache is designated an output. The owner of os-agt-003 decides.
  • os-agt-010 has no governance_class. Whether an os-agt-012 broker decision counts as a policy gate is undecided (ADR-OS-010 §8), so the value is pending. The per-class approval table above carries what can be said now.

Two further notes. The gate agents have declared effects the ladder does not grade, and they stay off it. os-agt-004 notifications to approvers are the gate’s designated output channel, so they count as its own output under the convention above and do not set can_execute; the owner of os-agt-004 confirms that reading.

Obligations of the higher tiers. os-agt-001 and os-agt-004 are high; os-agt-002, os-agt-010 and os-agt-012 are critical. The Agent Evaluation Spec makes policy compliance checks blocking and requires a 1.0 compliance rate for high and critical agents alike, and the Agent Registry Spec requires strict observability for both tiers. Under ADR-OS-017 §6.2 these obligations apply to all five agents. Whether the existing evaluation suites for these agents meet them has not been checked.


5. Agent Interaction Patterns

OS agents interact in predictable patterns across all domain packs. The six most common:

5.1 Goal decomposition and routing

This is the entry pattern for every goal Synedrix OS receives, regardless of domain. It exists to keep two concerns separate: what agents and workflows currently exist and are healthy (os-agt-003’s job) from how a specific goal should be decomposed and sequenced (os-agt-001’s job). The Orchestrator Agent never queries the registry directly by hand-coded assumption — it always asks the Registry & Capability Agent, so that agent availability, versioning, and deprecation are resolved in one place rather than duplicated across every workflow.

flowchart TD
  H([Human Intent]):::term --> O1[Orchestrator Agent os-agt-001: decompose goal_id goal_type intent_payload into a task graph]:::agent
  O1 --> R[Registry & Capability Agent os-agt-003: resolve required_capabilities against the live registry]:::agent
  R -- all capabilities resolved --> O2[Orchestrator Agent: receives capability_map, assigns tasks, invokes domain agents]:::agent
  R -- unresolved_capabilities --> O3[Orchestrator Agent: escalates to human operator per os-agt-003 escalation path, task graph pauses at the unresolved node rather than partially executing]:::warn
  O2 --> D[domain agents execute assigned tasks]:::agent
  D -- any task proposes a high-impact action --> G{Pre-execution policy gate §5.2}:::check
  D --> O4[Orchestrator Agent: collects task outcomes, transitions the task graph to a terminal_state]:::agent

Walking through the contract fields that actually flow between these steps:

  1. Human Intent → Orchestrator Agent. The triggering event carries goal_id, goal_type, intent_payload, priority, and a freshly minted correlation_id that is propagated, unchanged, through every subsequent step of the pattern — this is what lets the Audit & Lineage Agent (§5.4) reconstruct the full path later. The Orchestrator Agent’s decomposition output is a task_graph: an ordered (and possibly branching) set of task nodes, each naming the capability it needs rather than a specific agent — capability resolution is deliberately deferred to the next step so the task graph itself never hard-codes which agent version handles a task.
  2. Orchestrator Agent → Registry & Capability Agent. For each distinct capability named in the task graph, the Orchestrator Agent issues a { goal_type, domain?, required_capabilities[], task_context?, correlation_id } request. The Registry & Capability Agent is recommend-scoped: it returns a capability_map (each entry naming the resolved agent_id, optional workflow_id, capability, availability_status, and version) but never invokes anything itself.
  3. The unresolved-capability branch. If any requested capability has no active, correctly-scoped agent — for example a domain pack agent that is deprecated or not yet registered — it lands in unresolved_capabilities[] instead of capability_map. Per os-agt-003’s registry entry, this is the one case where the pattern breaks out to a human operator rather than looping back to the Orchestrator Agent for a retry: a missing capability is a registration gap, not a transient failure, so retrying automatically would just repeat the same gap.
  4. Orchestrator Agent → domain agents. Once capability_map is fully resolved, the Orchestrator Agent assigns each task-graph node to its resolved agent_id and invokes it with the task’s scoped inputs plus the same correlation_id. This is the only step in the pattern where a side effect (an actual agent invocation) occurs — consistent with the Orchestrator Agent being the sole execute-scoped agent in this flow; both the Registry & Capability Agent and, in the next pattern, the Policy Guard Agent only ever recommend or approve.
  5. High-impact actions branch out, not through. If a domain agent’s assigned task proposes a high-impact action (a financial transaction, a regulated message, an irreversible external write), that task does not proceed directly to execution — it enters the pre-execution policy gate described in §5.2 before the Orchestrator Agent is allowed to mark it complete. Goal decomposition and routing resolves who does the work; the policy gate separately governs whether a specific action is allowed to happen.
  6. Terminal state. The Orchestrator Agent is responsible for ensuring every task-graph node reaches a declared terminal state (completed, failed, or escalated) — per its registry entry, “ensure every execution path reaches a declared terminal state” is part of its core mission, not an optional cleanup step. A task graph with a node stuck indeterminately is treated as an orchestration defect.

5.2 Pre-execution policy gate

flowchart TD
  D[Domain Agent proposes high-impact action]:::agent --> P{Policy Guard Agent evaluate against policy ruleset}:::check
  P -- allow --> O1[Orchestrator Agent proceed with execution]:::agent
  P -- block --> O2[Orchestrator Agent halt, emit policy.blocked event]:::warn
  P -- escalate --> H[HITL Gateway Agent route to human reviewer]:::agent
  H -- approved --> O3[Orchestrator Agent proceed]:::agent
  H -- rejected --> O4[Orchestrator Agent halt and notify]:::warn
  H -- timeout --> O5[Orchestrator Agent escalate to operator]:::warn

5.3 Cross-domain anomaly response

flowchart TD
  A[Anomaly Detection Agent: detects deviation, emits anomaly.detected event]:::agent --> O[Orchestrator Agent: receives event, instantiates response workflow]:::agent
  O --> AN[Analytics Agent: produces context report for the anomaly]:::agent
  AN --> P[Policy Guard Agent: evaluates proposed remediation]:::check
  P --> H[HITL Gateway Agent: if human review required]:::agent
  H --> S[Domain specialist agent: executes approved remediation]:::agent
  S --> AL[Audit & Lineage Agent: records full trace on query]:::agent

5.4 Explainability query

flowchart TD
  Q([Human Operator or Compliance Reviewer: submits lineage or audit query]):::term --> A[Audit & Lineage Agent: correlates traces, policy decisions, agent records]:::agent
  A --> R([Structured lineage response returned]):::term

5.5 Domain pack owning a real-time pipeline

The Trading domain pack is a clear example of a pack that owns transport- and execution-level infrastructure of its own. It is worth reading as the general case: a pack may own its own channel or pipeline, and doing so does not make that channel an OS concern.

flowchart TD
  IN([Inbound market data, exchange feed / broker webhook]):::term --> MD[Market Data Ingest trd-ctl-master-orchestrator-001 — signal ingested, correlation_id assigned]:::agent
  MD --> AN[Technical / On-Chain / Sentiment / Macro Analysts trd-int-*-001 — signal validation, contributing_agents metadata]:::agent
  AN --> ST[Strategy Agents trd-exe-bull-strategist-001, trd-exe-bear-strategist-001, … — BULL/BEAR tagged signals]:::agent
  ST --> CO[Consensus Agent trd-ctl-consensus-001 — quorum aggregation 4-of-7 / 5-of-8, 500ms window]:::agent
  CO --> RM{Risk Manager VETO trd-ctl-risk-manager-001 — canonical + enriched VETO checks}:::check
  RM --> PG[Policy Guard Agent os-agt-002 — evaluates the proposed trade action]:::check
  PG --> PO[Portfolio Optimizer / Position Sizer trd-exe-*-001]:::agent
  PO --> EX[Execution Agent trd-exe-execution-001 — broker-isolated order placement]:::agent
  EX --> PT[Performance Tracker trd-int-performance-tracker-001 — fill confirmation, PnL]:::agent
  subgraph hitl [Trading HITL escalation path]
    Q[HITL Queue Manager WF-TRD-HITL-QUEUE-MANAGER-001]:::agent --> G[HITL Gateway Agent os-agt-004 with channel: trading + order context]:::agent
    G --> HU([Human operator reviews, approves, rejects, or modifies within risk bounds]):::term
    HU --> EX2[Execution Agent trd-exe-execution-001 resumes or cancels the order]:::agent
  end

Note what the OS contributes and what it does not. It orchestrates (os-agt-001), evaluates policy (os-agt-002), and carries the human decision (os-agt-004). It owns no part of the market-data path, the strategy/consensus logic or the broker execution surface, because those are specific to one domain pack and no other pack needs them. A second pack introducing, say, a commerce fulfillment pipeline would own its own transport the same way rather than asking the OS to grow a layer for it.

The Trading pack’s agent entries are defined in Synedrix Trading Domain Pack, not here.

5.6 Memory recall and durable commit

This is the entry pattern for every memory interaction, and it exists to keep three concerns apart that a single memory service would collapse: may this agent see this (os-agt-012), what is worth remembering (os-agt-011), and what is actually written (os-agt-010). No agent performs more than one of the three.

flowchart TD
  N([Agent needs context]):::term --> T[tool:memory-recall bound only if present in the resolved active_tool_set]:::agent
  T --> B{Memory Access Broker os-agt-012: intersect requested scope with the agent memory_profile.recall_scope}:::check
  B -- deny --> D[memory.recall.denied, the agent escalates, it does not retry a narrowed request]:::warn
  B -- allow --> F[filter predicates pushed down into the Qdrant/Postgres/Cypher query]:::agent
  F --> RR[records returned WITH provenance and validity_interval attached]:::agent
  RR --> S([memory.recall.served]):::term
  L([Agent learns something durable]):::term --> PR[tool:memory-propose proposal only — returns a proposal id, never a committed record]:::agent
  PR --> W[background WF-OS-MEMORY-CONSOLIDATE]:::agent
  W --> C[Consolidation & Reflection Agent os-agt-011: propose merges, promotions, distilled skills]:::agent
  C --> BR[Memory Access Broker os-agt-012: scope-validate each proposal]:::check
  BR --> PG[Policy Guard Agent os-agt-002: gate promotions that require approval]:::check
  PG --> CU[Memory Curator Agent os-agt-010: commit]:::agent
  CU --> EV([memory.record.formed / .consolidated / .promoted]):::term

Three things in this path are load-bearing. Scope resolution happens before the store is queried, not after results return — out-of-scope memory that has already entered the process has already leaked, so filtering afterwards is not a control. The proposal path is asynchronous by design, so an agent never waits on extraction and never gains write authority as a side effect of learning something. And the commit is separated from the recommendation, so the agent that surveys the whole fabric (os-agt-011) is not the agent that can rewrite it.

Erasure follows the same shape with a different terminal: a human or compliance workflow initiates, os-agt-002 approves, os-agt-010 destroys content across the write-authoritative store and every projection, and a tombstone plus the surviving graph lineage keep the audit trail whole. See Memory Fabric Spec §8.4.


6. Domain Pack Agent Contribution

Domain packs contribute their own agent entries to the shared registry using the same schema defined in §2. Requirements:

  • Every domain agent must have a unique agent_id prefixed with the domain pack layer code, e.g. trd-agt-001 for a Trading pack agent, com-agt-001 for a Commerce pack agent.
  • owner must be set to the contributing domain pack ID, not synedrix-os.
  • family must be domain or customer — domain packs may not register agents in the control or observability families.
  • Domain agents must declare their escalation_path explicitly and the terminal node must always be reachable via an OS control agent (os-agt-001 or os-agt-004).
  • Domain agents with execution_scope that includes financial transactions, regulated messaging, or irreversible external writes must declare approval_required.policy: true.

Domain pack agent entries are maintained in the domain pack’s own canonical document and contributed to the shared runtime registry at deployment time.

6.1 Business Instance Extension and Capability Module Agent Contribution

Business Instance Extensions (BIEs) and Capability Modules contribute agents to the shared registry using the same schema defined in §2, per ADR-OS-005. The invariants are the same ones §6 already states for domain-pack agents, restated here for the two owner forms §2’s widened owner enum adds:

  • Business Instance Extension agents. family must be customer. owner must be set to the business instance’s own identifier — not synedrix-os and not the domain pack ID, even when the BIE targets a specific pack. Registered at BIE-deployment time, never injected into a running workflow (§7’s append-only invariant applies unchanged).
  • Capability Module agents. family must be domain. owner must be set to the contributing domain pack ID (a Capability Module is vendor-owned IP, not customer-owned), qualified with the module identifier so it is distinguishable from the pack’s own core agents.
  • Both owner forms must declare escalation_path explicitly, terminating at an OS control agent (os-agt-001 or os-agt-004) — identical to the domain-pack rule in §6.
  • Both owner forms with execution_scope covering financial transactions, regulated messaging, or irreversible external writes must declare approval_required.policy: true — identical to the domain-pack rule in §6.
  • The stable agent_id prefix convention for BIE and Capability Module agents (analogous to trd-agt-001, com-agt-001 for domain packs) is not yet minted in the Naming Convention Spec’s layer-code table — an open item recorded in ADR-OS-005 §8, deferred to a future Naming Convention Spec bump informed by the first real implementation.

7. Registry Invariants

  • The OS agent registry is append-only at runtime - no running workflow may add, remove, or modify an agent entry.
  • OS-owned agents (owner: synedrix-os) may not be overridden, shadowed, or disabled by domain packs.
  • An agent with decision_scope: execute must have a non-empty approval_required declaration. A delegating agent declares an explicit object, for example { policy: false, hitl: false }.
  • Every agent declares governance_class and risk_tier, except that os-agt-010’s governance_class waits on ADR-OS-010 §8 (whether a broker decision counts as a policy gate); risk_tier is one of low, medium, high or critical. A gate agent declares governance_class: autonomous.
  • A high or critical agent has blocking policy compliance checks, a 1.0 compliance rate and strict observability. os-agt-002 is critical.
  • A task class is never both autonomous and approval-required, and its derived autonomy level never exceeds the ceiling set by its agent’s decision_scope.
  • A write to an agent’s own outputs, caches, telemetry, declared events or designated audit records is not execution and does not set can_execute. A store that another agent reads as an input to a decision is not an own output, and writing it is execution.
  • No agent may have systems_allowed entries that bypass the Tool Abstraction layer.
  • Every agent must have at least one entry in escalation_path.
  • Audit & Lineage Agent (os-agt-008) must never appear in any tools_allowed list - it is a query target, not a callable tool.
  • Agent identifiers are not reused. The one exception is the v0.4 reallocation of os-agt-009–os-agt-013 recorded in §3.1, which was taken deliberately to leave the registry contiguous and is not a precedent. New OS agents allocate from os-agt-013 onward.

7.1 Memory control-plane invariants

These extend the registry invariants above and are specified in full in Memory Fabric Spec §10.

  • Memory Curator Agent (os-agt-010) is the only agent permitted to commit durable memory records. Any other agent writing directly to the episodic, semantic, procedural or profile tiers is non-compliant.
  • Memory Access Broker Agent (os-agt-012) is on the path of every memory recall and every write proposal. Scope is resolved before the store is queried, never applied to results afterwards.
  • Consolidation & Reflection Agent (os-agt-011) holds no write access to any memory tier. It reads broadly precisely because it commits nothing.
  • No memory record crosses a tier boundary without a memory.record.promoted event carrying the inherited correlation_id and causation_id.
  • Memory recall is a tool call bound in the resolved active_tool_set. Ambient memory injection into an agent’s context is non-compliant.
  • Erasure leaves a tombstone; lineage in graph memory survives the erasure of content.

8. Relationship to Other Canonical Documents

DocumentRelationship
Synedrix OS - Taxonomy & Platform SpecEstablishes the OS agent families; this document is the authoritative per-agent registry for all OS-owned entries
Synedrix OS - Responsibility MatrixRow “Agent registry schema - Owns” refers to the schema defined in §2 of this document
Synedrix OS - Workflow Contract SpecWorkflow agent_roles field references agent IDs defined in this registry
Synedrix OS - Layer Taxonomy TableAgent Runtime and Agent Registry layers are the runtime home of core definitions
Synedrix OS - Technical Platform ThesisAgent registry model fields in §“Agent registry model” are the source schema for §2 above
Synedrix OS Observability Metrics SpecDefines the metric families that OS agents must emit and consume; os-agt-007 emits anomaly events; os-agt-008 consumes lineage records
Synedrix OS Memory Fabric SpecDefines the memory tiers, lifecycle and invariants that os-agt-010, os-agt-011 and os-agt-012 implement
Synedrix OS ADR-OS-002The decision that created the three memory control-plane agents registered here
Synedrix Trading Domain PackThe Trading pack owns its own market-data, strategy, consensus and execution infrastructure at Layers 11 and 12; this registry defines the OS agents it composes with
ADR-OS-010The autonomy ladder derived from the §4.1 declarations
ADR-OS-017The authority field conventions §2 and §4.1 apply
Synedrix OS ADR-OS-005The decision that widened §2’s owner enum and added §6.1’s Business Instance Extension and Capability Module agent contribution rules

9. Versioning

  • Version: 0.8
  • Supersedes: synedrix-os-agent-registry-v0.7
  • Status: Canonical OS agent registry
  • Applies to: Synedrix OS core platform, all domain packs, and Business Instance Extensions / Capability Modules
  • Next steps: domain packs to contribute their own agent entries using the §2 schema; the first real BIE or Capability Module implementation to inform the agent_id prefix convention flagged in §6.1 and ADR-OS-005 §8.

Canonical Reference

Registry Schema and Naming

Runtime and Evaluation

Architecture

Observability

  • Synedrix OS Observability Metrics Spec — Canonical metric families; os-agt-007 (Anomaly Detection) emits events defined in this spec, and the memory control-plane agents emit the memory metric families.


Synedrix OS · August 2026