Crabbox Setup logo

Crabbox Setup

OrganizationPopular
AI-Builder-Club
crabbox-setup

Scaffold an isolated CLOUD dev box per agent (via crabbox + Daytona) for any codebase — the parallel-safe counterpart to dev-local-setup. Each agent gets its own full stack (own DB + dev server) and an in-box browser for e2e, so concurrent loops never collide on ports/state. Sets up the snapshot image, .crabbox.yaml, an idempotent setup.sh (also boots the stack locally), and a cbx.sh wrapper. Use when the user says "set up crabbox", "give each agent its own box", "add cloud testing", "make this repo testable in the cloud / on Daytona", "parallel-test this", or when setup-codebase-harness needs true per-agent isolation.

Overview

PublisherAI-Builder-Club
Repositoryskills
Skill namecrabbox-setup
Stars
1.3K
Forks
159
Bundled files
5
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 5 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by AI-Builder-Club on GitHub. Read the source before you install it.

Installation

Install the Crabbox Setup AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/AI-Builder-Club/skills.git /tmp/skills
mkdir -p .claude/skills
cp -r /tmp/skills/skills/crabbox-setup .claude/skills/crabbox-setup
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Crabbox Setup in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Crabbox Setup on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Crabbox Setup is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

crabbox-setup — an isolated cloud box per agent

dev-local-setup gives you one local stack. But the loop-engineer model runs many loops in parallel, and you can't run N full stacks on one laptop — fixed ports, one Docker daemon, one shared DB; worktrees don't fix that (they still share the host). This skill is the cloud/parallel counterpart: a fresh isolated box per agent (own DB + dev server), driven by an in-box browser, so concurrent code loops verify their work without colliding — laptop at ~0% CPU.

Written for Daytona (snapshot-based, the proven path); notes for SSH-lease providers (Hetzner/AWS) at the end. It composes with the rest of the harness:

  • reuse dev-local-setup's service/port discovery — don't re-discover.
  • run the e2e-setup specs on the box as the verification.

