What is debug mode?
Debug mode lets you deploy a separate instance of your container with SSH access and logging enabled. This gives you a way to inspect the enclave runtime, troubleshoot startup issues, and test configuration changes without affecting your production container.When to use debug mode
- Container startup failures: SSH in to check why your application isn’t starting
- Configuration issues: Verify that environment variables and secrets are set correctly
- Runtime debugging: Inspect processes, network, and filesystem inside the enclave
- Testing changes: Validate a new config or image is working as expected before deploying to production
How it works
Debug containers are fully independent instances. They run on a separate domain and have their own lifecycle, so you can deploy, update, and delete them without touching production instances.
A container named
api can have both a production and a debug instance running simultaneously.
Deploying a debug container
- In Containers, click New instance
- Toggle Debug Mode on
- Select one or more SSH keys from your organization’s key list (see below)
- Configure the rest of the container as normal
- Click Create instance
Managing SSH keys
Before deploying a debug container, add your SSH public keys to the organization.Adding keys
- Go to the SSH Keys tab in the Containers section
- Click Add SSH Key
- Paste your public key
Connecting via SSH
Once your debug container is running, the dashboard shows the SSH connection command on the container’s card. It looks like:tindbg boot to boot them again with an edited configuration.
Using the debug toolbox
The shell starts in a home directory containingREADME.md, with a concise
command reference, and AGENTS.md, with instructions for coding agents. Both
vi and vim are available for editing files.
Start by checking the debug runtime and its containers:
sh, use bash. Omit -it when running
a noninteractive command.
Add a temporary SSH key from the toolbox
After connecting with an existing authorized key, you can grant another developer temporary access without restarting the toolbox. Add their public key to the toolbox’sauthorized_keys file:
Try a configuration change
The instance’s initial configuration is copied to~/tinfoil-config.debug.yml. Edit that file, then boot the debug runtime again:
tindbg boot replaces the workload containers and boots them again. Expect a brief
interruption to the debug instance. The toolbox remains available so you can
fix the configuration and retry if the boot fails.
Only the containers and networks sections take effect. Changing cvm-version,
cpus, memory, gpus, models, or volumes requires a new release and an
instance update. The config is validated with the same rules as production, so
ipc: host, missing digests, and disallowed capabilities are rejected here too.
Keep the tinfoil-debug-toolbox container in the file.
To discard your edits and restore the configuration used to create the debug
instance:
Run additional diagnostic tools
The toolbox itself is read-only and does not supportapt install. Run a
disposable container instead. Its container layer is writable, so you can
install packages and experiment without modifying the toolbox:
--rm flag deletes the diagnostic container and all installed packages when
you exit. Omit --rm and add --name debug-tools if you want to stop and resume
the same temporary environment:
Switching to production
Edits made withtindbg boot live only in the debug instance. Commit the changes
you want to keep to your repository’s tinfoil-config.yml (without the debug
toolbox container) and publish a release. Then, from the dashboard:
- On the debug container, click Update
- In the dialog, select the release and Switch to production
- The container deploys as a production enclave with debug access disabled
Using the CLI
The Tinfoil CLI handles the SSH key registry and the debug-mode deploy:tinfoil container list shows it.
