Setup Scripts
Setup scripts prepare a sandbox after sources are cloned but before you start using it — installing language runtimes, syncing dependencies, building tools. There are two equivalent forms in islo.yaml: a single setup_script string or a named-step setup_scripts array.
When Setup Runs
Setup runs server-side as part of sandbox creation:
After setup completes, the sandbox is ready and your shell, command, or agent session starts.
Setup runs once during sandbox creation. Reconnecting to an existing sandbox (islo use <existing-name>) does not re-run setup — edit the script and recreate the sandbox to pick up new steps.
Execution Environment
If you need root, set user: root in islo.yaml. If you need a different working directory for your shell or agent session, set workdir: — that affects the session, not the setup script.
setup_script vs setup_scripts
Both fields produce the same result; pick whichever reads better for your project.
setup_script — one shell block:
setup_scripts — named, ordered steps:
Named steps appear individually in setup output and exec logs, which makes failures easier to attribute. Prefer setup_scripts for anything more than a few lines.
Adding Steps with islo add
islo add writes entries into setup_scripts: using built-in recipes.
Edit islo.yaml directly when you need something the recipes don’t cover.
Common Patterns
Python + uv
Node + pnpm
Multi-language with named steps
Install an agent CLI
Templates
islo init --template <name> writes a starter islo.yaml with a sensible setup_script for the language. Run islo init --list to see what’s available; current options include default, python, node, rust, go, and fullstack.