You are SCAFFOLDING files into the target repo. Templates live in assets/ (next to this skill); copy them in and ADAPT (every one has # EDIT: markers).


Step 0 — Discover (reuse dev-local, don't re-derive)

If scripts/dev-local.sh exists, read it: it already encodes the services, ports, infra deps, and start commands. The box's setup.sh should mirror it so local and cloud stay in sync. Otherwise discover the same facts (package manager, dev cmd + port, backing services, secrets) — see dev-local-setup Step 1. Decide:

  • Needs containers (Postgres/Supabase/Redis)? → keep the docker-in-docker block.
  • Browser e2e? → keep the Chrome + playwright-cli + ffmpeg block.
  • Secrets the app needs → these go through env.allow (Step 3), never sync.

Step 1 — devbox/Dockerfile

Copy assets/Dockerfiledevbox/Dockerfile; adapt. It bakes the slow STATIC tools (NOT app code — crabbox syncs that at run time, so the build context is just devbox/).

  • docker-in-docker (only if containers): Docker is pinned to 27.0.3 via the static tarball. ⚠️ Don't use latest / docker:dind — docker 28+ defaults to the containerd overlayfs snapshotter, which Daytona's kernel rejects (overlay mount … no such file or directory). 27.x keeps the working overlay2 graphdriver.
  • Browser e2e: install Google Chrome (the chrome channel playwright-cli uses — NOT chromium), @playwright/cli, and playwright's bundled ffmpeg (for video).

Step 2 — Build the snapshot (user runs daytona login first)

sh
daytona snapshot create <NAME> --dockerfile devbox/Dockerfile --context devbox \
  --cpu 4 --memory 8 --disk 10 --region us

Pick <NAME> (e.g. myapp-test) → use it in .crabbox.yaml. You can't build snapshots unless the daytona CLI is logged in your shell — ask the user to run it.

Step 3 — .crabbox.yaml

Copy assets/crabbox.yaml. Set daytona.snapshot, sync.exclude (deps/build dirs + **/.env*), and env.allow (the exact secret var names). Secrets travel via env.allow (forwarded over encrypted SSH, never through the broker, never written to git) — that's why they don't go through sync (which respects gitignore anyway).

Step 4 — setup.sh (boots the stack on the box AND locally)

Copy assets/setup.sh; adapt the EDIT block (install/dev/migrate cmds, port, services) to match scripts/dev-local.sh. It's idempotent (check-before-act), so it's a no-op on what's already up — run bash setup.sh locally too. End it with STACK READY (the marker cbx.sh waits for).

Step 5 — cbx.sh + browser config

Copy assets/cbx.sh; set the config block (PROVIDER, APP_PORT, TUNNEL_PORTS, READY_MARKER). It wraps the raw crabbox CLI so the gotchas are handled:

sh
bash cbx.sh up   <name>            # warmup + run setup.sh (bg+poll) → STACK READY
bash cbx.sh tunnel <name> &        # SSH tunnel: localhost → box (see it in YOUR browser)
bash cbx.sh pw   <name> -- <args>  # run playwright-cli IN the box (drive the app)
bash cbx.sh get  <name> <remote> <local>   # pull a file (screenshot/video) off the box
bash cbx.sh down <name>            # release the box (Daytona has NO auto-stop)

If browser e2e: copy assets/cli.config.json.playwright/cli.config.json (chrome channel + --no-sandbox; keep it tracked).

Step 6 — gitignore + commit (required for fast sync)

Add: evidence, .crabbox, .cbx-*.id, .cbx-*.sandbox, .playwright-cli. Then commit — crabbox only skips re-uploading when the tree matches a HEAD.

Step 7 — Verify (run the e2e suite on the box)

sh
bash cbx.sh up demo                          # → ✓ STACK READY
# run the repo's e2e specs against the box's stack (from e2e-setup):
bash cbx.sh pw demo -- open http://localhost:<APP_PORT>   # smoke, or:
#   sync an e2e runner and: crabbox run --id $(cat .cbx-demo.id) -- <your e2e cmd>
bash cbx.sh get demo /tmp/<artifact> evidence/<artifact>  # pull proof
bash cbx.sh down demo

Parallel check: bash cbx.sh up demo2 in another shell — separate box, zero collisions. This is exactly what the /verify skill's verifier needs when the stack is single-instance.


Gotchas — each cost a debugging round

  • Daytona caps every crabbox run exec at 60s → long setup must be backgrounded + polled (cbx.sh up does it). Never crabbox run -- bash setup.sh directly.
  • Poll with --no-sync — a plain run re-syncs the tree and corrupts a running setup.
  • Commit so sync skips when unchanged.
  • docker-in-docker → pin docker 27.0.3 (28+ breaks overlay on Daytona).
  • Browser: Chrome (channel), not chromium, + .playwright/cli.config.json --no-sandbox (root in box), + bundled ffmpeg for video.
  • Daytona is delegated/minimal: only warmup/run/ssh/stop. No cp, --artifact-glob, ports, preview URLs, --browser/vnc. → pull files with cbx.sh get; reach the app via SSH tunnel or in-box playwright-cli, not preview URLs.
  • Secrets via env.allow, never sync.
  • Always cbx.sh down — Daytona doesn't auto-stop; forgotten boxes keep billing (crabbox list --provider daytona finds stragglers).

Optional (advanced) — pre-bake service images

If the slowest phase is the inner docker pull on every fresh box, bake the images: docker pull --platform linux/amd64 locally → docker save | gzip > devbox/svc-images.tar.gzCOPY it in the Dockerfile → docker load in setup.sh before starting services. Marginal for a single demo (the load + a bigger snapshot offset the win); worth it only for frequent parallel cold starts. Daytona can't snapshot a warm box (unimplemented), and pulling-during-build needs docker-in-build (unsupported) — so the tarball+load is the only reliable bake. Pre-warming a box before a run is usually simpler.

Other providers (brief)

SSH-lease providers (Hetzner/AWS/Azure/GCP) have no 60s cap (setup runs synchronously) and crabbox's native --browser, crabbox screenshot, vnc, --artifact-glob, cp all work — so you can drop the in-box-playwright/get workarounds. But the box boots a stock OS (no snapshot), so tools install at runtime or via a prebaked image. Keep setup.sh/cbx.sh mostly the same.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Crabbox Setup AI skill do?

Scaffold an isolated CLOUD dev box per agent (via crabbox + Daytona) for any codebase — the parallel-safe counterpart to dev-local-setup. Each agent gets its own full stack (own DB + dev server) and an in-box browser for e2e, so concurrent loops never collide on ports/state. Sets up the snapshot image, .crabbox.yaml, an idempotent setup.sh (also boots the stack locally), and a cbx.sh wrapper. Use when the user says "set up crabbox", "give each agent its own box", "add cloud testing", "make this repo testable in the cloud / on Daytona", "parallel-test this", or when setup-codebase-harness ne...

Why use Crabbox Setup on TypingMind?

Because you install it once and use it with any model. Crabbox Setup is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Crabbox Setup in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/AI-Builder-Club/skills/tree/main/skills/crabbox-setup. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Crabbox Setup?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Crabbox Setup?

As many as you like. As long as a model supports skills, you can use Crabbox Setup with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Crabbox Setup AI skill free?

It is published on GitHub by AI-Builder-Club. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