dev is
inside what the signature covers.
This page is the move from one to the other.
The two environments
dev and production are the only accepted values. Anything else is refused
before an envelope is built.
devis for building the integration. Records are permanently markeddev, and no counterparty can be handed them as production evidence.productionwrites to a permanent public record. A record cannot be withdrawn once it is written.
Set it explicitly
The two SDKs differ on the default, and the difference is worth knowing before you copy a snippet between them.- TypeScript defaults to
dev. An anchorer built with no signer and no subject also generates an identity for you and says so, loudly, on the way past. - Python has no default.
environmentis a required argument, so a Python service cannot inherit the wrong one by omission.
What production means
Three things change, and each one is a refusal rather than a warning you might miss:- Production refuses an auto-generated identity. Building an anchorer for
production without an explicit signer and subject raises
ProductionConfigErrorat construction, so a dev-mode identity cannot reach it by accident. - The environment is inside the signature. Nothing downstream can relabel a dev record as a production one. The value travels with the evidence.
- Retention stops being optional in practice. Anchoring in production with no log store warns that the bytes this commitment names are not being retained, and the anchor front can refuse the envelope.
Move an agent to production
- Create the production key in the console, with all three scopes. API keys and scopes covers what each one permits.
- Generate a signing seed for this agent and put it in your secret store. Load the same seed on every boot.
- Configure a log store that outlives the process, in object storage you control. Keep what you anchored has the shape.
- Change
environmenttoproduction, and deploy. - Build a pack for a short window and verify it yourself before anyone asks. The Quickstart ends with the two commands an auditor runs.
producer_id, such as
claims-triage-dev. Two reasons: an identity is its signing key, so a second
key under one name is read as a rotation, and a pack carries one environment.
A pack carries one environment
Thebundle command refuses to assemble a window that mixes dev and
production evidence for one agent. Mixing them in one deliverable would hand
the reader the job of noticing, and that is the reader whose whole task is
deciding what the evidence supports.
Separate agent names keep the two apart without anyone having to think about
it.
What to read next
Keep what you anchored
The store production expects, and the bucket it belongs in.
API keys and scopes
The key production needs, and the scope people forget.