Skip to main content
Migration: CLI is now @isol8/cli (installed as isol8 command).
This page is a flag-by-flag reference for the isol8 CLI.

Global option

flag
Enables debug logs for CLI internals and engine operations.

isol8 run

isol8 run streams output by default. Use --no-stream only when you want buffered output after execution completes.

Input and runtime flags

argument
Script file path. Runtime is auto-detected from extension unless --runtime is provided.
string
Inline code to execute.
python | node | bun | deno | bash | agent
Force runtime instead of extension-based detection. The agent runtime must always be specified explicitly (no file extension mapping).
string
Explicit stdin payload for the execution process.
string
default:"/sandbox"
Working directory for the main code execution. Accepts an absolute path under /sandbox or a relative path resolved from /sandbox. Paths that escape the sandbox boundary are rejected.

Security and resource flags

none | host | filtered
default:"none"
Sets the network egress mode for the container.
  • none: Blocks all network access (default).
  • filtered: Routes traffic through a proxy with whitelist/blacklist enforcement.
  • host: Allows full host network access (use with extreme caution).
If --install is used and --net is not explicitly provided, CLI automatically uses filtered.
--net host gives untrusted code full outbound network access. Prefer none (default) or filtered for most workloads.
repeatable
Adds a regex pattern to the whitelist in filtered mode. Only hostnames matching at least one allow pattern will be permitted.
repeatable
Blacklist pattern for filtered mode.
number
Timeout in milliseconds for package installation and code execution.
string
Memory limit (512m, 1g, etc.).
number
CPU limit as fraction/cores.
number
default:"64"
Maximum number of processes.
number
default:"1048576"
Maximum output size before truncation.
string
default:"512m"
/sandbox tmpfs size.
string
default:"256m"
/tmp tmpfs size.

State and behavior flags

flag
Use persistent mode (mode=persistent).
flag
Keep container alive after execution finishes.
flag
Disable realtime streaming and use buffered execute() path.
repeatable
Install package before execution.In filtered mode, CLI automatically merges default runtime package registry hosts into the allowlist. Explicit --net is never overridden.
repeatable
Inline shell command or path to a script file to run before the main code execution. Runs as the sandbox user from /sandbox. If the value is an existing file path, its contents are read and used as the script. Multiple --setup flags are concatenated with newlines. Useful for cloning repos, creating directories, configuring tools, etc.
repeatable
Inject secret env vars and mask values in output.
string
Extra flags passed to the pi coding agent before the prompt. Only valid with --runtime agent. Common flags: --model <name>, --thinking, --max-tokens <n>.
string
Recursively inject a local directory into the container under /sandbox. Skips .git, node_modules, __pycache__, .venv, venv, and .tox directories. Useful with the agent runtime to provide project files for the agent to work on.
string
Write stdout to local file.
string
Override runtime image.
flag
Enable network request logs in results (filtered mode).

Remote execution flags

string
Execute against remote isol8 serve instance.
string
API key for remote execution (ISOL8_API_KEY fallback).
string
Use a named persistent session on the remote server. The session survives after the CLI exits and can be resumed by passing the same ID again.Implies --persistent — you do not need to pass both. Requires --host — session IDs are a server-side concept.

Examples

isol8 setup

Builds base isol8 Docker images and any prebuiltImages declared in isol8.config.json.
flag
Force rebuild even when images are up to date.
If your config defines prebuiltImages, isol8 setup will also check each one and build any that don’t already exist locally.

isol8 serve

number
default:"3000"
Port for server listener. Resolution order is --port > ISOL8_PORT > PORT > 3000. If the selected port is occupied, the CLI prompts to choose a different port or automatically finds an available one.
string
API key for bearer auth. If omitted, ISOL8_API_KEY environment variable is used. When --auth-db is also provided, this key becomes the master key with admin privileges.
string
Enable DB-backed API key management. When provided without a value or with a file path, uses SQLite (defaults to ~/.isol8/auth.db). Pass a postgres:// or postgresql:// URL for PostgreSQL, or a mysql:// URL for MySQL. The backend is auto-detected from the connection string format. When enabled, the --key value becomes the master key, and additional keys can be created via the /auth/keys endpoint or the isol8 login flow. See Server overview for the full authentication model.
flag
Force re-download of standalone server binary.
flag
Enable debug logs for server internals.

Examples

For full server behavior and endpoints, see the Server docs tab: Server overview and Server routes.

isol8 login

