Catalog PyPI
PACKAGE EXPLORERView in registry

aicage

PyPI

Runs agentic coding assistants in docker containers

Versions collected1
Direct dependencies5From release 1.5.2
Last observed21 Oct, 10:06 UTC

README

Version 1.5.2 documentation

aicage

Give coding agents your project files, not your whole computer.

aicage runs AI coding agents in containers while you work on the same local project files.

Why use aicage?

Agents need deep access (read code, run commands, install dependencies). Their built-in safety checks are naturally limited.

Running agents in containers gives a hard boundary – with aicage the experience stays the same.

  • Work with the same project files as the agent
  • Configure shared folders, agent images, and runtime options
  • Same paths and user inside the container1
  • Pre-built and tested images
  • Automatic updates for agents and images

See Why cage agents? for the full rationale.

Built-in agents

Use one of these builtin CLI agents or add your own.

Amp CLI · ampAuggie CLI · auggie Claude Code · claude
Codex CLI · codexGitHub Copilot CLI · copilotFactory CLI · droid
Goose CLI · gooseKiro CLI · kiro-cli OpenCode · opencode
Qwen Code · qwen Mistral Vibe CLI · vibe

Quick start

Install:

pipx install aicage

First run

In your project directory, start the agent you want to use:

aicage <agent>

Accept the setup choices, then sign in or confirm that the agent is already signed in.

  • Prefer file-based credential storage or API keys; keyring-based auth does not work.
  • If sign-in fails, sign in with the agent on the host, then try again.

Use aicage in your IDE

Use your agent in your IDE while aicage runs it in a Docker container.

Visual Studio Code

  1. Install ACP Client.
  2. In the plugin settings, add your agent’s config from the Visual Studio Code configuration into the settings.json.

JetBrains

  1. Install AI Assistant.
  2. In the plugin’s settings, add your agent’s config from the JetBrains configuration as a custom ACP agent.
    Replace /path/to/aicage with the full path to aicage.

ACP Bridge for Amp, Claude, and Codex

These agents need one additional ACP bridge. Install the bridge for the agent you use:

# Run only the command for your agent.
npm install -g amp-acp
npm install -g @agentclientprotocol/claude-agent-acp
npm install -g @agentclientprotocol/codex-acp

In JetBrains, replace the bridge's /path/to/... in the config above with its full path.

Change a project's setup

Run aicage <agent> from the project directory to change the agent's container setup. Your IDE uses the saved project configuration.

Configuration menu

After aicage <agent> starts, you will see this setup overview:

Overview screen

The overview brings the most common choices together in one place:

  • Agent: the built-in or custom agent you want to run.
  • Bind Mounts: extra host files and directories the container should be able to access.
  • Base: the base image used for the agent image. The suggested default is best for most users.
  • Extensions: optional local additions that install tools or request extra host shares.
  • Docker Args: extra docker run arguments such as -e, -p, or --network.
  • Docker socket: lets the agent use Docker on the host when you explicitly enable it.
  • OK: saves the current project config for that agent and starts the container.

Common project changes

Bind mounts

Use Bind Mounts when the agent needs access to files or directories outside the project.

Docker args

To adjust how the container starts, open Docker Args in the setup screen.

Docker args

Use it for normal docker run arguments such as:

-e FOO=bar
-p 3000:3000
--network my-net

See Docker run pass-through args.

Extensions

Extensions let you add tools on top of an existing agent image. Quick start:

Extensions

git clone https://github.com/aicage/aicage-custom-samples.git $HOME/.aicage-custom

Then rerun aicage <agent> and select the extension in the setup screen. See Extensions.

Docker socket access

If you want the agent to run Docker commands, enable Docker socket in the setup screen.

Full documentation

The complete user documentation lives in the aicage.wiki.

Common scenarios

  • First-use setup issues:
  • On Windows:
    • Set git config --global core.autocrlf true on the Windows host to avoid line-ending diffs.
  • Pass arguments to the agent:
    • aicage <agent> resume <session-id>
  • Share additional host folders:
    • Use Shares or extension-provided shares in the setup UI.
  • Use proxies:
    • aicage forwards HTTP_PROXY, HTTPS_PROXY, ALL_PROXY, and NO_PROXY.
    • See CLI options.
  • Use host networking or custom networks:
  • On macOS with native Docker:
  • Add custom tools, agents, or base images:

Customization

aicage lets you customize images at three levels:

  • extensions: Add software and shared files/folders
  • agents: Add other agents
  • base images: Custom agent environments

The sample repo is a fast way to see working examples and copy a template.

Quick start:

git clone https://github.com/aicage/aicage-custom-samples.git $HOME/.aicage-custom

Then run any agent:

aicage <agent>

These are only samples. Use them to learn the structure, then replace or edit them with your own definitions. aicage detects whatever you place under ~/.aicage-custom and offers it during selection.

Extensions can install tools and request additional host mounts.

After adding or changing custom definitions, restart aicage.

Image updates are handled automatically; see Updates.

Why cage agents?

You should not have to choose between approving every small step and giving an agent access to your whole computer.

Agent restrictions and approval prompts get in the way of real work. But turning them off gives the agent access to everything your user account can read or change, far beyond the project.

aicage gives the agent a container with your project files and only the extra access you choose. The rest of your computer stays out of reach.

Footnotes

  1. On Windows, run aicage from WSL for matching paths and user. Native Windows paths are mounted under /mnt/<drive> and the container runs as root. ↩

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
1.5.210 Oct 20265

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 10:06 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:fd58be567328a79d7f5d5c78dc496989777dada6136db209e9570d8b7404eec9