outpost is a sandbox for letting AI coding agents run YOLO — without a permission
prompt on every step — because the container is the security boundary, not the agent’s
approval dialog. It runs one hardened Docker container per project on a remote Linux host,
and you work inside it over SSH — Helix, lazygit, tmux, your agents. Your laptop only runs
the SSH client. The whole tool is a single readable bash script: every step is a plain
docker command you can read and run by hand. No VS Code, no devcontainer spec, no hidden
lifecycle.
Terminal window
outpostprojectsnewweb-tnode# scaffold a project (Dockerfile + config)
outpostsetupweb# build the image, start the container
outpostshweb# drop into tmux inside; clone + run your code
A sandbox for YOLO agents
Let agents run without approving every step: the container is the boundary, not a
permission prompt a compromised dep can talk a model into. --cap-drop ALL,
no-new-privileges, a per-project network, no host Docker socket, a fork-bomb guard —
the blast radius is one disposable project.
Disposable containers, durable state
The container is throwaway; your workspace and home (dotfiles, agent auth + history,
node) live in named volumes. outpost update rebuilds on a fresh base and keeps them.
Your configs, your repo
Projects live in your own directory and git repo, separate from the tool. Manage them
with outpost projects new | edit | sync. Update the tool with a clean git pull.
Git that never leaks your key
Commits sign and authenticate through your forwarded SSH agent (ssh -A); the private
key never enters the container. Per-use consent via Secretive (macOS), ssh-add -c, or
a FIDO2 tap.
Services + public tunnels
A project’s Postgres/Redis/… run on the host engine, reachable by name. Expose dev
servers through per-project Cloudflare tunnels.
arm64 and amd64
Every baked-in tool ships for both architectures, so the base image builds and runs the
same on a cheap ARM VPS as on x86 — pick the host by price.
Readable, not magic
A single readable bash script you can read end to end — bin/outpost.
It builds an image and runs a container; that’s it. The load-bearing why lives in the
internals reference.