Warm a box, sync the diff, run the suite. Crabbox is a generic remote software testing and execution control plane.
$ npx -y skills add openclaw/crabbox --agent claude-code
Run the curl in your terminal, the rest in Claude Code.
Repo: openclaw/crabbox
What's inside

Warm a box, sync the diff, run the suite.
Crabbox is a generic remote software testing and execution control plane. It is for maintainers, contributors, and automation that need to run repository commands somewhere other than the laptop in front of them: on managed cloud capacity, an existing SSH host, or a delegated sandbox provider. Crabbox keeps the local edit-save-run workflow, but moves the expensive or evidence-producing work onto a remote runner.
crabbox run -- pnpm test
Behind that one command, Crabbox leases or selects a runner, syncs the current working tree, runs the command remotely, streams output back, records evidence, and releases or unclaims the target. The system is a Go CLI on your machine, an optional coordinator that owns provider credentials and lease state, and a managed or delegated runner. Run the coordinator on Cloudflare Workers with a Durable Object, or as a Node.js service backed by PostgreSQL.
Crabbox fits teams and tools that need repeatable remote execution without turning every test run into a bespoke CI job:
Use Crabbox when local compute is too slow, the target platform is somewhere else, a workflow needs a clean disposable runner, or a reviewer needs streamed evidence from the exact command that ran. Do not use it as a replacement for CI, a hostile multi-tenant sandbox, a secrets scrubber, or an isolation boundary between mutually untrusted users.
Crabbox is a developer execution tool, not a hostile multi-tenant platform or a uniform security sandbox. It assumes the local OS user, repository configuration, configured project tooling, and authenticated coordinator operators are trusted. Repository configuration is executable project automation: it can run local helpers, select runtimes, mount host resources, and control development infrastructure. Review unfamiliar repositories before running Crabbox.
The optional coordinator is intended for a cooperative trusted team. Its authentication, ownership, and sharing controls prevent unauthorized access and accidental cross-owner operations, but do not provide isolation between mutually adversarial tenants. See the Security Policy for the supported boundary and Operational security for deployment guidance.
Within that boundary, credentialed HTTP redirects are confined to their configured origin, destructive provider recovery requires an exact local claim or stronger provider-side ownership metadata, and artifact publication accepts only regular files from the selected bundle. Provider diagnostics redact configured credentials on the documented clients, but captured output and failure bundles are not automatically scrubbed; review them before sharing. See Operational security and Artifacts.
your laptop coordinator runtime cloud provider
------------- ------------------- --------------
crabbox CLI -- HTTPS --> Cloudflare + Durable Object --> Hetzner / AWS / Azure / GCP / Daytona
| or Node.js + PostgreSQL |
| |
+------------- SSH + rsync to leased runner <---------------+
2222) plus configured fallback ports, prepared with Crabbox's
sync/run prerequisites. Linux uses Ubuntu with cloud-init and /work/crabbox;
native Windows uses OpenSSH, Git for Windows, and C:\crabbox. No broker
credentials live on the box. Project runtimes (Go, Node, Docker, services,
secrets) come from your repo's GitHub Actions hydration, devcontainer, Nix,
mise/asdf, or setup scripts โ not from Crabbox.The normal CLI data plane โ SSH, rsync, command execution โ runs directly from the CLI to the runner. A dedicated private AWS workspace service is a separate SSM-only controller path for API-managed workspaces; it has no public instance address or SSH access.
Only aws, azure, daytona, gcp, and hetzner can transfer provider lifecycle to the
coordinator, and even those run direct from the CLI when no coordinator URL is
configured. Every other provider runs direct or delegated. A direct-provider mode
(--provider hetzner|aws|azure|daytona|gcp|digitalocean|linode|proxmox with local
credentials) exists for debugging the coordinator itself or using private
infrastructure.
| Path | State and scheduling | Best fit |
|---|---|---|
| Cloudflare Workers | Fleet Durable Object, alarms, scheduled Worker trigger | Managed edge deployment with minimal server operations and optional Cloudflare Access. |
| Node.js + PostgreSQL | PostgreSQL key/value state, pg-boss alarms and reconciliation | Initial runtime for containers, a VM, or Kubernetes with one replica; requires Node.js, PostgreSQL 13+, TLS, and WebSockets. |
| No coordinator | Local claims and provider-owned state | Personal/direct providers where shared credentials, history, budgets, and central cleanup are unnecessary. |
Both coordinator runtimes expose the same API, GitHub login, portal, provider adapters, cost controls, cleanup behavior, and live bridges. State is not automatically migrated between Durable Object storage and PostgreSQL. Cloudflare is the established deployment; validate the newly shipped Node runtime against the production proof checklist before cutover. See Infrastructure for deployment and ingress details. For a dedicated Node/PostgreSQL service that owns small private AWS workspaces, use the fail-closed ECS Fargate deployment and canary in Private AWS Workspaces. Client-side labels do not select that service's AWS placement; its URL and server policy do.
For the full mental model, see How Crabbox Works. For product scope and non-goals, see the Crabbox Vision. For the doc-to-code map, see Source Map.
brew install openclaw/tap/crabbox
crabbox --version
No Homebrew? Grab a GoReleaser archive for macOS, Linux, or Windows.
The Apple Silicon Homebrew install uses the release archive that also contains
the native crabbox-apple-vm-helper for the local Apple VZ provider.
Laptop prerequisites: git, ssh, ssh-keygen, rsync, curl.
crabbox init --detect generates a repo-local Agent Skill for compatible
coding agents. The Zed package adds checked tasks
and YAML support; a separate core command, crabbox open --editor=zed, provides
the Zed Remote Projects handoff. No Zed registry submission exists yet; it is
tracked in https://github.com/openclaw/crabbox/issues/1157. See the integration
catalog for current support and lifecycle
boundaries.
Existing repositories that only need agent discovery can install the generic Skill with GitHub CLI:
gh skill install openclaw/crabbox skills/crabbox \
--pin refs/heads/main --agent codex --scope project
Or use the cross-client Skills CLI:
npx skills add https://github.com/openclaw/crabbox --skill crabbox
Crabbox also publishes a digest-verified discovery index from its own domain:
npx skills add https://crabbox.sh --skill crabbox
Cross-vendor discovery services can index the same Skill through Crabbox's draft-compatible AI Catalog.
Herdr users can add Crabbox lease controls and repository workflows to the Herdr action palette. Use a Crabbox build that already contains this integration; the plugin installation rejects older binaries:
herdr plugin install openclaw/crabbox/plugins/herdr
Direct installation is available now; Herdr marketplace indexing is tracked in https://github.com/openclaw/crabbox/issues/1156.
The plugin provides a live boxes overlay plus actions for warmup, prewarm,
connect, repository jobs, and doctor. It does not add lifecycle hooks or
keybindings; normal Crabbox job stop policies still apply. See
Crabbox for Herdr for action details and optional
keybindings.
Broker access is deployment-specific. Use a coordinator URL from your team, use direct-provider mode for a personal cloud account, or self-host the broker on Cloudflare or Node.js/PostgreSQL with your own provider credentials and spend caps. See Getting started and Infrastructure for the setup paths.
# log in once per machine (stores a broker token in user config)
crabbox login --url https://broker.example.com
# verify local prerequisites and broker reachability
crabbox doctor
# one-shot: lease, sync, run, release
crabbox run -- pnpm test
# named repo workflow from .crabbox.yaml
crabbox job run full-ci
# or warm a box once, then reuse it
crabbox warmup # prints cbx_... + a slug
crabbox prewarm # lease + Actions hydration
crabbox run --id blue-lobster -- pnpm test:changed
crabbox connect blue-lobster # open an interactive SSH session
crabbox ssh --id blue-lobster
crabbox open --editor=zed --id blue-lobster # prepare a Zed Remote Projects session
crabbox stop blue-lobster
Every lease has a stable cbx_... ID and a friendly crustacean slug
(blue-lobster, swift-hermit, โฆ). Either works wherever an --id is
accepted. Use --slug <name> on fresh leases when a specific reusable slug
helps, and --label <text> on run when the history entry needs a
human-readable name.
Brokered providers can run through either coordinator runtime (or direct when
no coordinator is configured); every other provider runs direct or delegated
from the CLI.
| Provider and aliases | Runs on / mode | Notes |
|---|---|---|
AWS EC2 โ aws | Linux, macOS, Windows ยท brokered | EC2 instances and EC2 Mac; native AMI/EBS checkpoints; optional dedicated SSM-only private workspace service. |
Azure โ azure | Linux, Windows ยท brokered | VMs with Tailscale support; native Windows and WSL2. |
Google Cloud โ gcp (google, google-cloud) | Linux ยท brokered | Compute Engine VMs with Tailscale support. |
Hetzner Cloud โ hetzner | Linux ยท brokered | VMs with desktop/browser/code and Tailscale. |
DigitalOcean โ digitalocean | Linux ยท direct | Droplets with per-lease SSH keys and Crabbox tags. |
Linode โ linode | Linux ยท direct | Linode instances with metadata user-data, optional existing firewall attachment, and Crabbox tags. |
Hostinger โ hostinger | Linux ยท direct | VPS leases over public SSH; explicit purchase opt-in, stop-only release. |
Parallels โ parallels | Linux, macOS, Windows ยท direct | Local or remote macOS host; checkpoint/fork/restore/snapshot. |
Proxmox โ proxmox | Linux ยท direct | Clone QEMU templates on a private Proxmox VE cluster. |
XCP-ng โ xcp-ng | Linux ยท direct | Self-hosted XCP-ng pool on dedicated x86_64 server hardware. |
Incus โ incus | Linux ยท direct | SSH leases through the official Incus Go client. |
Firecracker โ firecracker | Linux ยท direct | Self-hosted Firecracker microVM leases on a Linux KVM host with prepared kernel, rootfs, and CNI. |
Static SSH โ ssh (static, static-ssh) | Linux, macOS, Windows ยท direct | Existing machines; no provisioning. |
Local Container โ local-container (docker, container, local-docker) | Linux ยท direct | Local Docker-compatible runtime (Docker Desktop, OrbStack, Colima, Podman). |
Apple Container โ apple-container (apple, applecontainer) | Linux ยท direct | Apple's native container runtime on Apple silicon macOS. |
Apple Container Machine โ apple-machine (applemachine) | Linux ยท direct | Persistent Linux development machines from Apple Container 1.0, defaulting to Alpine. |
Apple VZ โ apple-vm (applevm) | Linux ARM64 ยท direct | Full Ubuntu VMs through Apple Virtualization.framework; no cloud account or VM daemon. |
exe.dev โ exe-dev (exe, exedev) | Linux ยท direct | exe.dev VMs exposed as public SSH leases. |
KubeVirt โ kubevirt (kubernetes-vm) | Linux ยท direct | Generic KubeVirt VMs through kubectl, virtctl, and control-plane SSH forwarding. |
External โ external (exec-provider) | Linux ยท direct | Configured executable implementing the Crabbox provider protocol. |
Namespace Devbox โ namespace-devbox (namespace, namespace-devboxes) | Linux ยท direct | Namespace.so Devboxes over SSH. |
Namespace Compute Instance โ namespace-instance (namespace-compute) | Linux ยท direct | Namespace Compute instances through nsc and SSH. |
Semaphore โ semaphore (sem) | Linux ยท direct | A Semaphore CI job leased as a testbox. |
Sprites โ sprites | Linux ยท direct | Sprites microVMs through sprite proxy. |
Tenki โ tenki | Linux ยท direct | Tenki sandbox VMs through tenki sandbox ssh-proxy. |
Coder โ coder | Linux ยท direct | Coder workspaces through coder ssh --stdio; stops by default, deletes only by opt-in. |
Daytona โ daytona | Linux ยท direct | Daytona-managed dev sandbox over SSH. |
Morph โ morph | Linux ยท direct | Morph Cloud snapshot-backed instances over the shared SSH gateway. |
RunPod โ runpod (run-pod, runpodio) | Linux ยท direct | RunPod GPU pods with public SSH. |
ASCII Box โ ascii-box (ascii, asciibox) | Linux ยท direct | ASCII Box Ubuntu sandboxes exposed as SSH leases. |
XCP-ng itself can host Linux, Windows, and BSD guests, but Crabbox's current
xcp-ng adapter provisions normal leases from Linux templates only. The
separate XCP-ng ISO E2E harness also covers Windows x86_64/x64 installers.
macOS guests are out of scope on this path; use the Tart provider on Apple
hardware for macOS VM workflows.
| Provider and aliases | Runs on | Notes |
|---|---|---|
AWS Lambda MicroVM โ aws-lambda-microvm | Linux ARM64 | Lambda Firecracker MicroVM with archive sync, retained reuse, and pause/resume. |
Cloudflare โ cloudflare (cf) | Linux | Cloudflare Containers via the Worker runtime. |
Cloud Run Sandbox โ cloud-run-sandbox (gcrun-sandbox, cloudrun-sandbox) | Linux | Google Cloud Run sandboxes via gateway or in-container sandbox CLI. |
Docker Sandbox โ docker-sandbox | Linux | Docker Sandboxes through the standalone sbx CLI. |
E2B โ e2b | Linux | E2B Firecracker sandbox. |
Freestyle โ freestyle | Linux | Freestyle VMs through the Freestyle REST API. |
Islo โ islo | Linux | Islo sandbox. |
Modal โ modal | Linux | Modal Sandbox through the local Python client. |
Microsoft Execution Containers โ mxc (execution-container) | Windows | Policy-driven local Windows process containment. |
OpenComputer โ opencomputer (oc, open-computer) | Linux | OpenComputer Linux VMs through the OpenComputer REST API. |
OpenSandbox โ opensandbox | Linux | OpenSandbox delegated containers through the OpenSandbox Go SDK. |
Railway โ railway (rail, railwayapp) | Linux | Redeploy and stream an existing Railway service. |
Anthropic Sandbox Runtime โ anthropic-sandbox-runtime (srt) | macOS, Linux | Local one-shot sandboxing through Anthropic's srt CLI. |
SmolVM โ smolvm (smol, smolmachines, smolfleet) | Linux | Smol Machines microVM sandboxes via the smolfleet API. |
Tensorlake โ tensorlake (tl, tensorlake-sbx) | Linux | Tensorlake Firecracker sandbox via the Tensorlake CLI. |
Upstash Box โ upstash-box (upstash, box, upstashbox) | Linux | Upstash Box through the Box REST API. |
Azure Dynamic Sessions โ azure-dynamic-sessions | Linux | Azure Container Apps dynamic sessions. |
Blacksmith Testbox โ blacksmith-testbox (blacksmith) | Linux | Delegated Blacksmith CI Testbox lifecycle and execution. |
W&B Sandboxes โ wandb (weights-and-biases) | Linux | Weights & Biases Sandboxes; reuses wandb login credentials. |
Windows Sandbox โ windows-sandbox (wsb, windows-sandbox-provider) | Windows | Disposable Microsoft Windows Sandbox sessions through generated .wsb configs. |
See Providers for the full reference, capabilities, and authoring guide.
crabbox run for fire-and-forget;
crabbox warmup + --id for raw reusable leases, or crabbox prewarm when
the box should be hydrated before the first test command. See
warmup, prewarm, and
run.crabbox job run <name> lets repos define warmup,
optional Actions hydration, run command, and cleanup policy in .crabbox.yaml.
See Jobs.run_...
handle. Use crabbox attach <run-id> while it is active,
crabbox events <run-id> for durable lifecycle/output events, and
crabbox logs <run-id> for retained output after completion. See
History and logs and
Observability.crabbox actions hydrate runs supported setup
steps from the repo's workflow locally over SSH, so leased boxes get the same
runtimes and tooling without GitHub write access. Use --github-runner only
when setup needs full Actions semantics such as repository secrets, OIDC,
service containers, or unsupported uses: steps. See
Actions hydration.crabbox capsule from-actions <run-url> captures a
failing CI run into a portable, replayable bundle; capsule replay reruns it.
See Capsules.restore/fork from it, via
workspace archives or provider-native snapshots/images. See
Checkpoints.--pond <name> label form an
emergent peer group with discovery (pond peers), an SSH-mesh of
ssh -L forwards to members' --expose ports (pond connect), and bulk
pond release. See Pond.crabbox usage summarizes spend by user, org,
provider, and type. See Coordinator,
Capacity fallback, and
Cost and usage.--browser provisions
Chrome/Chromium for headless automation, --desktop provisions a visible UI
with tunnel-only VNC takeover, and --code provisions code-server on managed
Linux. crabbox desktop click/paste/type/key provide first-class input
helpers; desktop proof captures metadata, screenshot, diagnostics, MP4, and
a contact-sheet PNG in one publishable bundle. See
Interactive desktop and VNC.crabbox webvnc/crabbox code bridge a lease into the portal;
crabbox share grants a lease to a user or the owning org. See
Portal.--timing-json on run, warmup, prewarm, and
actions hydrate gives scripts one machine-readable sync/command/total
timing schema across providers.beast is the default for providers that expose class-based managed capacity.
The providers below fall back across ordered instance-type lists unless --type
pins a specific provider-native size.
Hetzner standard ccx33, cpx62, cx53
fast ccx43, cpx62, cx53
large ccx53, ccx43, cpx62, cx53
beast ccx63, ccx53, ccx43, cpx62, cx53
AWS Linux standard c7a/c7i/m7a/m7i.8xlarge family
fast โฆ16xlarge family
large โฆ24xlarge family
beast โฆ48xlarge family, falling back to 32x/24x/16x
arm64 c7g/m7g/r7g families with --arch arm64
AWS Win standard m7i.large, m7a.large, t3.large
fast m7i.xlarge, m7a.xlarge, t3.xlarge
large m7i.2xlarge, m7a.2xlarge, t3.2xlarge
beast m7i.4xlarge, m7a.4xlarge, m7i.2xlarge
AWS WSL2 standard m8i.large, m8i-flex.large, c8i.large, r8i.large
fast m8i.xlarge, m8i-flex.xlarge, c8i.xlarge, r8i.xlarge
large m8i.2xlarge, m8i-flex.2xlarge, c8i.2xlarge, r8i.2xlarge
beast m8i.4xlarge, m8i-flex.4xlarge, c8i.4xlarge, r8i.4xlarge, m8i.2xlarge
AWS macOS all mac2.metal, then mac1.metal unless --type is set
Azure standard Standard_D32ads_v6, Standard_D32ds_v6, Standard_F32s_v2, then 16-vCPU fallbacks
fast Standard_D64ads_v6, Standard_D64ds_v6, Standard_F64s_v2, then 48/32-vCPU fallbacks
large Standard_D96ads_v6, Standard_D96ds_v6, then 64/48-vCPU fallbacks
beast Standard_D192ds_v6, Standard_D128ds_v6, then 96/64-vCPU fallbacks
arm64 Standard_D*ps_v6 / D*pds_v6 Cobalt families with --arch arm64
Azure Win/
WSL2 standard Standard_D2ads_v6, Standard_D2ds_v6, Standard_D2ads_v5, Standard_D2ds_v5, Standard_D2as_v6
fast Standard_D4ads_v6, Standard_D4ds_v6, Standard_D4ads_v5, Standard_D4ds_v5, Standard_D4as_v6
large Standard_D8ads_v6, Standard_D8ds_v6, Standard_D8ads_v5, Standard_D8ds_v5, Standard_D8as_v6
beast Standard_D16ads_v6, Standard_D16ds_v6, Standard_D16ads_v5, Standard_D16ds_v5, Standard_D8ads_v6
Namespace standard S
fast M
large L
beast XL
Namespace
Compute standard 4x8
fast 8x16
large 16x32
beast 32x64
Cloudflare standard standard-4
fast standard-4
large standard-4
beast standard-4
Override with --type or CRABBOX_SERVER_TYPE for a specific instance. Use
--arch arm64 / architecture: arm64 for Linux ARM capacity on Azure or AWS;
explicit ARM provider types also select ARM images when no custom image is set.
Cloudflare also accepts lite, basic, standard-1, standard-2, and
standard-3 as smaller explicit --type values; standard-4 is the default.
Providers without a row either use provider-native capacity settings or reject
class/type selection.
The dedicated private AWS workspace API does not use these AWS class tables. It
accepts only its server-configured instance allowlist; the recommended small
policy starts with t3a.small,t3.small and a 20 GiB encrypted gp3 root volume.
Config resolves in order: flags โ env โ repo .crabbox.yaml โ user
~/.config/crabbox/config.yaml โ defaults.
broker:
url: https://broker.example.com
provider: aws
token: ...
class: beast
capacity:
market: spot
strategy: most-available
fallback: on-demand-after-120s
hints: true
aws:
region: eu-west-1
rootGB: 400
lease:
idleTimeout: 30m
ttl: 90m
ssh:
key: ~/.ssh/id_ed25519
user: crabbox
port: "2222"
# Ordered fallback ports tried after ssh.port; use [] to disable fallback.
fallbackPorts:
- "22"
Set broker.mode: registered to keep provisioning and cleanup in any direct
provider while registering lease metadata with the coordinator for inventory,
sharing, and portal WebVNC. Kept desktop leases start the outbound WebVNC bridge
automatically by default; set broker.autoWebVNC: false to opt out. The
coordinator never receives provider credentials or directly calls a registered
provider. By default it removes only registration metadata; an explicitly
bound outbound runtime adapter can perform a user-confirmed workspace delete.
API clients request the same generation-fenced delete with
POST /v1/leases/{id}/release and body {"delete":true}.
Forwarded environment is intentionally narrow: NODE_OPTIONS and CI. Do not
pass secrets as command-line arguments. For live-secret smoke tests, use
crabbox run --env-from-profile <file> --allow-env NAME so Crabbox forwards
only selected names and prints redacted presence/length metadata. For stale warm
boxes, --full-resync (alias --fresh-sync) resets the remote workdir before
syncing. For larger commands, use --script <file> or --script-stdin so the
remote runner executes an uploaded file instead of a giant quoted shell string.
For binary or terminal-hostile output, use crabbox run --capture-stdout <path>
or --capture-stderr <path>. Add --preflight for a remote capability
snapshot, --keep-on-failure to SSH into the exact failed one-shot lease, or
--download remote=local to copy a successful-run artifact back. Failed
SSH-backed and Blacksmith delegated runs save local .crabbox/captures/*.tar.gz
bundles by default. Captured files are not redacted by Crabbox.
Optional Tailscale reachability for managed Linux leases:
tailscale:
enabled: true
network: auto
tags:
- tag:crabbox
hostnameTemplate: crabbox-{slug}
authKeyEnv: CRABBOX_TAILSCALE_AUTH_KEY
exitNode: mac-studio.example.ts.net
exitNodeAllowLanAccess: true
Tailscale is a network plane, not a provider. --tailscale joins new managed
Linux leases to the tailnet; --network auto|tailscale|public chooses how SSH
and VNC tunnel commands resolve the host. Brokered mode uses Worker OAuth
secrets to mint one-off keys; direct-provider mode reads the auth key from the
configured env var. See Tailscale.
A few provider-specific config snippets:
# Static macOS or Windows target (existing machine, no provisioning)
provider: ssh
target: windows
windows:
mode: normal # or wsl2
static:
host: win-dev.local
user: alice
port: "22"
workRoot: C:\crabbox
# Local container (alias: docker; detects docker or podman)
provider: local-container
localContainer:
runtime: docker
image: debian:bookworm
workRoot: /work/crabbox
# Delegated Blacksmith CI Testbox
provider: blacksmith-testbox
blacksmith:
org: example-org
workflow: .github/workflows/ci-check-testbox.yml
job: test
ref: main
idleTimeout: 90m
Keep provider tokens in environment variables, not repo config (for example
CRABBOX_SEMAPHORE_TOKEN, CRABBOX_SPRITES_TOKEN, RUNPOD_API_KEY,
MORPH_API_KEY, ASCII_BOX_API_KEY, E2B_API_KEY, DAYTONA_API_KEY,
CLOUD_RUN_SANDBOX_URL/CLOUD_RUN_SANDBOX_SECRET). The full env-var
reference, per-provider sections, and per-command flags are in
docs/cli.md, Configuration,
and the provider docs.
# Go CLI
go build -trimpath -o bin/crabbox ./cmd/crabbox
go vet ./...
go test -race ./...
# Coordinator runtimes (Node 22+ locally; CI runs Node 24)
npm ci --prefix worker
npm test --prefix worker
npm run build --prefix worker
npm run check:node --prefix worker
npm run build:node --prefix worker
# Repository scripts
node --test scripts/*.test.js
# Docs
scripts/check-docs.sh
# Optional live smoke, when broker/provider credentials are available
CRABBOX_LIVE=1 CRABBOX_LIVE_REPO=/path/to/my-app scripts/live-smoke.sh
# Firecracker host readiness smoke (read-only; reports environment_blocked when Linux/KVM assets are missing)
CRABBOX_BIN=./bin/crabbox scripts/live-firecracker-smoke.sh
CI runs the full gate (gofmt, vet, race tests, all Go modules, coverage threshold, repository script tests, docs link/build check, GoReleaser snapshot, and Worker lint/typecheck/tests/build) on every push and PR. Production releases use a serialized, draft-first process: preserve and verify the signed tag, build and Developer ID sign/notarize the macOS candidates locally, verify the exact draft on native Apple Silicon and Intel runners from protected-default code, then authorize publication and the Homebrew update as separate gates. See Release engineering.
Cloudflare, Node/PostgreSQL, container, ingress, secrets, and DNS deployment live in docs/infrastructure.md. The dedicated ECS Fargate path is documented in Private AWS Workspaces.
The documentation site at https://crabbox.sh/ is generated from
the docs/ Markdown:
scripts/check-docs.sh
open dist/docs-site/index.html
MIT โ see LICENSE.
.agents/
skills/
autoreview/
AGENTS.md
CLAUDE.md
scripts/
autoreview
autoreview_test.py
test-review-harness
test-review-harness.ps1
test-review-harness.py
SKILL.md
tests/
fixtures/
typescript-benign-config-path-references.ts
typescript-benign-references.ts
typescript-sensitive-literals.ts
test_autoreview_hardening.py
crabbox/
SKILL.md
.crabbox.yaml
.github/
CODEOWNERS
pull_request_template.md
release-allowed-signers
workflows/
blacksmith-testbox.yml
broker-soak-canary.yml
ci.yml
clawsweeper-dispatch.yml
connector-e2e-smokes.yml
coordinator-admin-token-rotate.yml
coordinator-deploy.yml
daytona-snapshot-bootstrap.yml
dependabot-auto-merge.yml
devtools-image-publish.yml
docs-ui-proof.yml
hydrate.yml
pages.yml
release-assets.yml
verify-homebrew.yml
zed-extension-e2e.yml
.gitignore
.goreleaser.yaml
.mac-release.env
.node-version
AGENTS.md
CHANGELOG.md
CLAUDE.md
cmd/
crabbox/
crabbox-apple-vm-helper/
main.go
local_container_e2e_test.go
main_test.go
main.go
xcpng-iso-e2e-helper/
main.go
deploy/
aws/
ecs-fargate-coordinator.yaml
docs/
architecture.md
assets/
readme-banner.jpg
behavior/
aws-private-workspaces.md
cli.md
commands/
actions.md
adapter.md
admin.md
artifacts.md
attach.md
azure.md
bench.md
cache.md
capsule.md
checkpoint.md
cleanup.md
code.md
config.md
connect.md
cp.md
desktop.md
doctor.md
egress.md
events.md
history.md
image.md
init.md
inspect.md
job.md
list.md
login.md
logout.md
logs.md
marketplace.md
media.md
open.md
pause.md
pond.md
pool.md
ports.md
prewarm.md
providers.md
README.md
results.md
resume.md
run.md
screenshot.md
shard.md
share.md
ssh.md
status.md
stop.md
sync-plan.md
tunnel.md
unshare.md
usage.md
verify.md
vnc.md
warmup.md
watch.md
webvnc.md
whoami.md
concepts.md
features/
actions-hydration.md
artifacts.md
auth-admin.md
aws-private-workspaces.md
aws.md
azure.md
blacksmith-testbox.md
bring-your-own-infrastructure.md
broker-auth-routing.md
cache-volumes.md
cache.md
capabilities.md
capacity-fallback.md
capsules.md
checkpoints.md
configuration.md
coordinator.md
cost-usage.md
daytona.md
delegated-runner-contract.md
deterministic-perf-evidence.md
device-pairing.md
doctor.md
e2b.md
egress.md
env-forwarding.md
hermetic-agent-evidence.md
hetzner.md
history-logs.md
identifiers.md
image-bake-runbook.md
interactive-desktop-vnc.md
islo.md
jobs.md
lifecycle-cleanup.md
marketplace-credits.md
namespace-devbox-setup.md
namespace-devbox.md
nested-execution.md
network.md
pond.md
portable-coordinator.md
portal.md
prebaked-images.md
provider-authoring.md
provider-landscape.md
provider-live-smoke.md
provider-selection.md
providers.md
README.md
repository-onboarding.md
runner-bootstrap.md
runtime-adapter-stack.md
semaphore.md
slurm-academic-sandboxes.md
sprites.md
ssh-keys.md
ssh-transport.md
sync.md
tailscale.md
telemetry.md
test-results.md
vnc-linux.md
vnc-macos.md
vnc-windows.md
getting-started.md
how-it-works.md
infrastructure.md
integrations/
agents.md
authoring.md
editors.md
README.md
observability.md
operations.md
orchestrator.md
performance.md
plan/
egress-session-identity.md
portable-coordinator.md
vnc.md
pricing.md
provider-backends.md
providers/
agent-sandbox.md
anthropic-sandbox-runtime.md
apple-container.md
apple-machine.md
apple-vm.md
ascii-box.md
aws-lambda-microvm.md
aws.md
azure-dynamic-sessions.md
azure.md
blacksmith-testbox.md
blaxel.md
cloud-run-sandbox.md
cloudflare-dynamic-workers.md
cloudflare-sandbox.md
cloudflare.md
coder.md
codesandbox.md
crownest.md
cua.md
cubesandbox.md
daytona.md
digitalocean.md
docker-sandbox.md
e2b.md
exe-dev.md
external.md
fastapi-cloud.md
firecracker.md
freestyle.md
gcp.md
github-codespaces.md
hetzner.md
hostinger.md
hyperv.md
incus.md
islo.md
kubevirt.md
lambda.md
linode.md
local-container.md
lume.md
modal.md
morph.md
multipass.md
mxc.md
namespace-devbox.md
namespace-instance.md
nebius.md
nomad.md
nvidia-brev.md
opencomputer.md
opensandbox.md
orgo.md
ovh.md
parallels.md
phala.md
provider-metadata.json
proxmox.md
railway.md
README.md
runpod.md
scaleway.md
sealos-devbox.md
semaphore.md
smolvm.md
sprites.md
ssh.md
superserve.md
tart.md
tencentcloud.md
tenki.md
tensorlake.md
unikraft-cloud.md
upstash-box.md
vast.md
vercel-sandbox.md
vultr.md
wandb.md
windows-sandbox.md
xcp-ng.md
README.md
refactor/
provider.md
RELEASING.md
security.md
source-map.md
spec/
broker.md
troubleshooting.md
use-cases.md
vision.md
examples/
slurm-external-provider/
README.md
runner-unprivileged-sshd.sh
slurm-cbx.py
test_slurm_cbx.py
go.mod
go.sum
integrations/
zed/
extension.toml
languages/
crabbox/
config.toml
highlights.scm
tasks.json
LICENSE
project-tasks.json
README.md
snippets/
crabbox.json
internal/
applevmhelper/
cli_darwin_arm64_test.go
cli_darwin_arm64.go
cli_stub.go
protocol_test.go
protocol.go
runtime_darwin_arm64_test.go
runtime_darwin_arm64.go
vmd_development_mode_darwin_arm64.go
vmd_embed_darwin_arm64.go
vmd_install_darwin_arm64_test.go
vmd_install_darwin_arm64.go
vmd_noembed_darwin_arm64.go
vmd_release_mode_darwin_arm64.go
vmd-entitlements.plist
cli/
actions_test.go
actions.go
adapter_connect_test.go
adapter_connect.go
adapter_ingress_test.go
adapter_ingress.go
adapter_platform_windows_test.go
adapter_socket_darwin.go
adapter_socket_linux.go
adapter_socket_unix_test.go
adapter_socket_unix.go
adapter_socket_unsupported.go
adapter_socket_windows.go
admin_test.go
admin.go
app_help_test.go
app.go
artifacts_manifest.go
artifacts_open_unix.go
artifacts_open_windows_test.go
artifacts_open_windows.go
artifacts_publish_unix_test.go
artifacts_publish.go
artifacts_test.go
artifacts.go
attest_test.go
attest.go
auth_test.go
auth.go
aws_fixed_attempt.go
aws_fixed_create_intent_test.go
aws_fixed_create_intent.go
aws_ssh_cidr.go
aws_test.go
aws_windows_bootstrap.go
aws.go
azure_cleanup_retry_test.go
azure_cleanup_retry.go
azure_cli_test.go
azure_cli.go
azure_login_test.go
azure_login.go
azure_test.go
azure.go
bench_test.go
bench.go
bootstrap_test.go
bootstrap.go
cache_test.go
cache.go
capabilities.go
capsule_test.go
capsule.go
checkpoint_native.go
checkpoint_store_test.go
checkpoint_store.go
checkpoint_test.go
checkpoint.go
... 1459 moreFAQ
crabbox is a Claude Code plugin with 1 hand-picked skill for testing work, indexed on Flowy. Install it with the command on its page. It includes crabbox. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.