Project Setup

islo init and islo add are the two commands that create and edit islo.yaml for you. Use init once to scaffold the file, then add to append setup steps as you bring more tools into the project.

For the full file schema, see islo.yaml. For how setup scripts execute inside the sandbox, see Setup Scripts.

islo init

Scaffold a new islo.yaml in the current directory.

$islo init [options]
OptionDescription
-t, --template <name>Use a built-in template (see Templates). Omit for an interactive wizard.
--listPrint the available templates and exit.
-f, --forceOverwrite an existing islo.yaml.

Examples:

$islo init # Interactive wizard
$islo init --template python # Start from the Python template
$islo init --template node --force # Replace an existing islo.yaml
$islo init --list # List templates

The wizard inspects the current directory and proposes setup steps for the languages and tools it finds, then writes the resulting islo.yaml. If the file already exists, init refuses to overwrite unless you pass --force.

Templates

TemplateAliasesWhat you get
defaultA commented-out starter islo.yaml with all fields shown
pythonpyuv install + uv sync
nodenodejs, js, javascriptcorepack enable + pnpm install --frozen-lockfile
rustrsEmpty starter (add Cargo steps with islo add)
gogolangEmpty starter (add Go steps with islo add)
fullstackfull-stack, fullpnpm + uv (frontend + Python backend)

Run islo init --list to see the live list — new templates may have been added since.

islo add

Append setup steps to islo.yaml. Each invocation writes one or more entries under setup_scripts:.

$islo add [tool] [version] [options]
Argument / OptionDescription
tool (positional)Recipe name (e.g., python, node). Omit to detect tools interactively.
version (positional)Version to install. Omit to use the recipe’s default.
--script <text>Add a custom shell snippet instead of looking up a recipe.

Examples:

$islo add # Interactive: detect tools, pick which to add
$islo add python 3.12 # Python 3.12 via the built-in recipe
$islo add node 20 # Node 20 via the built-in recipe
$islo add --script 'apt-get install -y curl' # Append a one-off custom step

The interactive flow (islo add with no args) scans the project for signals — lockfiles, manifests, version files — and shows a checklist of recipes you can enable. Pick the ones you want and Islo writes the entries.

Built-in recipes

islo add <name> knows recipes for the following:

Languages: python, node, go, rust, ruby, java

Package managers and build tools: uv, poetry, pip, pnpm, yarn, npm, bundler, cargo, go-modules

Services: docker-compose

Agent CLIs: claude-code, codex, gemini-cli, cursor-cli, copilot-cli, doubleagent

Other CLIs: gh, ripgrep, fd, jq

For anything not in the registry, use --script to add the install commands directly.

Custom scripts

--script is the escape hatch when no recipe fits:

$islo add --script 'apt-get update && apt-get install -y postgresql-client'

The text is added verbatim as a new step under setup_scripts:. Edit the entry in islo.yaml afterwards if you want to rename it or split it across multiple lines.

Workflow

A typical project bootstrap:

$islo init --template python # Scaffold islo.yaml
$islo add poetry # Add Poetry on top of the Python recipe
$islo add --script './scripts/seed-db.sh'
$islo use my-project # Create the sandbox; setup steps run

After this point, islo.yaml is just a normal file in your repo — edit it directly when you outgrow the recipes.