Sprites
Read this when you:
- choose
provider: sprites; - debug Sprites token resolution, the
spriteCLI, the SSH proxy, or bootstrap; - change Sprites lease creation, status, sync, or cleanup.
provider: sprites provisions a Sprites Linux microVM and adapts it into a normal Crabbox SSH lease. Sprites owns the microVM lifecycle and the sprite proxy transport. Crabbox owns local config, slugs, repo claims, per-lease SSH keys, rsync-based sync, command execution, timing summaries, and normalized list/status output. There is no Crabbox coordinator (broker) path for Sprites — it always runs direct from the CLI.
#Auth
Set a Sprites token through the environment or user config. Do not commit tokens to repo config.
export SPRITES_TOKEN=...
Crabbox resolves the token from the first set of these, in order:
CRABBOX_SPRITES_TOKENSPRITES_TOKENSPRITE_TOKENSETUP_SPRITE_TOKENsprites.tokenin config
Install and authenticate the Sprites CLI before first use. Crabbox calls the Sprites HTTP API for sprite create/get/list/delete, and shells out to the local sprite CLI for sprite --version (a readiness check), sprite exec (running the SSH bootstrap inside the microVM), and sprite proxy (the SSH transport).
#Config
provider: sprites
target: linux
sprites:
apiUrl: https://api.sprites.dev
workRoot: /home/sprite/crabbox
Defaults: apiUrl is https://api.sprites.dev and workRoot is /home/sprite/crabbox. The API URL and work root also read from the environment:
CRABBOX_SPRITES_API_URLorSPRITES_API_URL→sprites.apiUrlCRABBOX_SPRITES_WORK_ROOT→sprites.workRoot
Equivalent one-off flags:
crabbox warmup --provider sprites
crabbox run --provider sprites --sprites-work-root /home/sprite/crabbox -- pnpm test
crabbox run --provider sprites --sprites-api-url https://api.sprites.dev -- pnpm test
crabbox ssh --provider sprites --id <slug>
crabbox status --provider sprites --id <slug>
crabbox stop --provider sprites <slug>
#Behavior
warmupcreates a sprite namedcrabbox-<...>and a local Crabbox claim.- During bootstrap Crabbox ensures OpenSSH server, Git, rsync, tar, and python3
- The lease SSH user is
sprite. runcreates or reuses a sprite, syncs the current Git manifest over SSH, andsshprints a command that usessprite proxy -s %h -W 22as the SSHstatus,list, andstopoperate on Sprites resources mapped to localstopdeletes the sprite and removes the local claim after provider cleanup
are installed (via apt-get when missing), appends the per-lease public key to /home/sprite/.ssh/authorized_keys, and starts sshd — registering it as a sprite-env service when that tool is available so it survives restarts.
runs the command through Crabbox's standard SSH executor.
ProxyCommand.
claims or provider labels; list only shows sprites whose name starts with crabbox-.
succeeds.
#Boundaries
- Linux only.
- No coordinator; auth is local/provider-native.
- No VNC, desktop, browser, or code-server.
--tailscaleis rejected: Sprites exposes SSH throughsprite proxy.--classand--typedo not apply to Sprites.- Actions hydration works, since the sprite is a normal Linux SSH target.
#Troubleshooting
provider=sprites requires SPRITES_TOKEN, SPRITE_TOKEN, SETUP_SPRITE_TOKEN, or CRABBOX_SPRITES_TOKEN:provider=sprites requires the sprite CLI on PATH and authenticated: installsprite proxyfailures mean SSH cannot reach the microVM even when API calls- Slow first boot usually means package install inside the sprite is still
- The work root must resolve to a dedicated absolute path (broad paths such as
set one of those tokens (or sprites.token in config).
the authenticated Sprites CLI and ensure sprite is on PATH. Crabbox probes this with sprite --version.
succeed. Run crabbox status --provider sprites --id <slug> --wait to retry the idempotent SSH bootstrap.
running. Kept leases reuse the installed OpenSSH/rsync packages.
/, /home, /tmp are rejected). Prefer a subdirectory under the sprite user's home, for example /home/sprite/crabbox.