xorcise command drives the same local instance as the web UI. Most commands are thin REST clients and need an instance running (xorcise up); the last column of the summary says which.
Command summary
xorcise agent delete, xorcise mission rm, and xorcise run rm are accepted aliases of agent rm, mission delete, and run delete.
Conventions
Global options
Running
xorcise with no arguments, or a group with no subcommand such as xorcise agent, prints help and exits 0.
Names, ids, and prefixes
Run ids accept a unique prefix, so the 8-character id fromxorcise run list works everywhere a run id is asked for. Agent arguments take the agent name. Mission arguments take the mission id or its display name — quote a name that contains spaces.
Output streams
Data and success messages go to stdout. Every error, thexorcise ui warning, and the xorcise mission pull progress bar go to stderr, so a script can separate them. A closed downstream pipe, as in xorcise run list | head, is not an error.
Confirmation prompts
Destructive commands prompt only on an interactive terminal. Both--yes and a non-interactive stdin skip the prompt, so nothing hangs in CI. The single exception is xorcise down --purge, which refuses with exit 2 rather than proceeding unconfirmed.
Exit codes
Exit
3 is not a failure. run status, run report, run terminate --wait, run regrade --wait, and mission pull all return it while the work continues on the server, so a CI gate that treats every non-zero code as failure will report a healthy in-progress run as broken. Branch on 3 explicitly.1; set XORCISE_DEBUG=1 for the traceback.
JSON output
Twenty-one commands accept--json: status, doctor, leaderboard, agent list, agent register, agent history, mission list, mission show, run list, run create, run status, run traces, system, config show, config test, config test-terrain, catalog status, catalog connect, catalog disconnect, role show, and role list.
JSON is written straight to stdout, never through the table renderer, so it is never wrapped, styled, or truncated. run status --json is always parseable, including before the result exists: the envelope carries status: "active" or status: "grading" while the command exits 3.
Three commands emit machine-readable output that is not JSON. run prompt emits the prompt body verbatim, run launch-profile emits dotenv lines, and run events export writes JSONL.
CLI ↔ Web UI map
Start and stop
xorcise up
~/.xorcise, scaffolds config.toml, migrates a fresh database, provisions the local Headscale control plane, then polls the REST plane until it answers. Already running is success: it prints already running — UI at <url> and exits 0. If the database already holds data and is behind the current build it refuses to boot and asks you to run xorcise db upgrade. On a start-up timeout it exits 1 and points at ~/.xorcise/serve.log, which is where boot failures are written.
xorcise ui
xorcise status
1 if any of them is down.
Output
xorcise doctor
openssl, /dev/net/tun, and the data directory. The Services section covers the plane ports and, when an instance is expected, the Headscale control plane. Each check is a blocker or a warning; warnings never fail the verdict, so the command exits 1 only when a blocker fails.
xorcise down
--keep-data with --purge is a usage error, exit 2. So is --purge on a non-interactive stdin without --yes.
Instance and results
xorcise system
xorcise status, which probes from your machine.
xorcise leaderboard
no finished runs yet — nothing to rank and exits 0.
Output
agent
xorcise agent list
xorcise agent register
1 suggesting xorcise agent update.
--kind is not cosmetic: it selects the replay adapter that turns traces into events, the telemetry provider that decides which variables run launch-cmd emits and how a run is correlated, and the launch provider that builds the harness command.
xorcise agent update
2.
xorcise agent rename
xorcise agent history
xorcise agent rm
mission
xorcise mission list
0.
--installed with --available is a usage error, exit 2.
The accepted set is the built-in vocabulary plus every proficiency the live library actually carries, so it grows with the library. The built-in vocabulary still holds two terms from the older scale, intermediate and hard, which are accepted but match nothing on a library that uses the ladder above — you get an empty result and exit 0, not an error.
xorcise mission show
xorcise mission pull
0. Ctrl-C cancels the pull on the server and exits 130. Past a 30-minute wait the CLI exits 3 and the job keeps going. No options.
xorcise mission list first and pull an id you actually see rather than assuming a particular mission is available.
xorcise mission ingest
Coming soon. Adding your own mission from a local bundle is not available in this release. The command is a placeholder: every form of it prints the notice below, installs nothing, and exits
0. To get missions today, browse the free XORCISE library with xorcise mission list and install one with xorcise mission pull — no account, key, or sign-in.Output
BUNDLE_DIR positional is optional and is not read, so xorcise mission ingest, xorcise mission ingest ./sqli-login, and a path that does not exist all print the same notice. There are no options and no running instance is required.
When the feature ships, a bundle will be a local directory containing a mission.json manifest — a directory, not an archive — which ingest will validate before building the mission’s image. Validation will belong to ingest and only to ingest; there is no separate validate command. The manifest format is documented now so you can prepare bundles in advance: see Mission manifest.
xorcise mission delete
1.
run
xorcise run list
run status, run report, and run traces.
xorcise run create
xorcise mission pull command rather than a 404.
Output
xorcise run status
Exits
3 while the run is still active or still grading, so it polls cleanly.
xorcise run terminate
With
--wait, the CLI polls for up to four minutes and then exits 3 if grading has not landed. Grading continues either way.
xorcise run regrade
With
--wait, the CLI polls for up to four minutes and then exits 3 if grading has not landed. Grading continues either way.
xorcise run delete
xorcise run report
Exits
3 if the run is still active or still grading.
xorcise run traces
xorcise run prompt
xorcise run launch-profile
KEY=VALUE lines. Export these before the harness starts — a harness reads them at start-up only. The output is empty when the run’s harness has no telemetry provider. No options.
xorcise run launch-cmd
export lines followed by the single-line harness command. When the run’s harness has no launch command it says so and exits 0.
Launch mode is the most common cause of a run that records no traces. Use
host when you start the harness in your own shell.
xorcise run events export
~/.xorcise and only calls the instance when a short prefix needs resolving. This is a debugging and inspection tool, not a grading input.
config
xorcise config show
xorcise config set-model
2. Without a judge model the judge half of every score is unavailable, which caps the overall score at 50%.
xorcise config test
xorcise config set-terrain-model
'' clears a field. Passing no field is a usage error, exit 2.
xorcise config test-terrain
xorcise config set-network
xorcise down then xorcise up. Passing '' unsets a field, and passing no field is a usage error, exit 2.
catalog
xorcise catalog status
1 when the library is enabled but unreachable. The library needs no account, key, or sign-in.
xorcise catalog connect
already enabled and exits 0.
xorcise catalog disconnect
xorcise mission list shows only local missions. Installed missions keep working. Idempotent.
Advanced
xorcise serve
xorcise up starts for you; use up for a normal install. Sibling commands such as status and ui discover a relocated port only for instances started by up.
xorcise db upgrade
xorcise up migrates a fresh database, but refuses to migrate one that already holds data. A history mismatch — a database stamped by a different build — is reported as such and exits 1, with the recovery path being a backup of ~/.xorcise/xorcise.db or a clean start via xorcise down --purge. No options.
xorcise role show
XORCISE_ROLE and defaulting to all. This is not necessarily the role a running instance is serving — ask xorcise system for that.
xorcise role list
Output
all is a complete install. The others boot, but multi-machine deployment is unfinished: control accepts a run and returns a run id without ever launching a container, and runner and headscale serve only a health endpoint.
Environment variables
Configuration resolves highest first: command-line flags, thenXORCISE_* environment variables, then ~/.xorcise/.env, then ~/.xorcise/config.toml.
Every setting is reachable as XORCISE_<FIELD>, so anything xorcise config show lists can be set from the environment. These are the ones the CLI itself reads.
xorcise run launch-profile and xorcise run launch-cmd emit OTEL_* variables for your harness to consume. The CLI does not read them.
Related pages
Configuration keys
Every setting, its environment variable, and its default.
Troubleshooting
Symptom to fix, starting from
doctor and status.