What becomes permanent
Live records cannot be withdrawn. When you run an agent against Live:- Each stamp is published to the public record, and stays there.
- A
payloadRefyou pass on a call is signed as given and published with the record. Keep a bucket path, a tenant ID or a person’s name out of it. - A
case_idis committed permanently and indexed, so keep it opaque.
Prerequisites
Before you begin, you must have:- An agent that anchors and builds a verifying pack in the Sandbox. See the Quickstart.
- An owner or admin role in your organization on
console.sanning.io. - S3-compatible storage for your log store, so the bytes outlive the process.
Switch to Live
- Open
console.sanning.io. If a strip across the top says Sandbox, select Switch to live. - Open Settings, API keys and select Create key.
- Name the key and leave Verify unchecked.
- Copy the key. A Live API key starts with
sanning_prod_, and the console shows it once. - Replace
SANNING_API_KEYin your service’s secrets with the new key.
environment: "production". Live refuses a
Sandbox API key with SANDBOX_KEY_ON_LIVE, so a leftover Sandbox key fails loudly
instead of writing to the wrong place.
Enroll the Live agent fresh
Your Sandbox agent and your Live agent are separate identities. The Sandbox does not carry its agents or signing keys across, so the Live agent enrolls from scratch.- Generate a new signing seed. Use the same commands as in the Quickstart.
- Store it in your secret store as
SANNING_SIGNING_SEED, replacing the Sandbox seed. - Run your agent. On the first anchor, the SDK enrolls the new signing key, and the agent appears on the Agents page in Live.
Keep your records in a store that outlives the process
Live refuses an envelope that does not say where its bytes are kept:no-log-store(400): the envelope names no log store.local-log-store(400): apayloadRefyou passed is afile:locator, which is one machine’s disk and not a retained store.
FsLogStore passes both checks, because the SDK signs an opaque locator for
it. It still keeps the bytes on one machine’s disk, and a commitment to bytes you can no
longer produce cannot be checked. For Live, point the anchorer at S3-compatible storage.
Keep what you anchored shows the store, and
Set up the bucket shows the credentials.
Remove any explicit environment
The quickstart sets noenvironment, and neither does your Live service. A Live API
key makes the SDK sign "production". If your code passes environment: "dev", the SDK
accepts it with a Live API key and signs a Sandbox record that no reader can count as
evidence. Delete the argument.
Check the first Live pack
- Run the agent so that it anchors at least one record.
- Wait for the interval containing the record to seal and publish. A Live stamp takes minutes, not seconds. The witness explains how long.
-
Build a pack for a short window:
-
Verify the pack with a gateway, so the check reaches the public record:
claims-triagewith your agent’s name.- The dates with the day you anchored.
BUCKETwith the bucket that holds your log store. Reading it needs three S3 variables in your shell, andSANNING_SIGNING_SEEDmust not be set, becausebundlerefuses ans3://log store when it is. See Keep what you anchored.GATEWAY_URLwith a gateway you choose. See Verify at the command line.
VERIFIED and exits 0. If it prints SANDBOX and exits 5, some
record in it was signed as Sandbox: check that the service is using the Live API key and
passes no environment. A pack carries one mode, so bundle refuses a window that
mixes the two.
Roll back
If a Live service misbehaves, switch the secrets back to the Sandbox API key and seed. Records already written to Live stay. The Sandbox stays as you left it, until its 30-day retention or a Reset.Sandbox and live
What changes between the two modes.
Keep what you anchored
The store Live expects.