CLI reference
One binary, verse, plays every role. Selected flags: --seed (deterministic
identity), --port, --addr, --registry, --honest, --price,
--backing, --prompt, --steps, --model, --tokenizer, --gateway.
Roles (long-running services)
One subcommand — verse serve --role <role> — plays every long-running role:
| Command | Role |
|---|---|
verse serve --role registry | catalog — collects signed ServiceCards, answers Discover |
verse serve --role mint | the payment island — issue / spend / balance ecash |
verse serve --role verifier | pulls capsule+input by CID and replays the receipt |
verse serve --role provider [--honest true|false] | quotes, runs capsules, signs receipts. --honest false returns a forged-but-signed receipt (a “liar”, for tests) |
verse serve --role store | content-addressed blob storage (verse:store/blob@1) — replicate + verify-on-read + heal |
verse serve --role stage | one shard of a distributed inference pipeline (verse:model/stage@1) |
verse serve --role gateway | control-plane gateway a CLI client drives |
verse serve --role bridge | HTTP/JSON bridge from the open web to the mesh |
verse serve --role guardian | a FROST threshold-mint guardian (verse:mint/guardian@1) |
There is no model role: LLM inference runs as an ordinary content-addressed
WASM capsule (see Primitives), so it is replay-verifiable
like any other job.
Determinism — no network needed
| Command | What it does |
|---|---|
verse det digest | the golden + conformance digests for this build, on this engine |
verse det vectors [--json] | the published battery: (function, input bits, output bits) |
verse det check --vectors <file> | recompute and diff — exit 1 on drift, naming the function and input that moved |
verse det check --expect-golden <hex> | pin a digest instead of a file (--expect-conformance likewise) |
See Determinism for what this proves and what it doesn’t.
Capsule development — no network needed
| Command | What it does |
|---|---|
verse capsule new <name> | scaffold a capsule plus the commands to run and test it |
verse capsule run|trace <file> [--input <hex|@file|text>] [--fuel N] [--json] | run it in the REAL deterministic runtime locally — output, fuel and output-cid are bit-identical to what the mesh computes and replays |
verse capsule test <file> --expect-output <hex|text> [--expect-fuel N] | assert; exit 0/1, for CI |
verse capsule cid <file> | the BLAKE3 content-id the receipt addresses |
Drivers & tools
| Command | What it does |
|---|---|
verse client | the e2e driver: discover → escrow → run both scenarios → assert outcomes |
verse status | discover + handshake every node, print the mesh |
verse ping --addr host:port | handshake + inspect one node |
verse generate --prompt "…" | local LLM smoke test — loads the model and generates, no networking |
verse ask [--gateway host:port] "…" | run LLM inference routed through your gateway node |
verse bench | throughput + latency vs concurrency |
verse mesh | summarize the live mesh |
Deterministic identities
--seed <name> derives a node’s identity from blake3(name), so independent
processes/containers agree on each other’s NodeId without a discovery
service — they just share the seed name. VERSE’s NodeId (ed25519 public key)
equals the iroh endpoint id, since both keys are the same 32 bytes.
See Security for what’s enforced and what remains.