Transparency
What the contracts enforce, where they are deployed, and how audited they are. With no token, the contracts are the proof this is a protocol.
LaCrew encodes an organization of AI agents as a tree of onchain accounts. Human roots sit at the top; a treasury streams allowances downward; every agent action passes a stack of policy modules before funds move; overages climb the reporting tree as escalations; and constitutional changes — hire, fire, budgets, policy upgrades — pass through governance that humans ultimately control.
Human root(s)
└── Treasury
├── Manager agent
│ ├── Worker
│ └── Worker
└── Manager agent
└── WorkerFive invariants hold everywhere, and the rest of this page is those invariants made concrete:
The normative surface is SPEC.md (v0.1.1 (draft)), rendered in full at /spec; this page is the summary.
Agents never call the treasury. An agent acts by proposing an intent to the EscalationRouter, which first checks the agent's session key (valid, unexpired, value within its cap, target allowed), then evaluates the node's policy stack to one of three verdicts:
Escalation is a purchase order, not a governance vote: operational spend never votes. Managers may auto-approve within their own policy bounds; anything beyond them terminates at a human root, whose approval is a signature from the user's own key path. Read the escalation flow.
IPolicyModule is the protocol's extension point — one view function, check(agent, target, value, data), returning a verdict. Modules stack per node through a PolicyStack: the first DENY wins, any ESCALATE is sticky, otherwise ALLOW. The reference modules:
| Contract | What it enforces |
|---|---|
PolicyStack | Composes modules per node: the first DENY wins, any ESCALATE is sticky, otherwise ALLOW. |
SpendCapPolicy | Escalates any spend over the per-agent (or default) cap. |
WhitelistPolicy | Denies calls to targets not on the list. |
RateLimitPolicy | Escalates once an agent's sliding-window action count reaches the max. |
TimeWindowPolicy | Denies actions outside the configured daily UTC window. |
Third parties extend the protocol by deploying their own module and binding it — never by forking. Binding is governor-gated, and an installed module is appended behind the stack the org already voted for, so a bought module can only ever narrow what the existing stack lets through.
LaCrew splits decisions into two regimes and refuses to confuse them. Operational actions — spend, execute, escalate — go through the policy stack and the escalation tree. Constitutional actions — hire or fire agents, change budgets, upgrade policy modules, admit humans — go through the GovernanceModule, in two risk tiers:
Seats are role-weighted: agent seats carry review authority, but human seats hold final say on high tier, and human seats can only be granted or revoked by an executed high-tier proposal — there is no key that can hand out a human seat. Two guarantees hold unconditionally: the last human seat cannot be revoked, and agent yes-weight never satisfies high tier — an org can be frozen, but never agent-run. Read the governance doc.
Session keys are scoped and expiring. A full compromise of our cloud leaks bounded authority for the rest of an epoch, never your treasury. Concretely: agents boot with ephemeral keys issued through SessionRegistry, each bounded by an expiry, a max value per action, and optionally pinned targets — and fail-closed, so a consumer that cannot read a session's full target list denies rather than allows. Root revocation never depends on the issuer: the root key can always kill a session.
The hosted cloud holds session keys only. It provisions agents and proposes intents, and it is architecturally incapable of taking user funds — revocation runs from the user's key, not ours. Read the security model, including the honest list of what is still scaffolding.
No professional audit report is published yet, so mainnet stays blocked and the chip stays orange. When the report ships it will be linked here.
The rule is mechanical, not aspirational: mainnet stays blocked in the deployments config until a report is published and linked here.
The protocol ships as 8 core contracts plus the 5 reference policy modules above, all Apache-2.0 in the public repo:
| Contract | What it enforces |
|---|---|
OrgRegistry | The org chart: a tree of human and agent nodes with reporting edges. Once a governor is set, structure changes are constitutional actions. |
Treasury | Holds org funds. Nothing pulls from it directly — allowances stream downward per node, and agents spend allowance through the router's finalize path. |
EpochStreamer | Payroll: streams fixed grants to configured nodes once per epoch. Budget changes can come from governance. |
EscalationRouter | The enforcement path. Every agent action is proposed here, checked against the session key and the node's policy stack; escalations climb the reporting tree toward the human root. |
GovernanceModule | Constitutional actions only: role-weighted seats, two risk tiers, a high-tier timelock, and a veto held by every funded human seat. The last human seat cannot be revoked. |
SessionRegistry | Bounded, expiring agent authority: each key carries an expiry, a max value, and optional pinned targets. The root key can always revoke, independent of the issuer. |
SessionScopes | Named scope bits a session carries (propose intents, spend within the whitelist), shared by the registry and the router. |
MarketplacePayments | Stablecoin settlement for marketplace listings, deliberately independent of the treasury: a purchase can never touch org allowances, and the platform fee is hard-capped onchain. |
Addresses per network below — a network with no table has nothing published yet, which is a different claim from having nothing deployed.
Live reference deployment after lacrew deploy --anvil. Local only, not a public network.
API unreachable. Start the cloud API and an Anvil deploy to populate live addresses.
| Contract | Address |
|---|---|
| OrgRegistry | pending |
| Treasury | pending |
| EscalationRouter | pending |
| GovernanceModule | pending |
First public testnet. Addresses publish here the moment the deployment lands in packages/core/deployments.
L2 testnet slot. Publishes from the same deployments config.
Blocked until an audit report is published. No exceptions.
Source: packages/core/deployments
There is no separate logging system to trust. Every consequential act emits an event, and indexing five families reconstructs everything that ever happened in an org:
| Family | Events | What it answers |
|---|---|---|
| Intents | IntentCreated IntentEscalated IntentResolved ActionExecuted | Every proposed action, how it climbed, and how it settled |
| Payroll | GrantUpdated EpochRun | Budget changes and every streamed epoch |
| Governance | ProposalCreated Voted ProposalExecuted ProposalVetoed ProposalDefeated | Constitutional decisions end to end, vetoes included |
| Sessions | SessionIssued SessionRevoked | Every grant and every kill of agent authority |
| Structure | NodeAdded NodeRemoved NodeReparented NodeActiveUpdated | Org-chart changes: hires, removals, reporting moves |