sandbox user, who has passwordless sudo and can run Docker. Your home directory, /workspace, and anything you install persist on the encrypted workspace volume across restarts.
Running your coding agent
Popular coding agents come preinstalled, along with language toolchains, language servers, linters, databases, and cloud CLIs. They start with their normal provider selection and sign-in, so you can use your existing vendor account, as long as your Perimeter lets the Bunker reach that vendor. To use Tinfoil’s private inference instead:-
In your Perimeter, add the Tinfoil connection, keep its name
tinfoil, and save your Tinfoil API key there. - Grant the Bunker access to it, including Inference → Generate responses, List models, and, for Claude Code, Count input tokens.
-
Copy the connection’s substitution key (it starts with
tfm_tinfoil_) and run this inside the Bunker: - Choose Tinfoil in your agent, then restart any agent that was already running.
Agents that read skills (Claude Code, Codex, OpenCode, and others) also get a
monitor skill, so they know how to discover connections and ask you for access instead of asking for credentials.
Installing more software
Useapt, Docker, or Nix as you would on any Ubuntu machine:
Web terminal
Choose Open in browser on a Bunker’s row in the dashboard for a shell in a browser tab. It is available when the Bunker and its Perimeter both use keys synced with your passkey. The web terminal runs onterminal.tinfoil.sh. After you unlock your keys with your passkey, the page:
- Verifies the Perimeter’s attestation and opens an encrypted session to it, authenticated with your owner key.
- Fetches the Bunker’s attestation through the Perimeter and verifies it in the browser, including the Bunker image’s Sigstore provenance.
- Opens a second encrypted session, to the Bunker itself, inside the first. The Perimeter relays this session but sees only ciphertext.
- Unlocks the workspace if needed, then starts your shell.
SSH
tinfoil attest-ssh <name> --install writes a normal SSH profile, so anything that reads your SSH config works with the Bunker’s name: ssh, scp, rsync, and remote-SSH editor extensions. The connection runs through the Perimeter, but SSH encrypts it end to end, and the profile pins the Bunker’s attested host key.
Perimeters
Your Bunker reaches the outside world only through its Perimeter. All TCP traffic, including DNS lookups, goes through an encrypted tunnel to the Perimeter, which then applies your policy. Traffic that matches no allowed connection is refused. Inside the Bunker, themonitor command shows what the Perimeter allows:
monitor policy propose; you approve or deny each request in the Perimeter. See Perimeters and access control.
Remote desktop
sandbox-desktop starts a graphical Xfce desktop, streamed to your browser. It uses Selkies over WebSockets rather than the VNC protocol, and supports audio.
Start it inside the Bunker, as the sandbox user:
tmux keeps the desktop alive when you disconnect. Then forward its port from your computer and open http://127.0.0.1:6080/:
Stop the desktop with Ctrl-C or Log Out in Xfce.