What is warm pool?
Warm pool keeps a set of pre-provisioned VMs ready for your project. Each VM has your repositories cloned, environment variables set, and setup commands executed — so when a task starts, it gets a warm VM instantly instead of waiting for provisioning from scratch. This is especially useful for projects with large repos or slow dependency installs (Nix, Docker builds, etc.).Setup workflow
The typical workflow for configuring warm pool via the API:- Configure — Set your setup commands, pool size, and branch via
PATCH /warm-pool - Test — Trigger a test boot via
POST /warm-pool/testto verify your setup works - Poll — Check the test result via
GET /warm-pool/instances/:iduntilstatusisreadyorfailed - Debug — If failed, read
summary.failedStepandsummary.errorto find what broke - Iterate — Adjust setup commands and repeat from step 2
Quick start
1. Get your project ID
id.
2. Configure warm pool
Setup commands run from
/home after repos are cloned. Your repo is available
at /home/<repo-name> (e.g., /home/myrepo for org/myrepo).3. Trigger a test boot
4. Poll for results
status is ready (success) or failed. We recommend polling every 3–5 seconds.
Success response:
summary object gives you the answer at a glance:
summary.success— did the boot complete successfully?summary.failedStep— which provisioning step failed (e.g.,clone_repo,warm_pool_setup)summary.error— the error message from the failed stepsteps— full step-by-step log with output, errors, and timing for each step
5. Iterate on failures
If the boot failed, adjust your setup commands and test again:Provisioning steps
Each warm pool boot runs these steps in order:| Step | Description |
|---|---|
create_vm | Provisions a fresh VM |
ensure_server | Waits for the VM server to be ready |
set_env_vars | Writes project environment variables to /home/.env |
clone_repo | Clones each repo (runs once per repo) |
init_repo | Initializes each repo (runs hooks from .capy/settings.json) |
project_setup | Runs project-level setup commands from devbox settings |
repo_setup | Runs per-repo setup commands from devbox settings |
warm_pool_setup | Runs setup commands configured via this API |
failed.
VMs run as
root with full sudo access. Setup commands can install system
packages, modify system configs, and perform any root-level operations.Managing the pool
Check pool status
status object shows how many VMs are ready, provisioning, or failed.