Migration: CLI is now
@isol8/cli (installed as isol8 command).isol8 CLI.
Global option
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
Script file path. Runtime is auto-detected from extension unless
--runtime is provided.Inline code to execute.
Force runtime instead of extension-based detection. The
agent runtime must always be specified explicitly (no file extension mapping).Explicit stdin payload for the execution process.
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
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).
--install is used and --net is not explicitly provided, CLI automatically uses filtered.Adds a regex pattern to the whitelist in
filtered mode. Only hostnames matching at least one allow pattern will be permitted.Blacklist pattern for filtered mode.
Timeout in milliseconds for package installation and code execution.
Memory limit (
512m, 1g, etc.).CPU limit as fraction/cores.
Maximum number of processes.
Maximum output size before truncation.
/sandbox tmpfs size./tmp tmpfs size.State and behavior flags
Use persistent mode (
mode=persistent).Keep container alive after execution finishes.
Disable realtime streaming and use buffered
execute() path.Install package before execution.In
filtered mode, CLI automatically merges default runtime package registry hosts into the allowlist.
Explicit --net is never overridden.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.Inject secret env vars and mask values in output.
Extra flags passed to the
pi coding agent before the prompt. Only valid with --runtime agent.
Common flags: --model <name>, --thinking, --max-tokens <n>.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.Write stdout to local file.
Override runtime image.
Enable network request logs in results (filtered mode).
Remote execution flags
Execute against remote
isol8 serve instance.API key for remote execution (
ISOL8_API_KEY fallback).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
prebuiltImages declared in isol8.config.json.
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
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.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.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.Force re-download of standalone server binary.
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
POST /auth/login and stores the credentials locally.
Server URL to authenticate against (e.g.
http://localhost:3000).Master API key for the server. This is the same key passed to
isol8 serve --key.Optional human-readable name for the login token. Defaults to
cli-login-<timestamp>.Token time-to-live in milliseconds. Defaults to 24 hours (
86400000).~/.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:
--keyflag (explicit, always wins)ISOL8_API_KEYenvironment variable- Stored credentials from
~/.isol8/credentials.json(if host matches and token is not expired)
Examples
isol8 logout
~/.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
Remote server URL.
API key (
ISOL8_API_KEY fallback, or stored credentials from isol8 login).Print raw JSON array instead of the formatted table.
Examples
isol8 session stop
Session ID to destroy.
Remote server URL.
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.
Runtime base image to extend.
Package to bake into the image. Supports repeated flags and comma-separated values.
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.Name/tag for the custom image (e.g.
my-python-ml:latest). Metadata labels are embedded automatically.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.
isol8 config
isol8 cleanup
Print resolved config as JSON.
isol8 cleanup
Skip confirmation prompt.
Also remove isol8 Docker images.
FAQ
What is the difference between `--persistent` and `--persist`?
What is the difference between `--persistent` and `--persist`?
--persistent sets execution mode to persistent (reuses container state across runs). --persist keeps the container alive after a run for inspection/debugging.What is the difference between `--persistent` and `--session-id`?
What is the difference between `--persistent` and `--session-id`?
--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.Do I need `--key` for `isol8 serve` every time?
Do I need `--key` for `isol8 serve` every time?
No.
isol8 serve accepts --key, but it can also read the API key from ISOL8_API_KEY.What is the difference between `--key` and `--auth-db`?
What is the difference between `--key` and `--auth-db`?
--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.Do I need to run `isol8 login` to use remote execution?
Do I need to run `isol8 login` to use remote execution?
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.Why does `isol8 run` print output in real time?
Why does `isol8 run` print output in real time?
Streaming is the default behavior. Use
--no-stream if you want buffered output only after the run completes.What is the agent runtime?
What is the agent runtime?
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-idis a server feature; add--host <url>.[ERR] API key requiredonserveor remoterun: pass--keyor setISOL8_API_KEY.isol8 loginfails with 400: the server does not have--auth-dbenabled. Restart the server with--auth-db <path>.- Stored credentials expired: run
isol8 loginagain to re-authenticate. - Runtime not detected from file extension: pass
--runtime <name>explicitly. - No output appears while command runs: check if
--no-streamis enabled. - Filtered mode still blocks host: verify
--allowregex matches hostname exactly. - Agent runtime fails with network error: ensure
--net filteredand--alloware 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.