A release kernel drops its dev identity (ADR-0040), so a fresh box has the law loaded but zero principals. Genesis is the one deliberate host act that founds the first ones. It is fail-closed and one-shot per workspace.
What it does
The genesis.sh wrapper (bash genesis.sh) runs the ceremony end to end:
opbox initiate— creates the workspace and the foundingOWNERactor, and mints a standing root bearer. The bearer is printed once to stdout — capture it. This is your admin credential.- Mint the Chief of Staff. Acting as the owner, it creates the CoS agent (
org.agent.create role=COS) with autonomy 3, the org pack, and the full verb scope — so the CoS can build the rest of the org. The CoS resolves to OWNER tier over the MCP door (and only there). - Mint the bounded chat-agent. Acting as the CoS over MCP, it creates a
WORKERchat-agent with autonomy 1 and aMEMBERtier — the least-privilege identity the public chat runs under. Its key is written to.envasOPBOX_AGENT_KEY, andagent-chatis recreated with it.
After genesis, every other person is a principal minted in-app within the granted authority — never by re-running this.
Why the CoS, then the WORKER
org.agent.create is itself a sensitive, owner-tier verb that needs autonomy 2+, and a roster WORKER can
only be created by the CoS. So the ceremony mints a fully-empowered CoS first, then has the CoS mint the
bounded WORKER the chat actually uses. The OWNER Chief-of-Staff key never backs the public chat - that is the
no-amplification rule.
Signing in
Genesis founds a bearer, not a password. To enable email + password login, the owner sets their own
credentials once via the auth.credentials.set verb (subject to the password policy: at least 10 characters
and two character classes). After that, POST /auth/login returns a SESSION token, which is what the
chat signs in with.