Files
microdao-daarion/docs/opencode/sofiia_setup.md
Apple 67225a39fa docs(platform): add policy configs, runbooks, ops scripts and platform documentation
Config policies (16 files): alert_routing, architecture_pressure, backlog,
cost_weights, data_governance, incident_escalation, incident_intelligence,
network_allowlist, nodes_registry, observability_sources, rbac_tools_matrix,
release_gate, risk_attribution, risk_policy, slo_policy, tool_limits, tools_rollout

Ops (22 files): Caddyfile, calendar compose, grafana voice dashboard,
deployments/incidents logs, runbooks for alerts/audit/backlog/incidents/sofiia/voice,
cron jobs, scripts (alert_triage, audit_cleanup, migrate_*, governance, schedule),
task_registry, voice alerts/ha/latency/policy

Docs (30+ files): HUMANIZED_STEPAN v2.7-v3 changelogs and runbooks,
NODA1/NODA2 status and setup, audit index and traces, backlog, incident,
supervisor, tools, voice, opencode, release, risk, aistalk, spacebot

Made-with: Cursor
2026-03-03 07:14:53 -08:00

3.8 KiB
Raw Permalink Blame History

OpenCode ↔ Sofiia Integration

Sofiia (CTO agent) is exposed to OpenCode via the DAARION router tool execution endpoint. No extra adapter service is required for basic tool calls.


1. Environment variables

Variable Description Example
ROUTER_URL Base URL of the DAARION router http://localhost:8000 or http://router:8000
SUPERVISOR_API_KEY Optional. If set, router requires Authorization: Bearer <key> on /v1/tools/execute (secret)

Set these in your OpenCode environment or in the config that invokes Sofiia.


2. Agent endpoint (for OpenCode “invoke agent”)

  • Tool execution (primary):
    POST {ROUTER_URL}/v1/tools/execute

  • Chat / inference:
    POST {ROUTER_URL}/v1/agents/sofiia/infer

OpenCode can treat Sofiia as an agent whose “tools” are executed by POSTing to /v1/tools/execute with a JSON body (see below). There is no separate “invoke” URL; tool execution is the invocation.


3. Tool execution contract

Request:

POST /v1/tools/execute
Content-Type: application/json
Authorization: Bearer <SUPERVISOR_API_KEY>   # optional

{
  "tool": "risk_engine_tool",
  "action": "service",
  "agent_id": "sofiia",
  "env": "prod",
  "service": "gateway"
}

Response:

{
  "status": "succeeded",
  "data": { ... },
  "error": null
}

or on failure:

{
  "status": "failed",
  "data": null,
  "error": {
    "code": "tool_error",
    "message": "...",
    "retryable": false
  }
}

All parameters beyond tool, action, and agent_id are passed as the tools arguments (e.g. env, service, task_id, inputs).


4. Hello-world: one tool call

export ROUTER_URL="http://localhost:8000"
# Optional: export SUPERVISOR_API_KEY="your-key"

curl -s -X POST "$ROUTER_URL/v1/tools/execute" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $SUPERVISOR_API_KEY" \
  -d '{
    "tool": "backlog_tool",
    "action": "dashboard",
    "agent_id": "sofiia",
    "env": "prod"
  }'

Expected: "status": "succeeded" and "data" with backlog summary.


5. How to verify (one command)

From the repo root:

python3 ops/scripts/verify_sofiia_stack.py --router-url "$ROUTER_URL"

This checks:

  • Router /healthz (or /health)
  • Dry-run tool calls: risk_engine_tool.service, architecture_pressure_tool.service, backlog_tool.dashboard
  • Presence of governance cron entries in ops/cron/jobs.cron
  • Optional: supervisor health if SUPERVISOR_URL is set

Exit code 0 = all checks PASS.


6. Typical tools for OpenCode-driven flows

Tool Action Typical use
risk_engine_tool service, dashboard Risk score / dashboard
architecture_pressure_tool service, dashboard, digest Pressure index, weekly digest
backlog_tool dashboard, list, create, auto_generate_weekly Backlog ops
job_orchestrator_tool start_task e.g. task_id: "release_check" for release gates
oncall_tool incident_create, list Incidents
incident_intelligence_tool correlate, recurrence, weekly_digest Intelligence

OpenCode can “Ask Sofiia to run release_check” by calling /v1/tools/execute with tool: "job_orchestrator_tool", action: "start_task", task_id: "release_check", inputs: { "gate_profile": "staging" }.


7. Sofiia Control Console (optional)

A minimal web UI for chat + ops + nodes is provided by sofiia-console (NODA2 primary):

  • Chat: proxy to POST /v1/agents/sofiia/infer
  • Ops: Risk/Pressure/Backlog/Release check via POST /v1/tools/execute
  • Nodes: dashboard from config/nodes_registry.yml

See services/sofiia-console/ and runbook for deployment. OpenCode integration does not depend on the console; the console is for human operators.