8000 GitHub - dagger/container-use at refs/heads/main
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Development environments for coding agents. Enable multiple agents to work safely and independently with your preferred stack.

License

Notifications You must be signed in to change notification settings

dagger/container-use

 
 

Repository files navigation

Container use: Development environments for coding agents.

container-use

Containerized environments for coding agents. (📦🤖) (📦🤖) (📦🤖)

Experimental Discord

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.

container-use demo

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. Please submit issues and/or reach out to us on Discord in the #container-use channel.


Install

macOS (Homebrew - Recommended)

brew install dagger/tap/container-use

All Platforms (Shell Script)

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.

Building

To build the cu binary without installing it to your $PATH, you can use either Dagger or Go directly:

Using Go

go build -o cu ./cmd/cu

Using Dagger

dagger call build --platform=current export --path ./cu

Integrate Agents

Enabling container-use requires 2 steps:

  1. Adding an MCP configuration for container-use corresponding to the repository.
  2. (Optional) Adding a rule so the agent uses containarized environments.

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

Watch video walkthrough.

Add this to ~/.config/goose/config.yaml:

extensions:
  container-use:
    name: container-use
    type: stdio
    enabled: true
    cmd: cu
    args:
    - stdio
    envs: {}

First, install the MCP server by using the deeplink below (this assumes you have Cursor and Container-use already installed):

Install MCP Server

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 = {}

Examples

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 --dangerously-skip-permissions

Run with goose

goose run -i ./examples/hello_world.md -s

Run with Kilo Code in vscode

Prompt as in parallel.md but add a sentence 'use container-use mcp'

Watch your agents work

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

How it Works

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.

About

Development environments for coding agents. Enable multiple agents to work safely and independently with your preferred stack.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published
0