CLI Reference
The waratah binary is the developer orchestrator. Every subcommand below
is defined by clap in waratah_bin/src/main.rs; run --help on any of them
for the authoritative flag list.
Global
| Option | Meaning |
|---|---|
|
Print compile-time build provenance (workspace semver, |
waratah start
Start the S/P/O partitions, the string registry, and a compute node as child
processes over gRPC. The command daemonizes itself by default: it returns
once the server is up (or reports "still starting" when a first-boot index
auto-rebuild is running), stdout and stderr are appended to
{data_dir}/logs/output.txt and error.txt — the working directory for
the memory backend, which also writes its waratah-dev.pid pidfile there —
and storage children inherit the same redirected streams. --debug traces
go to {data_dir}/logs/debug.txt (./debug.txt for the memory backend),
freshly truncated per start. --foreground keeps the
process attached to the terminal instead (stderr stays stderr). --query and
--no-http imply --foreground: a one-shot query’s results and the REPL
need the calling terminal. Stop a daemon with waratah stop.
The pidfile is a start’s claim on its stop handle: a start refuses to run when the pidfile already names a live cluster (the file would otherwise be overwritten and the running cluster left unstoppable), while a stale pidfile from a crashed run — a dead pid — is overwritten normally. On exit a run removes the pidfile only when it still names itself.
| Option | Meaning |
|---|---|
|
Five-process address table (TOML) at an explicit path. Without it,
|
|
Directory holding |
|
Stay attached to this terminal (the historical behavior). Without it the cluster daemonizes: the command returns after reporting the pid, URLs, and log paths. |
|
Directory where |
|
Persist partitions to RocksDB under |
|
Load the weather/city demo dataset before serving queries. |
|
Run one SPARQL query and exit instead of starting the HTTP server. Implies
|
|
RDF4J HTTP listen address (default |
|
Skip the HTTP server and use the stdin SPARQL REPL instead. Implies
|
|
Log SPARQL query text, timings, and client-facing errors: stderr in
foreground mode; when daemonized, |
|
Seat inner-join arms by the total seating cost instead of the default
|
|
SPARQL DESCRIBE algorithm (default |
|
SPARQL default graph is the union of all named and unnamed graphs. |
|
Strict SPARQL 1.1 adherence: gate Waratah’s documented deviations behind spec-strict behavior (currently gYear-family ordering comparisons become type errors). |
|
Staging parent for HTTP ingest. Files live in |
|
Root for query spill files (external ORDER BY runs, Grace join partitions,
parked pages, DISTINCT seen-sets). Defaults to |
|
Enable the Jupyter notebook service: a jupyter-server sidecar (one per
compute) reverse-proxied at |
|
Contents root for the notebook service. Defaults to
|
|
Python interpreter for the sidecar; skips auto-provisioning. Default: a
pinned venv auto-created at |
|
Loopback bind for the notebook sidecar (default |
|
Jupyter auth token (default: minted at startup). |
|
Kernel idle culling timeout in seconds (default 3600). Also settable as
|
|
GeoSPARQL S2 covering parameters, defaults 0 / 24 / 40 (process-local). Changing them requires
|
waratah standalone
Open S/P/O and the registry in this process — no child processes, no gRPC —
and run compute in the foreground. Takes the same flags as waratah start
except the spawn-only ones: no --config (there is nothing to address), no
--bin-dir (nothing to locate), and no --foreground / daemonization
(always foreground). The pidfile is written when --data-dir is given.
See the table above for the shared flag meanings.
waratah stop
Stop a running cluster (SIGTERM via its pidfile). Storage children and the notebook sidecar go with it.
| Option | Meaning |
|---|---|
|
Data dir of the cluster to stop; the pidfile is
|
waratah import
Stream an RDF file into a RocksDB data directory (or a running cluster).
Formats: Turtle, TriG, N-Triples, N-Quads, RDF/XML; .gz is fine.
| Option | Meaning |
|---|---|
|
The RDF file to load. |
|
RocksDB directory to write (created if missing; existing data is kept).
Required unless |
|
Commit timestamp for every imported quad (default: current unix millis). |
|
Force a full-range compaction after flush. Online: once at the end. Offline always compacts after load so statistics land in SST properties. |
|
In-process load: no gRPC. Exclusive with |
|
Attach to a running cluster via |
|
Skip the write-ahead log (offline only). |
|
Ingest via SstFileWriter (offline only; not implemented yet). |
|
Static five-process address table (TOML); defaults to |
|
Directory holding |
waratah explain
Print SPARQL parse / Sparopt / planned algebra — no cluster required. This is
the offline twin of the HTTP explain endpoint.
| Option | Meaning |
|---|---|
|
The query to optimize ( |
|
|
|
Pretty-print S-expression and |
|
SPARQL default graph is the union of all named and unnamed graphs. |
|
Seat inner-join arms by total seating cost so EXPLAIN shows the seat a
server started with |
waratah catalog rebuild
Scan SPOG and write Present for each distinct named graph (skipping the
default graph) into the S-axis named-graph catalog.
| Option | Meaning |
|---|---|
|
RocksDB data directory ( |
waratah geo rebuild-index
Wipe and recompute every O-axis S2 posting under the CURRENT coverer config.
Required after changing --geo-min-level / --geo-max-level /
--geo-max-cells, or after a covering algorithm change. The O partition
never runs the coverer; this is the compute/offline side.
| Option | Meaning |
|---|---|
|
RocksDB data directory ( |
waratah geo census
Read-only per-level census of the O-axis S2 posting store: posting counts by cell level, envelope coverage, and the statistics histogram’s incidence mass. Use it to diagnose geo window-estimate over-counting — it is the tool that exposed the level-8 coarse-side histogram move.
| Option | Meaning |
|---|---|
|
RocksDB data directory ( |
|
Estimate + drain-truth decomposition for one query window given as WKT
(the same literal form a |
|
Coverer configuration for the window’s query covering (defaults match
|
waratah temporal rebuild-index
Wipe and recompute every O-axis temporal posting (partition-side walk). Required after changing the temporal covering parameters, and the manual path for what compute startup auto-triggers when the epoch is missing.
| Option | Meaning |
|---|---|
|
RocksDB data directory ( |
|
Minimum covering node level (temporal index). Default 0. |
|
Maximum covering node level (temporal index; instants bypass the covering entirely). Default 110. |
|
Maximum nodes per interval (temporal index). Default 32. |
waratah compact
Flush and compact the targets of an existing RocksDB data directory (offline).
| Option | Meaning |
|---|---|
|
RocksDB data directory ( |
|
Targets to compact ( |
Runtime environment variables
These are read by the engine processes at startup. The first group is operator-facing; the rest are internal tuning knobs whose authoritative documentation lives beside their definition in the crate sources.
| Variable | Effect |
|---|---|
|
Selects the storage backend at runtime: unset / |
|
Domain scans: enable the single-iterator seek-union ( |
|
Domain scans: parallel worker count ( |
|
Registry seek walk: enable parallel worker slices ( |
|
Process-wide limit on concurrently live registry seek-walk slices across all callers (values above it are clamped). |
|
Overrides the blob cache byte budget. |
Internal tuning knobs (see the storage, partition, and compute crate sources
for semantics and defaults): WARATAH_PIN_INDEX,
WARATAH_WARM_CACHE, WARATAH_SCAN_ASYNC_IO,
WARATAH_ITERATOR_READAHEAD_SIZE, WARATAH_RESOLVE_MULTIGET,
WARATAH_RESOLVE_CACHE_ENTRIES, and the console-artifact overrides
WARATAH_CONSOLE_DIST, WARATAH_CONSOLE_STUB,
WARATAH_CONSOLE_MISSING_SW.