Reference
CLI reference
YoloSearch commands, arguments, flags, and exit codes, with instructions for generating the current manual.
yolosearch serves an index, reads and changes a running server's settings,
shows its statistics, and builds and publishes the immutable segments it reads.
The commands fall into three families, and which family a command belongs to decides where it gets its configuration:
| Family | Examples | Configuration source |
|---|---|---|
| Client verbs | search, push, schema, stats, config, index, delete |
Usually dial --server; schema propose and config export run locally |
| Server verbs | serve, node |
The configuration catalog: discovered files, the environment, flags |
| Offline verbs | segment build, segment publish, catalog * |
They work on an object store directly |
explain parses and lowers locally; with --index, it fetches the schema from
the server.
This page reproduces the command tree and each command's own flags. It does not
repeat the several dozen configuration-backed flags that serve, node, and
the offline verbs share — those are in
the configuration reference, which lists the key,
the flag, and the environment variable for each one together.
Every command accepts these. Each is backed by a setting, so a file or an environment variable can set it too.
| Flag | Type | Default | Key |
|---|---|---|---|
--json |
bool | false |
client.json |
--quiet |
bool | false |
client.quiet |
--server |
string | 127.0.0.1:9500 |
client.server |
--timeout |
duration | 30s |
client.timeout |
--config |
string | — | config.file |
--config-dir |
string | — | config.dir |
--config-search |
bool | true |
config.search |
| Command | Purpose |
|---|---|
catalog |
Resolve, publish, reconcile, or dry-run garbage collection of the catalog (offline) |
catalog compact |
Physically merge active immutable segments and atomically replace them |
catalog gc-dry-run |
Propose unreferenced objects against explicit retention horizons; removes nothing |
catalog publish |
Announce a published segment |
catalog reconcile |
Repair the catalog's lineage from the committed segments without announcing anything new |
catalog resolve |
Print the latest generation, or --generation, as the catalog records it |
config export |
Resolve this process's own configuration offline and print it |
config get |
Show one setting and where its value came from |
config list |
List every setting with its value, scope, and source |
config set |
Override a node-runtime setting until unset or restart |
config unset |
Drop a runtime override |
config watch |
Print every matching setting, then one line per change |
delete |
Tombstone documents by key |
explain |
Show the AST, digest, and lowered query for a Lucene or CQP query |
index describe |
Describe one index and its current schema |
index list |
List every index with its schema version and generation |
manual |
Print the complete reference as Markdown |
node |
Run fleet roles |
push |
Validate, convert, and stream JSON documents into an index |
schema apply |
Apply a schema to an index (additive, auto-versioned) |
schema diff |
Preview a schema change without applying it |
schema history |
List every version of an index's schema |
schema options |
Print the annotation .proto a document schema imports |
schema propose |
Infer an editable schema and normalized JSONL from local documents |
schema show |
Print one version of an index's schema |
search |
Search an index with a Lucene or CQP query |
segment build |
Build one immutable segment from JSONL |
segment publish |
Publish a built segment commit-last and announce it |
serve |
Run a single-process server |
stats |
Show index, node, or fleet statistics |
version |
Print the build identity |
yolosearch serve [SOURCE_URL] [flags]Hosts every index under the object root — or exactly one with --index — and
answers SearchService, IngestService, IndexService, CatalogService,
AdminService, and ConfigService for them.
An empty object root is a valid start: schema apply creates an index while
serving, push fills it, and each index follows the catalog so a published
generation is served without a restart. The listening= line on stdout says
where it serves once every hosted index is resolved and the socket is bound.
| Flag | Type | Default | Meaning |
|---|---|---|---|
--checkpoint |
string | — | Serve one checkpoint directly (the Milestone 1 form) instead of the catalog |
With --checkpoint it answers SearchService and ConfigService only.
yolosearch serve --data-dir ./ys --listen 127.0.0.1:9500
yolosearch serve --index demo --listen 127.0.0.1:9500 \
--cache-dir ./cache --ingest-dir ./ingest --object-dir ./objects
yolosearch --config ys.yml serve
yolosearch serve s3://search-data/production/indexes/articles/The positional SOURCE_URL sets object.source, which attaches a dataset
read-only. See object store.
yolosearch node [flags]Serves any combination of the query-fleet roles plus the maintenance-only compactor role from one process. Catalog-bound roles resolve their generation before the listener opens, so a node that cannot read its catalog fails at startup rather than accepting work it cannot perform.
A dedicated compactor opens no query engine or full-segment cache; it follows
latest and performs single-flight copy-on-write physical merges under the
compaction budgets.
node has no flags of its own — every flag is a configuration-backed one. The
ones that decide topology:
| Flag | Key | Meaning |
|---|---|---|
--roles |
server.roles |
Comma-separated: coordinator, worker, merger, aggregator, compactor, router, builder, publisher |
--listen |
server.listen |
gRPC listen address |
--index |
index.name |
Index for catalog-bound roles |
--zone |
server.zone |
Placement zone this node advertises in |
--node-id |
server.node_id |
Node identity; empty defaults to the bound listen address |
--aggregators |
fleet.aggregators |
Aggregator endpoints |
--fallback-workers |
fleet.fallback_workers |
The dispatch universe and cache-oblivious fallback |
--mergers |
fleet.mergers |
The coordinator's merge tier |
--builders |
fleet.builders |
Builders the router polls and routes across |
--admin-fleet |
fleet.admin_fleet |
Nodes StreamFleetStats fans in; empty refuses the fleet stream |
--lane-slots |
fleet.lane_slots |
Per-lane worker slot pools, lane=count |
--fan-in |
fleet.fan_in |
Children per merge node; zero is the planner's default |
yolosearch node --roles aggregator --listen 127.0.0.1:9601
yolosearch node --roles worker --listen 127.0.0.1:9602 --index demo \
--object-dir ./objects --cache-dir ./cache --aggregators 127.0.0.1:9601
yolosearch node --roles compactor --listen 127.0.0.1:9701 --index demo \
--object-dir ./objects --ingest-dir ./scratchyolosearch search <index> <query> [flags]Parses a Lucene or CQP query, lowers it to the structured request the server executes, and prints the hits — collapsed by key by default. Lowering happens client-side, so a typo lands a caret before any round trip.
Result shape
| Flag | Type | Default | Meaning |
|---|---|---|---|
--top-k |
int | 0 |
Number of results; zero uses the server default of 10 |
--fields |
string | — | Comma-separated projected fields, or * for all stored |
--filter |
string array | [] |
An equality filter field=value; repeatable |
--no-collapse |
bool | false |
Print every hit in rank order without collapsing by key |
--keys |
bool | false |
Stream logical document keys, one per line |
--ids |
bool | false |
Stream 128-bit public document IDs as lowercase hex, one per line |
--dialect |
string | lucene |
lucene or cqp |
--request |
string | — | Read a protojson SearchRequest from FILE instead of a query |
--keys and --ids are line-oriented streaming modes for large result sets.
--ids requests no stored documents and no scores, which is the cheapest
machine-readable output.
Vector and hybrid
| Flag | Type | Default | Meaning |
|---|---|---|---|
--vector-field |
string | — | Vector field used for vector or hybrid search |
--vector-text |
string | — | Embed this text with the field's schema profile |
--vector-file |
string | — | Read a JSON float array from FILE, or - for stdin |
--vector-weight |
float | 1 |
Vector score weight |
--lexical-weight |
float | 1 |
Lexical score weight for hybrid search |
--fusion |
string | weighted |
weighted or rrf |
--probes |
uint32 | 0 |
IVF lists to probe; zero uses the server default |
--candidates |
uint64 | 0 |
ANN candidates to exact-rerank; zero uses the server default |
--exhaustive |
bool | false |
Scan every covered vector instead of IVF-PQ candidate generation |
Approximate tail
| Flag | Type | Default | Meaning |
|---|---|---|---|
--tail |
string | exact |
exact or banded |
--maximum-ordering-error |
float | 0 |
Maximum accepted score inversion in a banded tail |
--score-ranges |
bool | false |
Include conservative score ranges for an approximate tail |
yolosearch search articles 'title:http AND body:"status code"'
yolosearch search articles '[word="colou?r"] []{0,3} [word="blind"]' \
--dialect cqp --fields title,url
yolosearch search articles 'quantum' --vector-field embedding \
--vector-text 'quantum computing' --fusion rrfyolosearch explain <query> [flags]Parses a query and prints its AST, its stable digest, the schema it lowered against, the lowered structured query, and its filters — without touching an index.
| Flag | Type | Default | Meaning |
|---|---|---|---|
--dialect |
string | lucene |
lucene or cqp |
--index |
string | — | Resolve field names against this index's schema |
Without --index the assumed schema is used: every named field is indexed, and
word is every indexed field. --json prints the same as a nested object.
yolosearch push <index> <files...|-> [flags]Reads JSONL, a JSON array, or a single JSON object — auto-detected — validates each document against the index's schema, converts it to a typed document, and streams the batches to the server.
| Flag | Type | Default | Meaning |
|---|---|---|---|
--format |
string | auto |
auto, jsonl, or json |
--batch |
int | 500 |
Documents per batch |
--batch-bytes |
int64 | 2097152 |
Byte cap per batch |
--no-flush |
bool | false |
Accept ephemerally; do not flush or wait for publication |
--require-ack |
bool | false |
Wait for PUBLISHED on every batch |
Unless --no-flush, it flushes and waits for the segment to publish, printing
the sealed segment and generation. A file holding one pretty-printed object is
one document; a file of one-line objects is one document per line.
To load compressed files or archives without uncompressing them first, use the admin console's Ingest section.
yolosearch delete <index> <keys...|-> [flags]Tombstones each given key: that key's current version is superseded by nothing, and it stops appearing in results without invalidating the rest of the index.
| Flag | Type | Default | Meaning |
|---|---|---|---|
--batch |
int | 500 |
Keys per batch |
--batch-bytes |
int64 | 2097152 |
Byte cap per batch |
--no-flush |
bool | false |
Accept ephemerally |
--require-ack |
bool | false |
Wait for PUBLISHED on every batch |
Keys are given as arguments, or read one per line from stdin when the sole
argument is -. Deleting a key that does not exist is not an error: delete
is idempotent.
yolosearch schema apply [file] [flags]Sends a schema to the server's IndexService: a .proto compiled in-process,
a descriptor set (.binpb), or an authored schema (.yaml, .json,
.textproto).
| Flag | Type | Meaning |
|---|---|---|
--proto |
string | A .proto file compiled in-process |
--schema |
string | A descriptor set or authored schema |
--index |
string | The index to apply to |
--message |
string | The document message when the file declares more than one |
--dry-run |
bool | Show the diff and the would-be version without writing |
The index is the one the .proto's (yolosearch.v1.document) option declares,
or --index. An index that does not exist is created at version 1; re-applying
an unchanged schema is a no-op; an additive change mints the next version;
anything else is refused with the diff.
yolosearch schema diff [file] [flags]Renders the change apply would make — the same table the server puts in a
refusal — without writing anything. Exits 1 when the change is not additive.
Flags: --proto, --schema, --index, --message.
yolosearch schema show [flags]| Flag | Type | Default | Meaning |
|---|---|---|---|
--index |
string | — | The index to show |
--version |
uint32 | 0 |
A specific schema version; default is the latest |
yolosearch schema history [flags]Lists every version of an index's schema. Takes --index.
yolosearch schema options [flags]Prints the annotation .proto a document schema imports — the file providing
yolosearch.v1.document and yolosearch.v1.field.
yolosearch schema propose <directory> [flags]Infers an editable schema and normalized JSONL from local documents.
| Flag | Type | Meaning |
|---|---|---|
--index |
string | Index namespace to propose |
--output |
string | New schema .json file; also writes FILE.documents.jsonl |
yolosearch index list [flags]Names every index in the server's object root with its schema version and active generation.
| Flag | Type | Meaning |
|---|---|---|
--prefix |
string | Only list indexes whose name starts with this prefix |
yolosearch index describe <index> [flags]Prints one index's header and its current schema.
yolosearch config get <key> [flags]Shows one setting and where its value came from.
yolosearch config get ingest.seal_age
# ingest.seal_age = 5s (source: api)yolosearch config list [flags]Lists every setting with its value, scope, and source.
| Flag | Type | Meaning |
|---|---|---|
--prefix |
string | Only keys with this prefix; a trailing dot selects one section |
yolosearch config set <key> <value> [flags]Overrides a node-runtime setting until unset or restart. Only settings whose
scope is node-runtime accept it.
yolosearch config set log.level debug
yolosearch config set ingest.seal_age 5syolosearch config unset <key> [flags]Drops a runtime override; the file, environment, or flag value returns.
yolosearch config watch [flags]Prints every matching setting, then one line per change, until interrupted.
Takes --prefix.
yolosearch config export [flags]Resolves this process's own configuration offline and prints it. Unlike the
other config verbs it dials no server.
| Flag | Type | Default | Meaning |
|---|---|---|---|
--yaml |
bool | false |
Print the resolved values as a configuration file |
These are offline verbs. They work on an object store directly and take the
object.* settings rather than --server.
yolosearch catalog resolve [flags]Prints the latest generation, or --generation, as the catalog records it.
yolosearch catalog publish [flags]Announces a published segment, and converges the catalog on everything committed.
| Flag | Type | Meaning |
|---|---|---|
--segment-id |
string | 32 lowercase hex characters |
--expected-parent |
string | Generation this announcement expects to extend |
yolosearch catalog reconcile [flags]Repairs the catalog's lineage from the committed segments without announcing anything new.
yolosearch catalog compact [flags]Physically merges active immutable segments and atomically replaces them.
| Flag | Type | Default | Meaning |
|---|---|---|---|
--input-segments |
string slice | [] |
Active segment IDs to merge; at least two |
--output-segment-id |
string | — | Optional 32-hex output identity |
--job-id |
string | — | Optional 32-hex idempotency key |
--builder-version |
string | yolosearch-compactor |
Publisher identity recorded on the output |
yolosearch catalog gc-dry-run [flags]Proposes unreferenced objects against explicit retention horizons. Removes nothing.
| Flag | Type | Default | Meaning |
|---|---|---|---|
--retained-generations |
int | -1 |
Generations before the latest to keep reachable |
--stream-lifetime |
duration | -1ns |
Longest a query stream may still read a generation |
--grace |
duration | -1ns |
Margin beyond every other horizon |
--minimum-upload-age |
duration | -1ns |
Age below which an object may still be an upload in flight |
yolosearch segment build [flags]Builds one immutable segment from JSONL and writes its checkpoint to the object directory.
| Flag | Type | Default | Meaning |
|---|---|---|---|
--schema |
string | — | .proto, .binpb, .yaml, .json, or .textproto |
--input |
string | — | Document JSONL path |
--work-dir |
string | — | Build and local segment directory |
--checkpoint |
string | — | Checkpoint key prefix |
--message |
string | — | Document message when the .proto declares several |
--node-id |
string | — | Mint a mutation_version for documents without one, tagged with this node identity |
--max-line-bytes |
int | 16777216 |
Maximum JSONL line size |
yolosearch segment build --schema schema.json --input docs.jsonl \
--work-dir ./work --object-dir ./objects --checkpoint segments/demoyolosearch segment publish [flags]Publishes a built segment commit-last and announces it to the catalog.
| Flag | Type | Default | Meaning |
|---|---|---|---|
--segment-id |
string | — | 32 lowercase hex characters |
--segment-dir |
string | — | Locally built segment directory |
--builder-version |
string | — | Builder identity recorded in the commit |
--expected-parent |
string | — | Generation this announcement expects to extend |
--announce |
bool | true |
Announce to the catalog after publishing |
yolosearch stats [<index>] [flags]With no argument, lists every index the server's object root holds with the totals of its active generation; an index the node does not serve is named as such rather than shown empty. With an index, prints the detail and the head of the generation lineage.
| Flag | Type | Default | Meaning |
|---|---|---|---|
--node |
bool | false |
One frame of this node's own metrics |
--fleet |
bool | false |
One assembled fleet frame with its completeness block |
--generation |
string | — | Describe this generation instead of the latest |
--watch |
bool | false |
Redraw on every frame until q or ctrl-c |
Unreachable nodes in a --fleet frame are named, never zero-filled.
yolosearch stats
yolosearch stats articles --json
yolosearch stats --node --watchyolosearch version [flags]Prints the build identity — the same line as --version.
yolosearch manual [flags]Renders the reference from the command tree and the configuration catalog, so it cannot drift from the binary.
| Code | Meaning |
|---|---|
0 |
Success; also --help anywhere |
1 |
The command ran and failed — a refused request, an unreachable server, a bad file. The message names the cause and, for a server failure, its gRPC code and a remedy |
2 |
The invocation was wrong — unknown command, missing subcommand, unknown flag, wrong argument count. The usage follows the message |
yolosearch is one of five binaries. This page covers only it.
| Binary | Documented in |
|---|---|
yolosearch-local |
Local development |
yolosearch-admin |
The admin console |
yolosearch-operator |
Kubernetes |
yolosearchd |
The Milestone 1 wrapper; not covered here |
- Configuration reference — the settings behind most flags
- The Lucene grammar and the CQP grammar — what
searchaccepts - Ingest — what
pushanddeletedo on the server