Authenticate with a remote isol8 server that has DB-backed auth enabled. This command exchanges the master key for a short-lived API token via POST /auth/login and stores the credentials locally.
string
required
Server URL to authenticate against (e.g. http://localhost:3000).
string
required
Master API key for the server. This is the same key passed to isol8 serve --key.
string
Optional human-readable name for the login token. Defaults to cli-login-<timestamp>.
number
Token time-to-live in milliseconds. Defaults to 24 hours (86400000).
Once authenticated, credentials are saved to ~/.isol8/credentials.json (file permissions 0600). Subsequent isol8 run --host <url> commands automatically use the stored token without needing --key.

Credential resolution priority

When running remote commands (isol8 run --host ...), the CLI resolves the API key in this order:
  1. --key flag (explicit, always wins)
  2. ISOL8_API_KEY environment variable
  3. Stored credentials from ~/.isol8/credentials.json (if host matches and token is not expired)

Examples

The server must have --auth-db enabled. If DB-backed auth is not active, isol8 login will fail with a 400 error.

isol8 logout

Remove stored credentials from ~/.isol8/credentials.json. This does not revoke the token on the server — it only deletes the local credential file.

Examples

isol8 session

Manage persistent sessions on a remote server.

isol8 session list

Lists all active persistent sessions on the remote server.
string
required
Remote server URL.
string
API key (ISOL8_API_KEY fallback, or stored credentials from isol8 login).
flag
Print raw JSON array instead of the formatted table.

Examples

isol8 session stop

Destroys a specific persistent session on the remote server and releases its resources.
argument
required
Session ID to destroy.
string
required
Remote server URL.
string
API key (ISOL8_API_KEY fallback, or stored credentials from isol8 login).

Examples

isol8 build

Build a custom runtime image with pre-baked dependencies and/or a setup script.
python | node | bun | deno | bash
required
Runtime base image to extend.
repeatable
Package to bake into the image. Supports repeated flags and comma-separated values.
repeatable
Shell command or file path baked into the image. Runs automatically before every execution that uses this image. When an execution request also carries its own --setup, the image-level script runs first followed by the request-level script. If the value points to an existing file, its content is read; otherwise the value is treated as a literal shell command.
string
required
Name/tag for the custom image (e.g. my-python-ml:latest). Metadata labels are embedded automatically.
flag
Force rebuild even if current inputs resolve to an existing up-to-date image.

Examples

isol8 list-custom

List all locally available custom isol8 images.
Displays each custom image’s tag, runtime, pre-installed dependencies, and setup script (if any) based on embedded Docker labels.

isol8 config

isol8 cleanup

flag
Print resolved config as JSON.

isol8 cleanup

flag
Skip confirmation prompt.
flag
Also remove isol8 Docker images.

FAQ

--persistent sets execution mode to persistent (reuses container state across runs). --persist keeps the container alive after a run for inspection/debugging.
--persistent creates a persistent session with an auto-generated ID that is destroyed when the CLI exits. --session-id assigns a user-chosen name and keeps the session alive on the server after the CLI exits, so you can reconnect later with the same ID.
No. isol8 serve accepts --key, but it can also read the API key from ISOL8_API_KEY.
--key sets a single static API key (or master key). --auth-db enables database-backed key management (SQLite, PostgreSQL, or MySQL) where you can create, list, and revoke multiple keys via the /auth/* endpoints. Both can be used together — the --key becomes the master key when --auth-db is enabled.
No. You can always pass --key explicitly or set ISOL8_API_KEY. isol8 login is a convenience that stores credentials locally so you don’t have to provide the key on every command.
Streaming is the default behavior. Use --no-stream if you want buffered output only after the run completes.
The agent runtime runs the pi coding agent inside an isol8 sandbox. The -e value is treated as the prompt, not code. It requires --net filtered with an --allow entry for the LLM API, and an API key via --secret. The CLI automatically raises pidsLimit to 200 and sandboxSize to 2g for agent runs.

Troubleshooting quick checks

  • [ERR] --session-id requires --host: --session-id is a server feature; add --host <url>.
  • [ERR] API key required on serve or remote run: pass --key or set ISOL8_API_KEY.
  • isol8 login fails with 400: the server does not have --auth-db enabled. Restart the server with --auth-db <path>.
  • Stored credentials expired: run isol8 login again to re-authenticate.
  • Runtime not detected from file extension: pass --runtime <name> explicitly.
  • No output appears while command runs: check if --no-stream is enabled.
  • Filtered mode still blocks host: verify --allow regex matches hostname exactly.
  • Agent runtime fails with network error: ensure --net filtered and --allow are set. The agent runtime enforces filtered networking with at least one whitelist entry.
  • Agent runtime out of disk space: increase --sandbox-size (default 2g for agent). Large repos may need 4g+.

See also

Option mapping

Map each CLI flag to config, API, and library equivalents.

Configuration reference

Full config schema, defaults, and precedence rules.

Troubleshooting

Diagnose and fix common CLI/runtime failures quickly.