From b9677e2ad054505a1b37873de3d0d20e1ed4770d Mon Sep 17 00:00:00 2001 From: Marco D'Alia Date: Sat, 6 Jun 2026 10:09:09 +0100 Subject: [PATCH 1/3] Add Codex plugin (.codex-plugin) to drive AgentBox from Codex --- .codex-plugin/assets/icon.svg | 15 ++++++++ .codex-plugin/plugin.json | 27 ++++++++++++++ .codex-plugin/skills/agentbox/SKILL.md | 49 ++++++++++++++++++++++++++ 3 files changed, 91 insertions(+) create mode 100644 .codex-plugin/assets/icon.svg create mode 100644 .codex-plugin/plugin.json create mode 100644 .codex-plugin/skills/agentbox/SKILL.md diff --git a/.codex-plugin/assets/icon.svg b/.codex-plugin/assets/icon.svg new file mode 100644 index 0000000..db87296 --- /dev/null +++ b/.codex-plugin/assets/icon.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json new file mode 100644 index 0000000..88b5d1a --- /dev/null +++ b/.codex-plugin/plugin.json @@ -0,0 +1,27 @@ +{ + "name": "agentbox", + "version": "0.1.0", + "description": "Drive AgentBox from Codex on the host: create isolated sandboxes for coding agents, run them in parallel, queue background jobs, and push commits safely through the host relay.", + "author": { + "name": "Marco D'Alia" + }, + "homepage": "https://github.com/madarco/agentbox", + "repository": "https://github.com/madarco/agentbox", + "license": "MIT", + "keywords": [ + "codex", + "agentbox", + "sandbox", + "docker", + "hetzner", + "daytona" + ], + "interface": { + "displayName": "AgentBox", + "shortDescription": "Run coding agents in parallel, each in its own sandboxed box.", + "composerIcon": "./assets/icon.svg" + }, + "skills": [ + "./skills/" + ] +} diff --git a/.codex-plugin/skills/agentbox/SKILL.md b/.codex-plugin/skills/agentbox/SKILL.md new file mode 100644 index 0000000..2859eac --- /dev/null +++ b/.codex-plugin/skills/agentbox/SKILL.md @@ -0,0 +1,49 @@ +--- +name: agentbox +description: "Spin up isolated sandboxes (\"boxes\") for coding agents, run them in parallel, queue background runs, and push commits safely through the host relay. Use when the user wants to run Codex / Claude Code / OpenCode in a sandbox, start more boxes, attach to a running box, or otherwise operate the `agentbox` CLI on their host machine." +--- + +# AgentBox (host-side) + +You are operating on the **user's host machine** (laptop / dev workstation), not inside a box. Use the `agentbox` CLI to provision isolated sandboxes for coding agents and to attach to them. + +Requires the CLI: `npm -g install @madarco/agentbox` then `agentbox install` (one-time). Needs Docker for local boxes; cloud providers are optional. + +## What AgentBox is, in one paragraph + +AgentBox spins up one isolated sandbox per agent run — a local Docker container (default), a Hetzner VPS (`--provider hetzner`), a Vercel Sandbox (`--provider vercel`), an E2B sandbox (`--provider e2b`), or a Daytona cloud sandbox (`--provider daytona`). Each box has its own `/workspace`, but the host's `.git/` is shared, so commits made inside the box land on the host immediately. The agent inside the box has **no host credentials** — `git push`, opening host URLs, capturing checkpoints, and other host-side operations flow through a small host process called the **relay** that runs alongside the CLI. + +## Core commands + +- `agentbox create` — provision a box and stop (ready, nothing launched). Flags: `-n `, `--provider docker|hetzner|vercel|e2b|daytona`, `--attach`, `-w `, `--snapshot `. +- `agentbox codex` — provision a box and launch **Codex** inside it, in a detachable tmux session. (`agentbox claude` / `agentbox opencode` launch those agents instead.) +- `agentbox codex attach ` — re-attach your terminal to a running agent session. +- `agentbox shell ` — open an interactive shell inside a box. +- `agentbox dashboard` — box list plus the selected box's live agent session; quickly switch between agents. + +## Run agents in parallel + +```sh +agentbox codex # box 1, attaches your terminal +# Ctrl+a d to detach (the agent keeps running) +agentbox codex # box 2 +agentbox dashboard # switch between boxes +``` + +## Access a box + +- `agentbox url ` — open the box's web app on a host URL tunnel. +- `agentbox screen ` — open the box's in-box browser via noVNC. +- `agentbox code ` — open the box in VS Code / Cursor (Dev Containers). + +## Lifecycle & sync + +- `agentbox stop ` / `agentbox start ` — preserves the upper volume (node_modules included). +- `agentbox pause ` / `agentbox unpause ` — freeze / resume in under a second. +- `agentbox checkpoint` — capture / list warm box state to start new boxes from in <1s. +- `agentbox download ` — sync a box's `/workspace` back to the host (gitignore-aware). +- `agentbox destroy ` — destroy a box and discard its upper volume. + +`` is optional almost everywhere — it defaults to the current project's box, or use its short index (`1`, `2`, …), name, or id prefix. Run `agentbox --help` for options. + +Full docs: https://agent-box.sh/docs From c7185bfd4187cdda73ae5879b431ce9500eee55d Mon Sep 17 00:00:00 2001 From: Marco D'Alia Date: Sat, 6 Jun 2026 10:12:04 +0100 Subject: [PATCH 2/3] fix() fixed times --- apps/cli/src/wizard.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/cli/src/wizard.ts b/apps/cli/src/wizard.ts index 8535d6f..315c326 100644 --- a/apps/cli/src/wizard.ts +++ b/apps/cli/src/wizard.ts @@ -375,9 +375,9 @@ function rebuildMinutesFor(provider: ProviderName): string { case 'daytona': return '7'; case 'vercel': - return '25'; + return '5-10'; case 'hetzner': - return '35–50'; + return '7-10'; default: return '1'; } From 027439da3f4c3c6e43e16c15d977df69846e4255 Mon Sep 17 00:00:00 2001 From: Marco D'Alia Date: Sat, 6 Jun 2026 10:57:48 +0100 Subject: [PATCH 3/3] fix(codex-plugin): symlink agentbox-info skill to dedup host reference The codex plugin hand-copied a condensed version of the canonical host-side skill, which Bugbot flagged as already drifting from the source. Mirror the existing repo-root `skills/agentbox-info` pattern: symlink the codex plugin skill to the single source of truth at apps/cli/share/host-skills/agentbox-info, so the two can never drift. --- .codex-plugin/skills/agentbox-info | 1 + .codex-plugin/skills/agentbox/SKILL.md | 49 -------------------------- 2 files changed, 1 insertion(+), 49 deletions(-) create mode 120000 .codex-plugin/skills/agentbox-info delete mode 100644 .codex-plugin/skills/agentbox/SKILL.md diff --git a/.codex-plugin/skills/agentbox-info b/.codex-plugin/skills/agentbox-info new file mode 120000 index 0000000..5647c2c --- /dev/null +++ b/.codex-plugin/skills/agentbox-info @@ -0,0 +1 @@ +../../apps/cli/share/host-skills/agentbox-info \ No newline at end of file diff --git a/.codex-plugin/skills/agentbox/SKILL.md b/.codex-plugin/skills/agentbox/SKILL.md deleted file mode 100644 index 2859eac..0000000 --- a/.codex-plugin/skills/agentbox/SKILL.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -name: agentbox -description: "Spin up isolated sandboxes (\"boxes\") for coding agents, run them in parallel, queue background runs, and push commits safely through the host relay. Use when the user wants to run Codex / Claude Code / OpenCode in a sandbox, start more boxes, attach to a running box, or otherwise operate the `agentbox` CLI on their host machine." ---- - -# AgentBox (host-side) - -You are operating on the **user's host machine** (laptop / dev workstation), not inside a box. Use the `agentbox` CLI to provision isolated sandboxes for coding agents and to attach to them. - -Requires the CLI: `npm -g install @madarco/agentbox` then `agentbox install` (one-time). Needs Docker for local boxes; cloud providers are optional. - -## What AgentBox is, in one paragraph - -AgentBox spins up one isolated sandbox per agent run — a local Docker container (default), a Hetzner VPS (`--provider hetzner`), a Vercel Sandbox (`--provider vercel`), an E2B sandbox (`--provider e2b`), or a Daytona cloud sandbox (`--provider daytona`). Each box has its own `/workspace`, but the host's `.git/` is shared, so commits made inside the box land on the host immediately. The agent inside the box has **no host credentials** — `git push`, opening host URLs, capturing checkpoints, and other host-side operations flow through a small host process called the **relay** that runs alongside the CLI. - -## Core commands - -- `agentbox create` — provision a box and stop (ready, nothing launched). Flags: `-n `, `--provider docker|hetzner|vercel|e2b|daytona`, `--attach`, `-w `, `--snapshot `. -- `agentbox codex` — provision a box and launch **Codex** inside it, in a detachable tmux session. (`agentbox claude` / `agentbox opencode` launch those agents instead.) -- `agentbox codex attach ` — re-attach your terminal to a running agent session. -- `agentbox shell ` — open an interactive shell inside a box. -- `agentbox dashboard` — box list plus the selected box's live agent session; quickly switch between agents. - -## Run agents in parallel - -```sh -agentbox codex # box 1, attaches your terminal -# Ctrl+a d to detach (the agent keeps running) -agentbox codex # box 2 -agentbox dashboard # switch between boxes -``` - -## Access a box - -- `agentbox url ` — open the box's web app on a host URL tunnel. -- `agentbox screen ` — open the box's in-box browser via noVNC. -- `agentbox code ` — open the box in VS Code / Cursor (Dev Containers). - -## Lifecycle & sync - -- `agentbox stop ` / `agentbox start ` — preserves the upper volume (node_modules included). -- `agentbox pause ` / `agentbox unpause ` — freeze / resume in under a second. -- `agentbox checkpoint` — capture / list warm box state to start new boxes from in <1s. -- `agentbox download ` — sync a box's `/workspace` back to the host (gitignore-aware). -- `agentbox destroy ` — destroy a box and discard its upper volume. - -`` is optional almost everywhere — it defaults to the current project's box, or use its short index (`1`, `2`, …), name, or id prefix. Run `agentbox --help` for options. - -Full docs: https://agent-box.sh/docs