{"repo": "chaitin/agent-compose", "files": {"README.md": {"852ad328cec968f0e6e927eca26d88a1c3320ae1": {"t": 1785747244.381269, "n": 21076, "h": "ad21bece6fc9fbf7", "c": "
\n
\n
\n Website ·\n Demo ·\n 中文文档\n
\n\n**agent-compose is a daemon + CLI control plane that runs AI coding agents in isolated sandboxes.** You describe your agents in an `agent-compose.yml` file, and a long-lived daemon builds, runs, schedules, and proxies an isolated runtime for each one.\n\n## What is agent-compose?\n\nIf you know Docker Compose, the mental model is familiar: instead of declaring\ncontainers, you declare **agents**. Each agent picks a provider CLI — `codex`,\n`claude` (Claude Code), `gemini`, `opencode`, or `pi` — and the daemon gives it its own\nisolated sandbox with a workspace, then runs it on a prompt, a shell command, a\nschedule, or an event.\n\nYou manage the whole lifecycle with a Compose-style CLI (`up`, `run`, `ps`,\n`logs`, `down`), and everything is driven by one declarative file.\n\nConcretely, agent-compose provides:\n\n- A **declarative compose model** (`agent-compose.yml`) with `${ENV}` interpolation.\n- **Multi-provider guest agents**: Codex, Claude Code, Gemini, OpenCode, and Pi CLIs.\n- **Three runtime drivers**: `docker` (default), `boxlite` (microVM), and `microsandbox`.\n- A **scheduler** with `cron`, `interval`, `timeout`, and `event` triggers — or full inline JavaScript scheduler scripts.\n- **Event triggers and webhooks** for event-driven agent runs.\n- **Workspaces** provisioned from a local directory or a Git repository.\n- **MCP servers, reusable skills, and named volumes** per agent.\n\n## How it works\n\nThe **daemon** is the single source of truth: it owns persistence, scheduler\nexecution, runtime lifecycle, and control-plane APIs. The\n**CLI** is a thin client — it reads your local `agent-compose.yml`, validates it,\nand calls the daemon. The compose file describes *projects and agents*, not\nalready-running sandboxes. The **web UI** is a separate service\n([agent-compose-ui](https://github.com/chaitin/agent-compose-ui)) and is not\nhosted by the daemon.\n\nFor the full architecture, see [docs/design/agent-compose_design.md](docs/design/agent-compose_design.md).\n\n## Quick start\n\n### Option A — Run a server (recommended)\n\nThe one-line installer sets up the agent-compose daemon with Docker Compose on\nLinux amd64/arm64:\n\n```bash\ncurl -fsSL https://github.com/chaitin/agent-compose/releases/download/installer-latest/install.sh | bash\n```\n\nThe bootstrap selects the Linux amd64/arm64 installer and opens its bilingual\nTUI. The default installation directory is `/opt/agent-compose`; use `sudo`\nwhen the current user cannot write there. For automation, run\n`install --yes` and pass options explicitly.\n\nThe TUI resolves the selected Release and shows its exact backend, frontend,\nand guest image defaults. Changing the application version refreshes those\ndefaults; entering a complete image reference overrides only that image.\n\nThe base stack starts the daemon. The frontend is defined under the `with-ui`\nprofile, which the installer leaves off unless you answer yes to **Install web\nUI** (or pass `--with-ui`). Enabling it there persists `COMPOSE_PROFILES` in\n`.env`, so later `docker compose up -d` runs keep the frontend. To turn it on\nafterwards, from the installation directory printed by the installer:\n\n```bash\ncdWeChat Group | \n
\n
\n
\n Website ·\n Demo ·\n 中文文档\n
\n\n**agent-compose is a daemon + CLI control plane that runs AI coding agents in isolated sandboxes.** You describe your agents in an `agent-compose.yml` file, and a long-lived daemon builds, runs, schedules, and proxies an isolated runtime for each one.\n\n## What is agent-compose?\n\nIf you know Docker Compose, the mental model is familiar: instead of declaring\ncontainers, you declare **agents**. Each agent picks a provider CLI — `codex`,\n`claude` (Claude Code), `gemini`, `opencode`, or `pi` — and the daemon gives it its own\nisolated sandbox with a workspace, then runs it on a prompt, a shell command, a\nschedule, or an event.\n\nYou manage the whole lifecycle with a Compose-style CLI (`up`, `run`, `ps`,\n`logs`, `down`), and everything is driven by one declarative file.\n\nConcretely, agent-compose provides:\n\n- A **declarative compose model** (`agent-compose.yml`) with `${ENV}` interpolation.\n- **Multi-provider guest agents**: Codex, Claude Code, Gemini, OpenCode, and Pi CLIs.\n- **Three runtime drivers**: `docker` (default), `boxlite` (microVM), and `microsandbox`.\n- A **scheduler** with `cron`, `interval`, `timeout`, and `event` triggers — or full inline JavaScript scheduler scripts.\n- **Event triggers and webhooks** for event-driven agent runs.\n- **Workspaces** provisioned from a local directory or a Git repository.\n- **MCP servers, reusable skills, and named volumes** per agent.\n\n## How it works\n\nThe **daemon** is the single source of truth: it owns persistence, scheduler\nexecution, runtime lifecycle, and control-plane APIs. The\n**CLI** is a thin client — it reads your local `agent-compose.yml`, validates it,\nand calls the daemon. The compose file describes *projects and agents*, not\nalready-running sandboxes. The **web UI** is a separate service\n([agent-compose-ui](https://github.com/chaitin/agent-compose-ui)) and is not\nhosted by the daemon.\n\nFor the full architecture, see [docs/design/agent-compose_design.md](docs/design/agent-compose_design.md).\n\n## Quick start\n\n### Option A — Run a server (recommended)\n\nThe one-line installer sets up the agent-compose daemon with Docker Compose on\nLinux amd64/arm64:\n\n```bash\ncurl -fsSL https://github.com/chaitin/agent-compose/releases/download/installer-latest/install.sh | bash\n```\n\nThe bootstrap selects the Linux amd64/arm64 installer and opens its bilingual\nTUI. The default installation directory is `/opt/agent-compose`; use `sudo`\nwhen the current user cannot write there. For automation, run\n`install --yes` and pass options explicitly.\n\nThe TUI resolves the selected Release and shows its exact backend, frontend,\nand guest image defaults. Changing the application version refreshes those\ndefaults; entering a complete image reference overrides only that image.\n\nThe base stack starts the daemon. The frontend is defined under the `with-ui`\nprofile, which the installer leaves off unless you answer yes to **Install web\nUI** (or pass `--with-ui`). Enabling it there persists `COMPOSE_PROFILES` in\n`.env`, so later `docker compose up -d` runs keep the frontend. To turn it on\nafterwards, from the installation directory printed by the installer:\n\n```bash\ncdWeChat Group | \n
\n
\n
\n Website ·\n Demo ·\n 中文文档\n
\n\n**agent-compose is a daemon + CLI control plane that runs AI coding agents in isolated sandboxes.** You describe your agents in an `agent-compose.yml` file, and a long-lived daemon builds, runs, schedules, and proxies an isolated runtime for each one.\n\n## What is agent-compose?\n\nIf you know Docker Compose, the mental model is familiar: instead of declaring\ncontainers, you declare **agents**. Each agent picks a provider CLI — `codex`,\n`claude` (Claude Code), `gemini`, `opencode`, or `pi` — and the daemon gives it its own\nisolated sandbox with a workspace, then runs it on a prompt, a shell command, a\nschedule, or an event.\n\nYou manage the whole lifecycle with a Compose-style CLI (`up`, `run`, `ps`,\n`logs`, `down`), and everything is driven by one declarative file.\n\nConcretely, agent-compose provides:\n\n- A **declarative compose model** (`agent-compose.yml`) with `${ENV}` interpolation.\n- **Multi-provider guest agents**: Codex, Claude Code, Gemini, OpenCode, and Pi CLIs.\n- **Three runtime drivers**: `docker` (default), `boxlite` (microVM), and `microsandbox`.\n- A **scheduler** with `cron`, `interval`, `timeout`, and `event` triggers — or full inline JavaScript scheduler scripts.\n- **Event triggers and webhooks** for event-driven agent runs.\n- **Workspaces** provisioned from a local directory or a Git repository.\n- **MCP servers, reusable skills, and named volumes** per agent.\n\n## How it works\n\nThe **daemon** is the single source of truth: it owns persistence, scheduler\nexecution, runtime lifecycle, and control-plane APIs. The\n**CLI** is a thin client — it reads your local `agent-compose.yml`, validates it,\nand calls the daemon. The compose file describes *projects and agents*, not\nalready-running sandboxes. The **web UI** is a separate service\n([agent-compose-ui](https://github.com/chaitin/agent-compose-ui)) and is not\nhosted by the daemon.\n\nFor the full architecture, see [docs/design/agent-compose_design.md](docs/design/agent-compose_design.md).\n\n## Quick start\n\n### Option A — Run a server (recommended)\n\nThe one-line installer sets up the agent-compose daemon with Docker Compose on\nLinux amd64/arm64:\n\n```bash\ncurl -fsSL https://github.com/chaitin/agent-compose/releases/download/installer-latest/install.sh | bash\n```\n\nThe bootstrap selects the Linux amd64/arm64 installer and opens its bilingual\nTUI. The default installation directory is `/opt/agent-compose`; use `sudo`\nwhen the current user cannot write there. For automation, run\n`install --yes` and pass options explicitly.\n\nThe TUI resolves the selected Release and shows its exact backend, frontend,\nand guest image defaults. Changing the application version refreshes those\ndefaults; entering a complete image reference overrides only that image.\n\nThe base stack starts the daemon. The frontend is defined under the `with-ui`\nprofile, which the installer leaves off unless you answer yes to **Install web\nUI** (or pass `--with-ui`). Enabling it there persists `COMPOSE_PROFILES` in\n`.env`, so later `docker compose up -d` runs keep the frontend. To turn it on\nafterwards, from the installation directory printed by the installer:\n\n```bash\ncdWeChat Group | \n
\n
\n
\n Website ·\n Demo ·\n 中文文档\n
\n\n**agent-compose is a daemon + CLI control plane that runs AI coding agents in isolated sandboxes.** You describe your agents in an `agent-compose.yml` file, and a long-lived daemon builds, runs, schedules, and proxies an isolated runtime for each one.\n\n## What is agent-compose?\n\nIf you know Docker Compose, the mental model is familiar: instead of declaring\ncontainers, you declare **agents**. Each agent picks a provider CLI — `codex`,\n`claude` (Claude Code), `gemini`, `opencode`, or `pi` — and the daemon gives it its own\nisolated sandbox with a workspace, then runs it on a prompt, a shell command, a\nschedule, or an event.\n\nYou manage the whole lifecycle with a Compose-style CLI (`up`, `run`, `ps`,\n`logs`, `down`), and everything is driven by one declarative file.\n\nConcretely, agent-compose provides:\n\n- A **declarative compose model** (`agent-compose.yml`) with `${ENV}` interpolation.\n- **Multi-provider guest agents**: Codex, Claude Code, Gemini, OpenCode, and Pi CLIs.\n- **Three runtime drivers**: `docker` (default), `boxlite` (microVM), and `microsandbox`.\n- A **scheduler** with `cron`, `interval`, `timeout`, and `event` triggers — or full inline JavaScript scheduler scripts.\n- **Event triggers and webhooks** for event-driven agent runs.\n- **Workspaces** provisioned from a local directory or a Git repository.\n- **MCP servers, reusable skills, and named volumes** per agent.\n\n## How it works\n\nThe **daemon** is the single source of truth: it owns persistence, scheduler\nexecution, runtime lifecycle, and control-plane APIs. The\n**CLI** is a thin client — it reads your local `agent-compose.yml`, validates it,\nand calls the daemon. The compose file describes *projects and agents*, not\nalready-running sandboxes. The **web UI** is a separate service\n([agent-compose-ui](https://github.com/chaitin/agent-compose-ui)) and is not\nhosted by the daemon.\n\nFor the full architecture, see [docs/design/agent-compose_design.md](docs/design/agent-compose_design.md).\n\n## Quick start\n\n### Option A — Run a server (recommended)\n\nThe one-line installer sets up the agent-compose daemon with Docker Compose on\nLinux amd64/arm64:\n\n```bash\ncurl -fsSL https://github.com/chaitin/agent-compose/releases/download/installer-latest/install.sh | bash\n```\n\nThe bootstrap selects the Linux amd64/arm64 installer and opens its bilingual\nTUI. The default installation directory is `/opt/agent-compose`; use `sudo`\nwhen the current user cannot write there. For automation, run\n`install --yes` and pass options explicitly.\n\nThe TUI resolves the selected Release and shows its exact backend, frontend,\nand guest image defaults. Changing the application version refreshes those\ndefaults; entering a complete image reference overrides only that image.\n\nThe base stack starts the daemon. The frontend is defined under the `with-ui`\nprofile, which the installer leaves off unless you answer yes to **Install web\nUI** (or pass `--with-ui`). Enabling it there persists `COMPOSE_PROFILES` in\n`.env`, so later `docker compose up -d` runs keep the frontend. To turn it on\nafterwards, from the installation directory printed by the installer:\n\n```bash\ncdWeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n
\n
\n
WeChat Group | \n