iii Capability Bus
Thilke runs iii as the live capability bus for agent-adjacent services. It provides a discoverable worker/function/trigger surface for agents, dashboards, and bridge services while preserving durable sources of truth elsewhere.
Source of truth boundaries
thilke-agentdis the durable ADK-Rust run authority.- Gitea is authoritative for issues, branches, pull requests, and review status.
- Jujutsu/Git manifests are authoritative for recoverable code changes.
- Pathway/SQLite graph memory is authoritative for graph and memory state.
- Multica is a display and ingress adapter, not the source of truth.
- iii composes capabilities through named functions and traceable invocations.
Deployed services
| Service | Endpoint | Purpose |
|---|---|---|
thilke-iii.service | 127.0.0.1:3111, 127.0.0.1:49134 | iii engine, HTTP surface, worker websocket |
thilke-iii-worker.service | ws://127.0.0.1:49134 | Registers Thilke functions |
thilke-multica-bridge.service | 127.0.0.1:8093 | Routes eligible Multica events through iii |
The engine is installed from thilke/agent and configured at /etc/thilke-agentd/iii-config.yaml.
Durability posture
The engine no longer runs with --use-default-config. It uses source-controlled config with file-backed adapters mounted at /var/lib/thilke-agent/iii.
Current adapters:
iii-state:kv,file_based,/data/state_storeiii-stream:kv,file_based,/data/stream_storeiii-queue:builtin,file_based,/data/queue_storeiii-cron:kv,file_based,/data/cron_storeiii-observability: memory exporter for local traces, metrics, and logs
Anonymous iii telemetry is disabled with III_TELEMETRY_ENABLED=false. The engine runs with III_ENV=production.
If iii becomes multi-host, replace file-backed adapters with Redis/RabbitMQ per upstream iii guidance.
Registered Thilke functions
thilke.agent.health: checksthilke-agentdhealth.thilke.graph.search: calls Pathway GraphRAG search.thilke.multica.agent_map: exposes Multica-to-Thilke agent role mapping.thilke.agent.plan_issue: runsthilke-agentd plan-issueinto durable run mirrors.
Multica event path
sequenceDiagram
participant M as Multica UI/API
participant B as thilke-multica-bridge
participant I as iii engine
participant W as thilke-iii-worker
participant A as thilke-agentd
participant G as Gitea
M->>B: issue status/update event
B->>B: resolve role and Gitea target
B->>I: trigger thilke.agent.plan_issue
I->>W: invoke function
W->>A: thilke-agentd plan-issue
A->>G: read issue context
A->>A: write durable run mirror and proposed actions
W-->>I: run result
I-->>B: processed via iii
The path remains approval-gated. plan-issue creates context and proposed actions but performs no repository writes. Writes require explicit action approval and execute-approved.
Smoke validation
From /home/thilke/src/agent on the host:
scripts/smoke/iii-multica-process-next.sh
Expected output:
bridge_iii_enabled ws://127.0.0.1:49134
III_MULTICA_PROCESS_NEXT_OK <run-id>
Operations
Check services:
systemctl is-active thilke-iii thilke-iii-worker thilke-multica-bridge thilke-agentd
Inspect logs:
docker logs --tail 120 thilke-iii
journalctl -u thilke-iii-worker -n 120 --no-pager
Reinstall from source:
cd /home/thilke/src/agent
scripts/install-iii-services.sh