Containarium v0.71.0
Added
-
containarium code— run a coding agent ON a box, not on your laptop.
code installlands the toolchain on a box you already use, credential
delivered via the secrets store so no interactive login happens in a headless
box.code runthen starts the agent detached and streams its output back.It streams like a pipe but deliberately is not one: the run lives on the box
with its output captured to a log, and your terminal is a resumable reader
over that log. Close the laptop, lose wifi, Ctrl-C — the run continues, and
code attachresumes byte-exact. Verified live at 132,000 bytes across 25
forced mid-run disconnects. -
code_run/code_attach/code_status/code_stopMCP tools, so an
agent can drive a coding run rather than only a human at a terminal. These
return a bounded output window plusnext_offset; carrying that offset
forward is what makes an agent's reconnect lossless. -
Durable run records in
agent-box. A run's identity and outcome persist
beside its log, so a different agent-box instance — after a reconnect — can
still answer "is it alive?" and "how did it end?". Records carry a boot id, so
a PID the kernel may have reassigned across a reboot is never mistaken for a
live run. -
Runs record who authorized them, not only who they ran as.
-
Threat-detection sentry: security findings as first-class platform events,
a background detection loop, fence-probe (cross-tenant flow, deny-burst) and
known-bad-destination rules, plus webhook delivery and a findings triage
surface.
Fixed
-
A detached run's exit status is no longer lost when the connection drops.
The status was written by a goroutine inside agent-box, which dies with its
SSH connection — so every detached run reportedunknownforever, precisely
the case durable records exist for. The child now records its own outcome. A
run killed outright still reportsunknown: an OOM must stay distinguishable
from a clean exit. -
Framed capture no longer kills the run it is streaming.
--output-format stream-jsonsetcmd.Stdoutto anio.Writerrather than an
*os.File, soos/execinserted a pipe that died with agent-box and took the
child with it via SIGPIPE. Framing moved to the child's side of the fork. -
ssh-config syncwill not wipe a working config with a zero-host run. Both
the CLI and the MCP tool overwrote~/.containarium/ssh_configwith an empty
file — and reported success — when the control plane returned no containers. -
Agent-skill tokens are bounded by the dispatcher's own grant.
RunAgentSkillminted the skill manifest'sallowed_scopeswithout
intersecting them against the caller's, makingagents:runa universal upgrade
to any scope any installed skill declares.
What changed
Added
- code_run/attach/status/stop — let agents drive a coding run (#1703)
- record who authorized a run, not just who it ran as (#1700)
- mount-watchdog — recover a mount-dependency-killed containarium.service (#1317) (#1694)
- rows carry actor, token_id, org_id and run_id (#1678) (#1692)
- opt-in strict mode rejecting unscoped tokens (#1691)
- delegation claim so a derived agent token names the human (#1687)
- containarium code run/attach/status/stop — resumable reader (#1690)
- containarium code install — Claude Code onto an existing box (#1686)
- durable run records survive a dropped connection (#1684)
- webhook delivery + findings triage CLI/MCP surface (#1659)
- known-bad destination rule (mining pools) (#1657)
- fence-probe rules — cross-tenant flow + deny-burst (#1658)
- background detection loop in the daemon (#1656)
- SECURITY_FINDING as a first-class platform event (#1646)
Fixed
- refuse to wipe a working config with a zero-host sync (#1695)
- frame on the child's side so framed runs survive disconnect (#1702)
- record a run's exit status from the child, not the reaper (#1696)
- intersect agent-skill token scopes with the caller's own grant (#1683)
- give the ACME issuer email a config surface (#1616) (#1670)
- trust the incus bridge for PROXY protocol automatically (#1669)
Documentation
- document
containarium code— running the agent on the box (#1697) - PRDs for remote coding agent and agent governance, plus design note (#1681)
- design for the eBPF CI loading lane (#1663) (#1665)
- threat-detection sentry operator guide (#1662)
Internal
- cut v0.71.0 — containarium code, threat-detection sentry, agent governance (#1704)
- bump golang.org/x/crypto to v0.55.0 -> v0.56.0 (#1689)
- Bump the opentelemetry group with 2 updates (#1635)
- Bump cloud.google.com/go/compute from 1.66.0 to 1.67.0 (#1636)
- real two-org e2e for the fence-probe rules (#1664) (#1667)
- eBPF load path — build + real load/attach/traffic-evaluation lane (#1666)
Full diff: v0.70.0...v0.71.0
Containarium v0.71.0
The open-source, self-hostable, agent-native sandbox.
Binaries
Three binaries ship in this release:
| Binary | Where it runs | What it does |
|---|---|---|
containarium |
The host (and your laptop, for the CLI) | The platform daemon + CLI. create, list, expose-port, ssh-config, etc. |
mcp-server |
Your laptop | The platform MCP — outside-the-box admin (create_container, list_containers, expose_port, list_backends). Wire it into Claude Code / Cursor. |
agent-box |
Inside each Containarium container | The in-the-box MCP — shell_exec, read_file, write_file, etc. Reached over stdio, typically via SSH. |
Quick install (Linux host)
curl -fsSL https://raw.githubusercontent.com/footprintai/containarium/main/hacks/install.sh | sudo bashManual install (any binary, any platform)
# containarium CLI / daemon (Linux x86_64 example)
curl -L -o /usr/local/bin/containarium \
https://github.com/footprintai/containarium/releases/download/v0.71.0/containarium-linux-amd64
chmod +x /usr/local/bin/containarium
# Windows: client-only CLI (create/list/ssh/… against a remote daemon;
# the daemon/sentinel/tunnel subcommands are Linux/macOS only)
# PowerShell:
# curl.exe -L -o containarium.exe `
# https://github.com/footprintai/containarium/releases/download/v0.71.0/containarium-windows-amd64.exe
# platform MCP (your laptop, e.g. macOS arm64)
curl -L -o /usr/local/bin/mcp-server \
https://github.com/footprintai/containarium/releases/download/v0.71.0/mcp-server-darwin-arm64
chmod +x /usr/local/bin/mcp-server
# agent-box (drop into your container image, Linux x86_64)
curl -L -o /usr/local/bin/agent-box \
https://github.com/footprintai/containarium/releases/download/v0.71.0/agent-box-linux-amd64
chmod +x /usr/local/bin/agent-boxVerify checksums via SHA256SUMS.txt.
MCP client setup
Wire the platform MCP into Claude Code (~/.claude.json):
Wire agent-box for in-the-box file/shell ops:
{
"mcpServers": {
"containarium-box": {
"command": "ssh",
"args": ["user@your-box", "agent-box"]
}
}
}See README.md for the full agent-native walkthrough.
{ "mcpServers": { "containarium": { "command": "/usr/local/bin/mcp-server", "env": { "CONTAINARIUM_SERVER_URL": "http://your-host:8080", "CONTAINARIUM_JWT_TOKEN": "<your-token>" } } } }