A per-tenant code-server + Odin Agent Runtime + workspace CLI, deployed on Hetzner-EU or the infrastructure you already control. Every commit, file write, and agent action gets a receipt.
The workspace is composed from three primitives, each with its own audit surface. They work together because they share the same governance contract — not because they're glued at the seams.
Per-tenant code-server container. Mounted workspace volume survives container restart. Operator-set basicAuth + session cookie. Reachable at code.<slug>.staging.odin-labs.ai.
Per-tenant Odin Agent Runtime. Skill manifest derived from the tenant's enabled hubs at provision time. 15 proven-core skills always loaded; opt-in beyond that.
HTTP bridge between Command Center (uid 1001) and code-server (uid 1000). The workspace CLI handles cross-uid file writes so work-order updates from CC land cleanly inside the workspace.
On-prem on Hetzner-EU (Amsterdam) by default. Or deploy on your own Kubernetes / bare-metal / VPC. Data never leaves the boundary you choose. Per-tenant network isolation is a structural property — not a runtime check.
Per-tenant network isolation — structural, not runtime
Doctrine source: rules 02 + 16 + 16c.
The Odin Agent Runtime lives inside the workspace, not outside it. Your devs run /deliberate or /multi-track inside their VS Code session. Every spawned sub-agent is bounded by the tenant's budget + skill manifest + per-tenant provider keys.
Where the runtime lives
The workspace doesn't bolt on audit. It emits AuditEvent at every governance boundary — file writes, agent spawns, model calls, BrainDB writes, policy approvals. The trail is queryable by actor, action, tenant, timestamp.
“VS Code session opened on code.demo-3.staging.odin-labs.ai”
“Cognitive council confidence 78% on OAuth2 ambition”
“src/auth/oauth2.ts created (124 lines)”
“Decision recorded: chose authlib over passport (rationale 18 chars)”
“Approved auth/oauth2 PR via Control Tower kanban”
“Committed feat/oauth2 to workspace git remote”
“Semantic recall: prior authlib decision surfaced for cross-team review”
“Session ended, transcript preserved in BrainDB”
Pick the path that fits your environment.
Related products