Skip to content

Operator Surface Capability Matrix

This document is the backend-first decision aid for operator surface scope.

It exists to separate three things that currently get mixed together:

  • backend implementation truth
  • runtime validation / evidence truth
  • frontend scope policy (V1, admin-only, observe-only, internal-only)

It is a current-runtime exposure matrix, not the sole authority for agent promotion maturity. For any task-promotion or “is this agent ready to own this lane?” decision, read this together with docs/architecture/AGENT_CAPABILITY_MODEL.md and docs/architecture/AGENT_CAPABILITY_IMPLEMENTATION_MATRIX.md.

Core Interpretation

V1 in the current repo mostly means:

  • the curated first console scope for operator-s-console
  • not the full limit of what orchestrator can route or expose

The orchestrator backend is broader than the current curated frontend scope.

That means:

  • a route or task can already exist in backend
  • the route or task can even have real success evidence
  • but still be intentionally hidden from a normal operator frontend until the operator-facing classification is explicit and stable

That still does not mean every implemented task should be promoted immediately. The intended promotion order is:

  1. agent capability reaches the required maturity target
  2. runtime evidence supports that claim
  3. operator-facing task promotion follows

This document must stay synchronized with the capability docs. It describes current exposure/runtime truth, not the finish line for agent maturity.

