seal

Get started

Markdown

Quickstart

Create a tenant, seal an OpenAI key and call the API through Seal from your app. About ten minutes, free.

You need Linux or macOS, an OpenAI API key, and Python, Node, Go or Rust. The free Developer plan covers it.

Create your tenant#

  1. Sign up

    Sign in at console.seal.zone and create a workspace.

  2. Name the tenant and choose an admin key

    Click New tenant. Pick a tenant id like acme. It can't change later.

    Your admin key signs every change. Seal never holds it.

    • Passkey. The easiest choice.
    • Key file. admin.key, for signing from scripts with --key-file.
  3. Choose who runs the enclave and how long risky changes wait

    Pick Seal runs it. For risky changes, None is fine for a trial. Lengthen it before real keys go in (why).

    Click Review and sign and sign with your admin key.

  4. Add a backup key

    Lose your only admin key and nobody can change the tenant again. Add a second one under Admins.

Set up the CLI#

Terminal
# with Python 3.9 or later
$pip install sealzone
# or with Rust
$cargo install sealzone-cli
Terminal
$seal login
$seal use acme

seal use picks your tenant and verifies its signed settings.

Grant an app#

An app is a name your blobs list. Here it proves who it is with an app key file.

Terminal
$seal grant app checkout key --generate --out checkout.key

The CLI opens the console for you to sign, or add --key-file admin.key. In the cloud, use your cloud's identity instead.

Seal your OpenAI key#

Terminal
$seal secret --to https://api.openai.com/v1 --app checkout > openai.blob

Paste your key at the hidden prompt. The CLI checks the enclave's attestation, then encrypts the key on your machine. The blob works only for checkout and only toward that URL. Store it anywhere. Sealing a secret lists the options.

Call OpenAI from your app#

Copy SEAL_TENANT from the console's Connect page or seal status.

Terminal
$export SEAL_ENDPOINT=https://acme.enclave.seal.zone:8443
$export SEAL_TENANT=acme@<root id>
$export SEAL_APP_KEY="$(cat checkout.key)"
$export OPENAI_API_BLOB="$(cat openai.blob)"

Open a session. You get a local URL and a stand-in key that only this process can use.

# pip install sealzone openai
import os, seal
from openai import OpenAI

with seal.session(os.environ["OPENAI_API_BLOB"]) as s:
    client = OpenAI(base_url=s.url, api_key=s.key)
    reply = client.responses.create(model="gpt-5", input="Say hello")
    print(reply.output_text)

The first call can take about a minute while your idle replica starts. Your code never touched the real key. The enclave added it on the way out and masked any copy in the response. Telemetry in the console shows each step.

Next#