Container Use lets each of your coding agents have their own containerized environment. Go from babysitting one agent at a time to enabling multiple agents to work safely and independently with your preferred stack.
It's an open-source MCP server that works as a CLI tool with Claude Code, Cursor, and other MCP-compatible agents.
- 📦 Isolated Environments: Each agent gets a fresh container in its own git branch - run multiple agents without conflicts, experiment safely, discard failures instantly.
- 👀 Real-time Visibility: See complete command history and logs of what agents actually did, not just what they claim.
- 🚁 Direct Intervention: Drop into any agent's terminal to see their state and take control when they get stuck.
- 🎮 Environment Control: Standard git workflow - just
git checkout <branch_name>
to review any agent's work. - 🌎 Universal Compatibility: Works with any agent, model, or infrastructure - no vendor lock-in.
🦺 This project is in early development and actively evolving. Expect rough edges, breaking changes, and incomplete documentation. But also expect rapid iteration and responsiveness to feedback.
make
This will build the cu
binary but NOT install it to your $PATH
. If you want to build and install the binary into your $PATH
, run:
make install && hash -r
The make install
command will put cu
in your $PATH
. In order to use it, you will need to restart your terminal or run hash -r
to refresh your $PATH
(or equivalent for your shell).
The build uses the platform you are on by default. If you need to cross-compile you can use the TARGETPLATFORM
environment variables. For example TARGETPLATFORM=linux/arm64 make
to build for Raspberry Pi
or TARGETPLATFORM=darwin/arm64 make
to build for macOS Apple Silicon.
Enabling container-use
requires 2 steps:
- Adding an MCP configuration for
container-use
- (Optional) Adding a rule so the agent uses containarized environments.
Add the container-use MCP:
npx @anthropic-ai/claude-code mcp add container-use -- <path to cu> stdio
Save the CLAUDE.md file at the root of the repository. Alternatively, merge the instructions into your own CLAUDE.md.
curl -o CLAUDE.md https://raw.githubusercontent.com/dagger/container-use/main/rules/agent.md
Add this to ~/.config/goose/config.yaml
:
extensions:
container-use:
name: container-use
type: stdio
enabled: true
cmd: cu
args:
- stdio
envs: {}
curl --create-dirs -o .cursor/rules/container-use.mdc https://raw.githubusercontent.com/dagger/container-use/main/rules/cursor.mdc
The result of the instructions above will be to update your VSCode settings with something that looks like this:
"mcp": {
"servers": {
"container-use": {
"type": "stdio",
"command": "cu",
"args": [
"stdio"
]
}
}
}
Once the MCP server is running, you can optionally) update the instructions for copilot using the following:
curl --create-dirs -o .github/copilot-instructions.md https://raw.githubusercontent.com/dagger/container-use/main/rules/agent.md
Kilo Code
allows setting MCP servers at the global or project level.
{
"mcpServers": {
"container-use": {
"command": "replace with pathname of cu",
"args": [
"stdio"
],
"env": {},
"alwaysAllow": [],
"disabled": false
}
}
}
Example | Description |
---|---|
hello_world.md | Creates a simple app and runs it, accessible via localhost HTTP URL |
parallel.md | Creates and serves two variations of a hello world app (Flask and FastAPI) on different URLs |
security.md | Security scanning example that checks for updates/vulnerabilities in the repository, applies updates, verifies builds still work, and generates patch file |
Run with Claude Code
cat ./examples/hello_world.md | claude
Run with goose
goose run -i ./examples/hello_world.md -s
Run with Kilo Code in vscode
Prompt as in parallel.md
but added a sentence 'use container-use mcp'
Your agents will automatically commit to a container-use remote on your local filesystem. You can watch the progress of your agents in real time by running:
cu watch