agent-box
Run Claude Code and Codex CLI in isolated, reusable Podman workspaces.
One project. One shared container. Your agents, shell, tools, state, and detachable sessions stay together without giving the container your whole host.
Why agent-box?
AI coding agents are useful, but running them directly on your workstation gives them the same files, credentials, tools and processes that you have. agent-box runs Claude Code and Codex CLI inside a rootless Podman container while keeping the workflow close to local development:
- Workspace isolation — only the project root and the mounts you ask for are exposed.
- One box per project — Claude, Codex and
agent-box shellshare the same container. - Same paths as the host —
/home/you/code/projectis/home/you/code/projectinside the box too. - Persistent agent state — logins, settings and history stay in your host's
~/.claudeand~/.codex. - Detachable sessions — sessions run under tmux and survive a closed terminal or a dropped SSH connection.
- Nothing exposed by accident — every credential, host directory and optional capability is a switch you turn on.
Requirements
- Linux
- Python 3.11 or newer (standard library only)
- Rootless Podman 5.0 or newer — agent-box does not fall back to Docker
- Git
- Optional:
gh, to pass a GitHub token into the box
agent-box checks all of this before starting a box and prints the command that fixes anything missing. Details: Installation.
Installation
# 1. Install from PyPI.
uv tool install agent-box-tool
uv tool update-shell # if the installer reports PATH setup is needed
# 2. Reopen the shell if PATH changed, then configure integrations.
agent-box config
The distribution is agent-box-tool; the command stays agent-box.
pipx, public Git and editable installs are also supported.
- Log in with
claudeandcodexon the host; agent-box reuses those logins. - Start a session in your project. The workspace image is built automatically the first time, which takes a few minutes once.
cd ~/code/my-project
agent-box claude # or: agent-box codex
Shell completion, updating and uninstalling are covered in Installation.
Quick start
agent-box # the default agent (Claude unless you choose Codex)
agent-box shell # a shell in this project's box
agent-box attach # reattach a detached session (detach with Ctrl-\ d)
agent-box stop # end the box and every session in it
agent-box --host codex # run the host's CLI directly, without a container
agent-box doctor # check the box and its integrations
Options before the agent apply to one launch, for example
agent-box --mount ~/specs:ro --env DATABASE_URL claude. See
Usage for all of them.
How it works
flowchart LR
Host["Host workspace"] --> Launcher["agent-box"]
Launcher --> Box["Rootless Podman workspace box"]
Box --> Claude["Claude Code"]
Box --> Codex["Codex CLI"]
Box --> Shell["Shell"]
Claude --> Tmux["tmux sessions"]
Codex --> Tmux
Shell --> Tmux
State["~/.claude / ~/.codex"] -. host-backed state .-> Box
Project["Project root\nsame absolute path"] -. explicit bind mount .-> Box
Workspace box. The first command in a project creates its box; later commands join it. A different project gets a different box, and a box with no workload left exits and is removed. The box mounts the Git top level of the current directory and your agent state; any other host path, credential or device only when you enable it.
Host mode. --host runs your installed claude or codex directly, with
your own environment and credentials. Tracker, workflow and model routing
behave the same; container-only features such as mounts and the agent browser
do not apply.
Configuration. Built-in defaults, then your global
~/.config/agent-box/config.json, then the repository's .agent-box.json.
agent-box config edits settings and applies integrations. The first host launch
after a package update refreshes configured integrations automatically; unchanged
launches leave them alone. See compatibility and upgrades.
Documentation
| Page | What it covers |
|---|---|
| Installation | Requirements, setup, shell completion, updating, uninstalling |
| Usage | Sessions, options, mounts, environment, host mode, usage limits and status line |
| Configuration | The menu, defaults, project configuration, config ai |
| Workspace image | Included tools, optional groups, building and refreshing |
| Security model | What a box can reach and how it is hardened |
| Integrations | Tracker and workflow, browser, k3s, Telegram, credentials and more — all optional |
| Troubleshooting | Diagnostics, common problems, known limitations |
The full index, including design records for contributors, is in docs/.
License
MIT — see LICENSE.
Metadata
Release files for agent-box-tool 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| agent_box_tool-1.0.1.tar.gz | 910.3 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| agent_box_tool-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.4 MB
Release files / agent_box_tool-1.0.1.tar.gz
| Download URL | agent_box_tool-1.0.1.tar.gz |
|---|---|
| Size | 910.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fc8b577b3780a93bad225db25ab828d6de02e7e4b9d472775b2ab9e05bccffd3
|
|
BLAKE2b-256 checksum How to use checksums |
b2a4fb4de14c7281c8705c6eaa6a5b0b9405f4e0c05e2d062aeb403d63cac46b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.
Transparency logRelease files / agent_box_tool-1.0.1-py3-none-any.whl
| Download URL | agent_box_tool-1.0.1-py3-none-any.whl |
|---|---|
| Size | 446.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4578c0156c943a231bb09c840e64cdec9e5fe782f3713616009d64b88a01211a
|
|
BLAKE2b-256 checksum How to use checksums |
69639fad94c19aa4a389ecd6aabc781b2042b028f62f38cc2498edcca84edb21
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.
Transparency logSecurity for agent-box-tool 1.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for agent_box_tool-1.0.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.