tinfoil-containers-template. The template ships with a pre-built hello-world image, so there’s nothing to build — you’ll deploy a demo container to a real Tinfoil enclave, manage a secret, send a verified request, and see how updates work. To deploy from the terminal instead, see Managing containers from the CLI. By the end you’ll understand the moving parts well enough to swap in your own image.
Here’s what you’ll do:
- Create a repo from the template and review its
tinfoil-config.yml. - Release a version and add a secret (
GREETING_TOKEN). - Deploy the container to an enclave and make a verified request to it.
- Learn how to update the instance.
Prerequisites
- An organization in the Tinfoil Dashboard (Containers is an org-level feature).
- An active Tinfoil Containers subscription for your organization.
1. Create a repo from the template
Usetinfoil-containers-template to make a new repo: click Use this template → Create a new repository.
Give it any name you’d like, and make sure it’s public. The tinfoil-config.yml needs to be public so the instance can be independently verified — Tinfoil fetches it at deploy time to compute the enclave measurement, and your users’ SDKs fetch it (via the Sigstore transparency log) to check that the running enclave matches what you published. The Docker image itself can still be private — see Private images.
2. Read the tinfoil-config.yml
This is the file that defines your deployment. It’s already wired up:
tinfoil-config.yml
containers section defines a hello-world container, which points to a prebuilt Tinfoil image, tinfoil-containers-hello-world. It accepts an environment variable and a secret, then reports the message and whether the secret is present.
For now, leave it alone — we’ll customize it later. See the configuration reference for the full schema, with networking & routing, runtime & security, and example configs on their own pages.
3. Release a version
Releasing creates the Git tag, measures the image, signs the attestation, and publishes a GitHub release. The dashboard drives the whole flow, so you don’t need to touch the command line. The template includes the requiredtinfoil-release.yml and tinfoil-release-publish.yml GitHub Actions workflows. If you use a custom config repository, copy both workflows from the template before publishing your first release.
- Open the Tinfoil Dashboard and go to Containers → Repositories → select your repo that you just created. Note: you may need to install the Tinfoil GitHub App first.
- Edit the config. The dashboard renders
tinfoil-config.ymlas editable fields (resources, containers, env, secrets). The template config is already complete, so for this first release a trivial change (for example, theMESSAGEvalue) is enough. - Click Open Pull Request. The dashboard opens a PR on your repo with the config change. Review and merge it.
- Follow the Release steps shown in the dashboard to publish version
v0.0.1.
After the release runs, wait ~1 min before deploying — the tag won’t appear in the dashboard’s picker until the measurement is computed and the GitHub release is published.
Release manually with the GitHub CLI
Release manually with the GitHub CLI
Prefer the command line? Trigger the Tinfoil Release workflow directly:Or via the GitHub UI: Actions → Tinfoil Release → Run workflow → enter
v0.0.1.Two workflows run back-to-back: tinfoil-release.yml creates the tag, then auto-dispatches tinfoil-release-publish.yml, which runs measure-image-action to compute the enclave measurement and publish the release.4. Add the GREETING_TOKEN secret
The config declares a GREETING_TOKEN secret. That means we’ll have to add a value for it before deploying. Tinfoil Dashboard will refuse to deploy unless this secret exists. To add the value:
- Open the Tinfoil Dashboard
- Navigate to Tinfoil Containers → Secrets
- Click Add Secret, enter the name
GREETING_TOKENand any value - Save
5. Deploy
In the dashboard:- All Containers tab → New Container
- Enter a container name (lowercase, hyphens allowed — e.g.
hello-world) - Select your new repository (enter
owner/repomanually or pick from connected repos) - The
v0.0.1tag will auto-select - Confirm the env vars and secrets shown match your config
- Click Deploy Container
6. Update the instance
To roll out a change — new image digest, new env var, new path — edittinfoil-config.yml and release a new version, all from the dashboard.
-
Go to Containers → Repositories → select your repo and edit
tinfoil-config.yml. For example, change theMESSAGEenv var:tinfoil-config.yml - Click Open Pull Request, then review and merge it.
-
Follow the Release steps shown in the dashboard to publish
v0.0.2. -
Click Update on your container and select
v0.0.2. This triggers a blue-green update (no downtime).
Release manually with the GitHub CLI
Release manually with the GitHub CLI
After committing your config change:Or via the GitHub UI: Actions → Tinfoil Release → Run workflow → enter
v0.0.2.7. Make a request
Your container is live athttps://<name>.<org>.containers.tinfoil.dev. To test it out:
curl request checks connectivity but does not verify the enclave. Do not send sensitive data this way.
You should see your updated message:

