Prerequisites
- A Tinfoil account with Containers access (contact us for beta access)
- An organization created in the Tinfoil Dashboard (Containers is an org-level feature)
- A Docker image published to a container registry (e.g., GitHub Container Registry)
Step 1: Create a repo from the template
Tinfoil Containers Template
tinfoil-config.yml.
For a working example, see tanyav2/simple-container-tinfoil,
which has a minimal setup with a container, secrets, and routing for /health and /chat endpoints.
Step 2: Configure your container
Edittinfoil-config.yml in your new repo. At minimum, update the container image and the paths your app exposes:
tinfoil-config.yml
Step 3: Tag a release
Commit your config and push a Git tag:Step 4: Add secrets
If your container uses secrets (likeDATABASE_URL above), add them before deploying:
- Open the Tinfoil Dashboard
- Navigate to Tinfoil Containers > Secrets tab
- Click Add Secret, enter the name and value
- Secret values are encrypted and only accessible inside the enclave
Step 5: Deploy your container
- Go to the Deploy tab in the Containers section
- Enter a name for your container (lowercase, hyphens allowed — e.g.
my-api) - Select your repository — either enter
owner/repomanually or pick from your connected GitHub repos - The latest Git tag you just pushed (e.g.
v0.0.1) will automatically get selected. - Any env vars and secrets that your config contains will automatically show up.
- Click Deploy Container
Step 6: Wait for deployment
The dashboard shows your container as Deploying while the image is pulled and the enclave boots. This typically takes a few minutes to even 15+ minutes for enclaves with GPUs. Once it’s ready, the status changes to Running. If something goes wrong, it shows Failed.Step 7: Access your container
Once the status shows Ready, your container is live at:Updating your container
To deploy a new version, updatetinfoil-config.yml (e.g. change the image tag), commit, and push a new Git tag:
v0.0.2). Click Start Update.
To perform a zero downtime update, use the blue-green update flow instead.

