What maps to what
Move a dev machine
1
Sign in and create a machine
./dev.env holds the plain KEY=VALUE lines that your Boat environment set. Put API keys,
secret variables, and secret files in Secrets instead (step 4).2
Copy your files in and run a command
push copies into the machine’s home directory. In a git repository it copies only tracked
files; add --all for the rest.3
Open a port
https://3000-<machine id without m_>.<domain>/. Add --private to get a link
that only its holder can open. See Public and private ports.4
Move your secrets
For an API key sent in HTTPS headers, save a proxy Secret. The machine sees a placeholder, and the
outbound proxy adds the real value to requests to For a model provider key, use These flags replace the machine’s direct references and keep the proxy Secrets selected above. A
new machine takes the same flags at create, such as
api.example.com:--ai anthropic (or openai, gemini, openrouter) instead of
--host.For a value the proxy cannot carry, such as a secret file, an SSH key, or a database URL, save a
direct Secret and give it to dev. The machine gets the real value as a variable, a file, or both:instabox create --name worker --secret-env DATABASE_URL=PROD_PG.The file is on tmpfs, linked from the path in the home directory, so it is not on the machine’s
disk. To save a Secret, you need to be an org owner or admin. If the CLI says the site does not
take direct Secret files or renamed variables yet, use a variable with the Secret’s own name:
--secret-env PROD_PG. See
Put the real value in the machine with a direct Secret.5
Pause, stop, and delete
Move CI jobs
1
Connect GitHub
On the dashboard’s CI page, click Connect GitHub. This replaces
boat ci connect.2
Change runs-on
Before:After:Each job gets a fresh Ubuntu 24.04 machine with the tools of GitHub’s
ubuntu-24.04 image.3
Map the other labels
A snapshot label needs a snapshot saved from a
ci machine, in a private repository. See
Start jobs from a snapshot. The plans each label
needs are in CI.4
Watch the jobs
instabox ci and the dashboard’s CI page list your jobs. They replace boat ci,
boat ci job, and boat ci logs.instabox run:
instabox run creates the machine, runs the command, and deletes the machine, also on failure. Store
the key with instabox keys create --name github-ci --expires-in-days 90 --json | jq -r .key | gh secret set INSTABOX_API_KEY.
What works differently
Named environments
Named environments
InstaBox has no named, reusable environments. Keep the variables in an env file and pass
--env-file at create, run setup with --setup-file, and save a prepared machine as a snapshot
to start new machines from it.Variables are fixed at create
Variables are fixed at create
You cannot change a machine’s variables after create. Set one for a single command with
instabox exec dev --env KEY=VALUE -- <cmd>, or create the machine again.Secret values are org Secrets, not environment settings
Secret values are org Secrets, not environment settings
Boat keeps secret variables and files in an environment. InstaBox keeps them as Secrets of the
org, and each machine references the ones it needs. Proxy Secrets keep the real value out of the
machine. Direct Secrets (
--direct) put it in, as a variable or a tmpfs file, and any code in the
machine can read and copy them, as with Boat’s environment secrets.Stop and pause
Stop and pause
Boat’s stop saves the disk and frees the machine, so it maps to
instabox stop, and Boat’s resume
after a stop maps to instabox start. InstaBox also has a pause: suspend keeps memory and running
processes, and resume continues where the machine left off.Not available
Not available
- The CI
debugoption, which keeps a failed job’s sandbox. To look at a failure, run the command withinstabox run --keep, which keeps the machine and prints its name. - Nested virtualization (
/dev/kvm). - Raw UDP ports. Raw TCP ports are in preview. See Public and private ports.
- Coding agents other than Claude Code and Codex in
instabox agent prompt. Install another agent in the machine and run it withinstabox exec.
Let your coding agent do the migration
Paste this prompt into your coding agent in the repository you want to move.Troubleshooting
A job waits as queued
A job waits as queued
instabox ci says why a job waits or was refused. Check that the GitHub App is connected to the
repository and that your plan includes the label’s size.Create fails at the machine limit
Create fails at the machine limit
Every plan has a limit on machines, paused ones included.
instabox usage shows the count and
the limit. Delete machines you no longer need with instabox rm.The free plan refuses a template
The free plan refuses a template
The free plan creates machines from only. A snapshot is not limited.
A port URL answers 502
A port URL answers 502
Nothing listens on the port, or the server listens on
127.0.0.1 only. Start the server on
0.0.0.0 or check it with instabox exec dev -- 'curl -sI localhost:3000'.CLI reference
Every command and flag.
CI
Runner labels, snapshots, and the GitHub App.