Docs

Own Your Agents · 02.04

Agent Commissioning: Provisioning an Identity

The mechanics behind bootstrap and spawn: how a durable agent identity gets bound to a runtime adapter and a credential vault.

CommissioningIdentity

commissionAgent: one function, every entry point

Whether an agent is created by agentis bootstrap, by an operator spawning a specialist from the dashboard, or by the import pipeline creating a new agent for a discovered harness, every path converges on the same function: commissionAgent. That convergence is deliberate — one place enforces every identity invariant, instead of three code paths that could each forget one.

Invariants enforced at commission time

InvariantWhat it prevents
Single orchestrator per workspaceCommissioning a second orchestrator-role agent in a workspace that already has one is rejected outright.
Valid reportsTo targetAn agent can't be commissioned reporting to an id that doesn't resolve to a real agent in the same workspace.
Harness config repairThe adapter's config is run through repairCliHarnessConfig before it's stored, catching malformed CLI config at creation time instead of at first dispatch.
Honest initial statusA commissioned agent lands offline or paused — never a false "ready" before its runtime has actually been registered.

What gets wired at birth

Beyond the bare identity row, commissioning optionally wires an agent into two more systems when they're configured: the MCP harness, so a CLI runtime like Codex or Claude Code calls Agentis platform tools natively in one invocation instead of a marker-based re-spawn; and the skill materializer, which writes the agent's Brain skill atoms out to .claude/skills/ in its harness working directory so the CLI loads them the same way it loads any other native skill.

A managed per-agent home directory is used as the working directory by default when no explicit project path is given — so a freshly commissioned agent has somewhere real to work from immediately, without an operator needing to hand-provision a folder first.

Continue