Current local-runtime note:

  • The separate public-proof/openclawdbot surface is retired in the active local runtime.
  • Public proof is now served from orchestrator-owned public routes.
  • /operator and /operator/* now serve the built operator-s-console bundle from orchestrator itself.
  • operator-s-console/ is the canonical tracked operator UI in the root workspace repo and the only supported /operator delivery path.

Documentation Maintenance

Whenever operator exposure changes, or when runtime truth materially changes what an operator can credibly rely on, update this file together with:

  • AGENT_CAPABILITY_MODEL.md
  • AGENT_CAPABILITY_IMPLEMENTATION_MATRIX.md
  • ../reference/task-types.md
  • ../reference/api.md

If the backend becomes broader than the current frontend on purpose, say that explicitly here rather than leaving the difference implicit.

Future portfolio-growth note:

  • when the public repo grows beyond the current catalog, new agents should come in one by one from deliberate external-catalog selection, not by bulk-import
  • no candidate should appear in operator surfaces until it owns a bounded lane and has operator-visible runtime evidence that justifies honest exposure

Decision Labels

  • Expose now Safe and credible for normal operator use today.
  • Admin-only Backend exists, but the runtime path is still low-confidence, side-effectful, or easy to misuse. Keep behind explicit admin intent.
  • Observe-only Surface status, telemetry, readiness, and run history. Do not present as a normal user-triggerable workflow yet.
  • Internal-only Never expose as a normal operator action. Runtime-only plumbing.

Source of Truth

Primary sources for this matrix:

  • workspace/orchestrator/src/index.ts
  • workspace/orchestrator/src/middleware/auth.ts
  • workspace/docs/reference/task-types.md
  • workspace/docs/reference/api.md
  • workspace/docs/architecture/AGENT_CAPABILITY_MODEL.md
  • workspace/OPENCLAW_CONTEXT_ANCHOR.md

1. Task Capability Matrix

The backend allowlist is broader than the current curated UI task surfaces. Normal operator UIs should follow the matrix below rather than the raw allowlist.

Task TypeBackend PresentRuntime TruthSafe for /operatorSafe for operator-s-consoleDecisionNotes
heartbeatYesinternal runtime maintenance pathNoNoInternal-onlyScheduled control-plane upkeep. Keep it out of normal operator task launch surfaces and inspect it only through diagnostics.
build-refactorYesapproval-gated; explicit bounded patch mode now executes real edits + optional verificationYesYesExpose nowSensitive and real. Keep approval language prominent and require explicit scoped payloads for code surgery.
market-researchYesconfirmed-working fetch lane with explicit URLs or derived allowlisted source plans; network posture still mattersYesYesExpose nowSurface source-plan guidance and network caveats, but treat this as a real research lane rather than a placeholder query capture.
doc-syncYesconfirmed control-plane path; most useful when pending changes existYesYesExpose nowSafe low-side-effect queue action.
nightly-batchYeshistorical success exists; scheduler and downstream feeds still matterYesYesExpose nowKeep schedule/duplication caveat visible in both UIs.
drift-repairYeslocal smoke proved with real knowledge-pack and repair evidenceYesYesExpose nowOperator-facing repair lane is live; keep doc-health caveats visible rather than hiding the repair posture.
control-plane-briefYesfocused contract proof for bounded control-plane synthesisYesYesExpose nowCompanion-facing synthesis lane. Keep it bounded and machine-readable rather than turning it into a free-form dashboard scrape.
incident-triageYesfocused contract proof for ranked incident queue synthesisYesYesExpose nowExpose now as the bounded incident-priority lane rather than forcing operators to cluster incident pressure by hand.
release-readinessYesfocused contract proof for bounded release posture synthesisYesYesExpose nowExpose now as a release-governance lane. Keep the summary explicit about go, hold, or block and do not overstate it as deploy authority.
deployment-opsYesfocused contract proof for bounded deployment posture synthesisYesYesExpose nowExpose now as a deployment posture lane. Keep it read-only and explicit about rollback readiness, drift, and pipeline blockers rather than implying deploy authority.
code-indexYeslive canary proof for bounded code-index posture synthesisYesYesExpose nowExpose now as a read-only indexing and retrieval-readiness lane. Keep it explicit about bounded local coverage, freshness, and linkage limits rather than implying unrestricted Codex-style repo authority.
test-intelligenceYeslive canary proof for bounded multi-suite test posture synthesisYesYesExpose nowExpose now as a read-only test-intelligence lane. Keep it explicit about bounded local suite coverage, failure and retry evidence, and release-facing risk limits rather than implying CI execution authority.
compliance-reviewYeslive canary proof for bounded compliance posture synthesisYesYesExpose nowExpose now as a read-only compliance posture lane. Keep it explicit about policy/doc coverage, dependency evidence, and release-governance limits rather than implying audit or enforcement authority.
reddit-responseYesconfirmed-working drafting lane with deterministic local fallback and optional provider polishYesYesExpose nowAllow manual queue payloads, and keep the optional provider-polish caveat explicit without understating the core drafting lane.
send-digestYespartial; externally dependentYesYesExpose nowOperator-facing now, but outbound channel dependency remains real.
rss-sweepYesexternally dependentYesYesExpose nowExposed with config/network caveats, not as a guaranteed-success lane.
agent-deployYesapproval-gated; confirmed local deployment copy pathYesYesExpose nowSensitive lane now has a real operator profile; keep approval language prominent because it writes deployment surfaces.
security-auditYesconfirmed working in live sweepYesYesExpose nowWorker performs real repository/runtime inspection locally rather than a fake success wrapper.
system-monitorYesconfirmed working in live sweepYesYesExpose nowTargeted monitor passes are now user-runnable and grounded in real runtime/service-state analysis.
summarize-contentYesconfirmed working in live sweepYesYesExpose nowInline-content path is now a first-class operator task.
content-generateYesconfirmed working in live sweep with source-driven generationYesYesExpose nowSafe enough as a grounded content lane when source fields are explicit.
integration-workflowYesconfirmed working in live sweep with deterministic reroute/replay orchestrationYesYesExpose nowExposed with bounded default-plan plus shorthand-step guidance rather than implying a magical empty workflow.
normalize-dataYesconfirmed working in live sweepYesYesExpose nowExposed with structured input/schema expectations.
data-extractionYesinline lane proven; parser-backed file lanes implementedYesYesExpose nowExpose now with parser/format caveats rather than implying only inline extraction is real.
qa-verificationYesconfirmed working in live smokeYesYesExpose nowExposed with dry-run/live-check distinctions preserved.
skill-auditYesconfirmed working in live smokeYesYesExpose nowExposed as a bounded governance task profile.
startupYesinternal runtime taskNoNoInternal-onlyBoot path only. Must not become a user action.
doc-changeYesinternal runtime taskNoNoInternal-onlyWatcher/buffer plumbing only. Must not become a user action.

Task Policy Notes

  • public-triggerable means the trigger route accepts the task. It does not prove the downstream worker/service/dependency path is healthy.
  • All non-internal public-triggerable tasks now have explicit operator-facing profiles in OPERATOR_TASK_PROFILES.
  • Promotion does not erase runtime caveats. The operator-facing surfaces should expose those caveats rather than flattening every task into a “ready” button.
  • The next clean backend move is deeper runtime proof, not another round of catalog hiding.
  • Full-capability work should surface governed access gaps honestly. If an agent still lacks a required skill or tool for a task lane, show that as a readiness/policy problem rather than solving it by flattening permissions across the whole fleet.

2. Route Capability Matrix

This matrix is about backend route exposure, not current frontend implementation.

Route / FamilyRoleSafe for /operatorSafe for operator-s-consoleDecisionNotes
GET /operatorprivate operator consoleYesN/AExpose nowCanonical private operator-console entrypoint served from the built operator-s-console bundle by orchestrator.
GET /operator/*private operator console route familyYesN/AExpose nowSPA route family for the canonical private operator-s-console bundle, served by orchestrator.
GET /healthpublicYesYesExpose nowPublic shallow liveness only. Do not treat returned localhost helper URLs as browser targets.
GET /api/persistence/healthpublicYesYesExpose nowPublic dependency truth only, not full operator state.
GET /api/knowledge/summarypublicYesYesExpose nowSafe public summary; protected query is a separate surface.
GET /api/command-center/overviewpublic proofYesYesExpose nowPublic orchestrator-owned proof overview contract for the show-off surface.
GET /api/command-center/controlpublic proofYesYesExpose nowPublic orchestrator-owned control-lane summary for the proof page.
GET /api/command-center/demandpublic proofYesYesExpose nowPublic orchestrator-owned demand summary contract.
GET /api/command-center/demand-livepublic proofYesYesExpose nowPublic orchestrator-owned live demand snapshot contract.
GET /api/milestones/latestpublic proofYesYesExpose nowPublic orchestrator-owned latest milestone feed.
GET /api/milestones/dead-letterpublic proofYesYesExpose nowPublic orchestrator-owned proof-risk feed for blocked or at-risk items.
GET /api/openapi.jsonpublicOptionalOptionalObserve-onlyUseful for engineers and diagnostics, not a primary operator panel.
GET /api/auth/meviewerYesYesExpose nowAuth identity and role context.
GET /api/dashboard/overviewviewerYesYesExpose nowAggregate operator summary. Useful, but not stronger than its source routes.
GET /api/companion/overviewviewerYesYesExpose nowCanonical read-first companion status surface for plugins and channel clients.
GET /api/companion/catalogviewerYesYesExpose nowCanonical read-first companion task catalog surface.
GET /api/companion/incidentsviewerYesYesExpose nowCanonical read-first companion incident summary surface.
GET /api/companion/runsviewerYesYesExpose nowCanonical read-first companion recent-run brief surface.
GET /api/companion/approvalsoperatorYesYesExpose nowCanonical read-first companion approval summary surface. Keep operator role requirement explicit.
GET /api/health/extendedviewerYesYesExpose nowAuthoritative protected operator-health surface.
GET /api/tasks/catalogviewerYesYesExpose nowCanonical operator capability endpoint for task surfacing.
POST /api/tasks/triggeroperatorYesYesExpose nowCurated tasks only. Frontends should not assume the full allowlist is user-facing.
GET /api/tasks/runsviewerYesYesExpose nowFirst-class run visibility surface.
GET /api/tasks/runs/:runIdviewerYesYesExpose nowFull run detail / workflow graph / repair linkage surface.
GET /api/approvals/pendingoperatorYesYesExpose nowApproval inbox for sensitive or review-gated flows.
POST /api/approvals/:id/decisionoperatorYesYesExpose nowAction route; keep operator-only.
GET /api/incidentsviewerYesYesExpose nowCore incident queue / ledger surface.
GET /api/incidents/:idviewerYesYesExpose nowCore incident detail surface.
GET /api/incidents/:id/historyviewerYesYesExpose nowImportant lifecycle stream; not admin-only.
POST /api/incidents/:id/acknowledgeoperatorYesYesExpose nowLegitimate operator action, not just diagnostics.
POST /api/incidents/:id/owneroperatorYesYesExpose nowLegitimate operator action, not just diagnostics.
POST /api/incidents/:id/remediateoperatorYesYesExpose nowLegitimate operator action; better launched from incident context than a generic task list.
GET /api/agents/overviewviewerYesYesExpose nowCanonical agent truth surface: declaration, worker path, explicit serviceExpected/lifecycleMode/host service status, readiness, topology.
GET /api/memory/recallviewerYesYesExpose nowSafe with default redaction. Good for activity/knowledge/operator context.
POST /api/knowledge/queryoperatorOptionalYesExpose nowSafe operator workflow, but more naturally a deeper console page than the default overview/task rails.
GET /api/persistence/summaryviewerYesYesExpose nowStrong operator-facing persistence summary.
GET /api/skills/policyviewerYesYesExpose nowGood for both shells. Summary-level governance posture.
GET /api/skills/registryviewerOptionalYesExpose nowBetter fit for deeper governance pages than the default overview/task rails.
GET /api/skills/telemetryviewerOptionalYesExpose nowBetter fit for deeper governance and diagnostics pages than the default overview/task rails.
GET /api/skills/auditviewerOptionalYesExpose nowUseful now, but more diagnostic/governance detail than the default overview/task rails.
GET /api/persistence/historicalviewerNo by defaultNo by defaultObserve-onlyReal route, but not essential to either current operator surface until a historical ops page exists.
GET /api/knowledge/exportadminNoNoAdmin-onlyExport-heavy privileged route. Keep out of normal frontends.
GET /api/persistence/exportadminNoNoAdmin-onlyExport-heavy privileged route. Keep out of normal frontends.
POST /webhook/alertssigned ingestNoNoInternal-onlyIngest boundary only. Never a UI route.

Route Policy Notes

  • operator-s-console should not be forced to mirror every valid backend route.
  • GET /api/persistence/historical is valid backend truth, but it is still reasonable to keep it out of both current consoles until a historical ops use case is designed.
  • Export routes are real and supported, but they are privileged ops/admin surfaces, not day-to-day operator UI material.

3. Agent Capability Matrix

Agents should be judged on two separate axes:

  • can the backend route work to them?
  • has runtime evidence matured enough to trust their role-specific claims?

Do not confuse declared capability targets with current operator-safe maturity.

All declared agents should eventually become strong enough that this section is explaining trustworthy operator exposure for a fully capable portfolio, not a long-term excuse for permanent partial maturity.

AgentTask Lane(s)Backend StatusCurrent Maturity SignalSafe for /operatorSafe for operator-s-consoleDecisionNotes
doc-specialistdrift-repair, doc-sync aligned workPresentWave 1 gate closed for the current runtime slice; richer truth-spine uplift remains roadmapSummary onlyFull readiness / evidenceExpose nowHigh-value to surface. Keep action entrypoints contextual through tasks/incidents, not by “run agent” UI.
system-monitor-agentsystem-monitor, incident-triagePresentWave 1 gate closed for the current runtime slice; deeper operator-action fusion remains roadmapSummary onlyFull readiness / evidenceExpose nowStrong candidate for deeper operator visibility before broader task exposure.
security-agentsecurity-auditPresentWave 1 gate closed for the current runtime slice; broader remediation-closure uplift remains roadmapSummary onlyFull readiness / evidenceExpose nowSurface readiness and evidence, but do not oversell as a finished end-state trust auditor.
qa-verification-agentqa-verificationPresentWave 1 gate closed for the current runtime slice; broader acceptance coverage remains roadmapSummary onlyFull readiness / evidenceExpose nowBest surfaced through verification-focused task flows and run detail, not as a generic direct-agent runner.
integration-agentintegration-workflowPresentWave 1 gate closed for the current runtime slice; broader workflow productization remains roadmapSummary onlyFull readiness / evidenceExpose nowStrong observability target; task exposure should follow clearer workflow productization.
build-refactor-agentbuild-refactorPresentWave 3 gate closed for the current runtime slice; deeper applied-edit proof remains roadmapSummary onlyFull readiness / evidenceExpose nowBacking lane for one of the main operator tasks; current readiness now carries code-governance signals rather than a flat confirmed-worker label only.
market-research-agentmarket-researchPresentconfirmed worker path, external dependency caveats, and readiness now carries delta-capture evidenceSummary onlyFull readiness / evidenceExpose nowBacking lane for one of the main operator tasks.
operations-analyst-agentcontrol-plane-briefPresentfocused bounded synthesis lane with companion-facing contract proofSummary onlyFull readiness / evidenceExpose nowBest surfaced as the reusable control-plane brief source for operator, bridge, and channel consumers.
reddit-helperreddit-responsePresentservice/helper exists, community path is still degraded/external, and readiness now carries provider-posture evidenceSummary onlyFull readiness / evidenceExpose nowKeep queue/provider caveats explicit and treat reply drafting as a dependency-sensitive workflow, not a flat always-green lane.
content-agentcontent-generatePresentbackend lane proven with bounded operator profile, and readiness now carries publication-policy evidenceSummary onlyFull readiness / evidenceExpose nowExpose the bounded generation lane now, while keeping publishing and evidence caveats explicit.
data-extraction-agentdata-extractionPresentpartial by lane; inline source proven; readiness now carries artifact-coverage evidenceSummary onlyFull readiness / evidenceExpose nowGood visibility target; do not imply all artifact lanes are equally proven.
normalization-agentnormalize-dataPresentbackend lane proven, and readiness now carries comparison-readiness evidenceSummary onlyFull readiness / evidenceExpose nowSurface readiness first.
release-manager-agentrelease-readinessPresentfocused bounded synthesis lane with release-governance contract proofSummary onlyFull readiness / evidenceExpose nowBest surfaced as a release posture lane, not as a generic deploy button or unbounded release oracle.
deployment-ops-agentdeployment-opsPresentfocused bounded deployment-posture lane with live contract proofSummary onlyFull readiness / evidenceExpose nowBest surfaced as a deployment posture lane that stays read-only and approval-respecting rather than a deploy executor.
code-index-agentcode-indexPresentfocused bounded code-index lane with live canary proof and promoted runtime evidenceSummary onlyFull readiness / evidenceExpose nowBest surfaced as a local repo/index truth lane, not as an unrestricted generic repo operator.
test-intelligence-agenttest-intelligencePresentfocused bounded test-intelligence lane with live canary proof and promoted runtime evidenceSummary onlyFull readiness / evidenceExpose nowBest surfaced as a bounded test-evidence posture lane, not as an executor for tests, CI, or shell workflows.
compliance-agentcompliance-reviewPresentfocused bounded compliance lane with live canary proof and promoted runtime evidenceSummary onlyFull readiness / evidenceExpose nowBest surfaced as a policy/dependency posture lane that stays read-only and does not claim audit enforcement authority.
summarization-agentsummarize-contentPresentbackend lane proven, and readiness now carries operational-compression evidenceSummary onlyFull readiness / evidenceExpose nowSurface readiness first.
skill-audit-agentskill-auditPresentWave 3 gate closed for the current runtime slice; broader operator adoption remains roadmapSummary onlyFull readiness / evidenceExpose nowBest surfaced with governance/tool audit views.

Agent Policy Notes

  • All declared agents are valid to show in operator surfaces as long as the UI labels them honestly.
  • The risky mistake is not surfacing them. The risky mistake is surfacing them as equally mature.
  • /operator should stay at summary-level agent truth.
  • operator-s-console is the better place for full readiness, gap, topology, and relationship history views.
  • No current UI should imply “run this agent directly” unless the action is actually modeled as a safe task workflow.
  • Full capability should appear here as stronger readiness, richer allowedSkills[], and better evidence-backed task ownership, not as silent universal tool access for every agent.

4. Immediate Surfacing Policy

Use this policy until a stricter product split is chosen.

Private operator console (/operator and /operator/*)

Keep as the canonical private operator console:

  • auth identity
  • curated task trigger
  • approvals
  • quick health and incident action
  • summary agent truth
  • summary governance / skill policy
  • run detail only where it directly supports an operator action
  • deeper task run history and workflow replay
  • richer incident lifecycle and remediation detail
  • agent capability readiness and relationship windows
  • richer governance and skill surfaces
  • richer knowledge atlas and diagnostics
  • public proof page as a separate route family inside the same bundle

Current route contract:

  • /operator and /operator/* are served from the built operator-s-console bundle by orchestrator
  • protected routes remain orchestrator-backed under that console
  • route depth within the same console is the exposure distinction now, not a separate “minimal shell versus richer console” product split

Public proof boundary

Keep public proof separate from the private operator control plane:

  • /operator/public-proof is the public page path in the same operator-s-console bundle
  • it reads only orchestrator-owned public proof routes (/api/command-center/* and /api/milestones/*)
  • it must not collapse protected operator state into public proof payloads
  • it replaces the retired openclawdbot transport path without reviving a separate proof product boundary

Not for either normal operator surface right now

  • raw export routes
  • webhook ingest routes
  • internal runtime tasks
  • unprofiled task lanes promoted as ordinary buttons without operator-facing classification

5. Practical Next Moves

If we want to expose more backend capability without creating chaos, the correct order is:

  1. Add operator-facing task profiles for any proven backend task we want to make user-runnable.
  2. Decide whether that task belongs in the default overview/task rails, deeper console pages, or should remain visible only through runs/incidents/agents.
  3. Keep everything else visible through runs, incidents, agents, and governance until the operator workflow is explicit.

That keeps the backend broad, the frontend honest, and the operator experience trustworthy.

Built from the canonical repo docs and generated site source.