
容器环境
STDIO为编码代理提供隔离容器环境的工具
为编码代理提供隔离容器环境的工具
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.
git checkout <branch_name>
to review any agent's work.🦺 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. Please submit issues and/or reach out to us on Discord in the #container-use channel.
brew install dagger/tap/container-use
curl -fsSL https://raw.githubusercontent.com/dagger/container-use/main/install.sh | bash
This will check for Docker & Git (required), detect your platform, and install the latest cu
binary to your $PATH
.
To build the cu
binary without installing it to your $PATH
, you can use either Dagger or Go directly:
go build -o cu ./cmd/cu
dagger call build --platform=current export --path ./cu
Enabling container-use
requires 2 steps:
container-use
corresponding to the repository.Add the container-use MCP:
npm install -g @anthropic-ai/claude-code cd /path/to/repository claude mcp add container-use -- <full path to cu command> stdio
Save the CLAUDE.md file at the root of the repository. Alternatively, merge the instructions into your own CLAUDE.md.
curl https://raw.githubusercontent.com/dagger/container-use/main/rules/agent.md >> CLAUDE.md
To trust only the Container Use environment tools, invoke Claude Code like this:
claude --allowedTools mcp__container-use__environment_checkpoint,mcp__container-use__environment_file_delete,mcp__container-use__environment_file_list,mcp__container-use__environment_file_read,mcp__container-use__environment_file_write,mcp__container-use__environment_open,mcp__container-use__environment_run_cmd,mcp__container-use__environment_update
Add this container-use MCP config to ~/.aws/amazonq/mcp.json
:
{ "mcpServers": { "container-use": { "command": "cu", "args": [ "stdio" ], "env": {}, "timeout": 60000 } } }
Save the agent instructions for Container Use to your project root at ./.amazonq/rules/container-use.md
:
mkdir -p ./.amazonq/rules && curl https://raw.githubusercontent.com/dagger/container-use/main/rules/agent.md > .amazonq/rules/container-use.md
To trust only the Container Use environment tools, invoke Q chat like this:
q chat --trust-tools=container_use___environment_checkpoint,container_use___environment_file_delete,container_use___environment_file_list,container_use___environment_file_read,container_use___environment_file_write,container_use___environment_open,container_use___environment_run_cmd,container_use___environment_update
Add this to ~/.config/goose/config.yaml
:
extensions: container-use: name: container-use type: stdio enabled: true cmd: cu args: - stdio envs: {}
or use goose configure
and add a command line extension with cu stdio
as the command.
For the Goose desktop, paste this into your browser:
goose://extension?cmd=cu&arg=stdio&id=container-use&name=container%20use&description=use%20containers%20with%20dagger%20and%20git%20for%20isolated%20environments"
First, install the MCP server by using the deeplink below (this assumes you have Cursor and Container-use already installed):
Then, add the following rule, either at the root of your project or in your home directory (global).
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
Add the following to your Cline MCP server configuration JSON:
{ "mcpServers": { "container-use": { "disabled": false, "timeout": 60000, "type": "stdio", "command": "cu", "args": [ "stdio" ], "env": {}, "autoApprove": [] } } }
Include the container-use prompt in your Cline rules:
curl --create-dirs -o .clinerules/container-use.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 } } }
Codex
allows setting MCP servers with the new experimental Rust version available here.
In your ~/.codex/config.toml
, add the following:
[mcp_servers.container-use] command = "cu" args = ["stdio"] env = {}
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 |
cat ./examples/hello_world.md | claude --dangerously-skip-permissions
goose run -i ./examples/hello_world.md -s
vscode
Prompt as in parallel.md
but add 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
container-use is an Model Context Protocol server that provides Environments to an agent. Environments are an abstraction over containers and git branches powered by dagger and git worktrees. For more information, see environment/README.md.