Get started
MarkdownKey ideas
The handful of words Seal uses: secrets, blobs, sessions, tenants, apps, admins and enclaves, and how they fit together.
Secrets and blobs#
You seal a secret, like an API key or database password, to get a blob. Click each part below.
A blob reads seal1, then the tenant, the key version, the blob id and the sealed payload, separated by dots.
Tenant
The tenant that sealed it. Only acme's enclaves can open this blob. Another tenant's enclave, even one running the same code, can't.
The blob's policy says where the secret may go and which apps may use it. Anyone can read the policy. Only the key is encrypted. Store the blob anywhere; Seal keeps no copy. See Sealing a secret.
Sessions#
A session lets your app use a blob without opening it. The SDK proves which app it is and gets a local URL and a stand-in key. The enclave adds the real secret on the way to the upstream. The stand-in key works only on that process's connection. See Using a blob.
Tenants and admins#
A tenant is one set of sealed secrets with its own admins and settings. Its root id fingerprints its first admin keys, so the SDK refuses a look-alike tenant with the same name.
Only admin keys sign the tenant's settings: passkeys or key files, optionally two of three. Console workspace roles never sign anything.
Narrowing changes apply at once. Widening changes wait in public for the pending window, and any admin can cancel them. See Admins and changes.
Apps and identities#
A blob sealed for checkout opens only in sessions started by checkout. A grant says how a running copy proves it's checkout: a cloud identity, a GitHub Actions workflow, or an app key file. Adding a server means a new grant, not resealing. See Apps and identities.
Enclaves and the guardian#
The enclave runs in a hardware TEE, a part of the processor whose memory the host can't read. It's the only place a blob opens. Seal can run a replica of it, you can run your own, and the SDK fails over between them.
The SDK checks the chip's attestation, a signed report of which code runs, before sending anything. Replicas get keys from Seal's key guardian, which serves only released builds that are public in the log first. See Enclaves and attestation and Releases and the log.
Who holds what#
Root on your app's server can use the secret through the enclave while the app's identity is granted. It can never take the secret away. See What an attacker gets.