Skip to content

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.

Global flags

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

The command tree

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

Serving

serve

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.

zsh
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.

node

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
zsh
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 ./scratch

Querying

yolosearch 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
zsh
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 rrf

explain

yolosearch 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.


Ingest

push

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.

delete

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.


Schemas and indexes

schema apply

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.

schema 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.

schema show

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

schema history

yolosearch schema history [flags]

Lists every version of an index's schema. Takes --index.

schema options

yolosearch schema options [flags]

Prints the annotation .proto a document schema imports — the file providing yolosearch.v1.document and yolosearch.v1.field.

schema propose

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

index list

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

index describe

yolosearch index describe <index> [flags]

Prints one index's header and its current schema.


Configuration

config get

yolosearch config get <key> [flags]

Shows one setting and where its value came from.

zsh
yolosearch config get ingest.seal_age
# ingest.seal_age = 5s (source: api)

config list

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

config set

yolosearch config set <key> <value> [flags]

Overrides a node-runtime setting until unset or restart. Only settings whose scope is node-runtime accept it.

zsh
yolosearch config set log.level debug
yolosearch config set ingest.seal_age 5s

config unset

yolosearch config unset <key> [flags]

Drops a runtime override; the file, environment, or flag value returns.

config watch

yolosearch config watch [flags]

Prints every matching setting, then one line per change, until interrupted. Takes --prefix.

config export

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

Catalog and segments

These are offline verbs. They work on an object store directly and take the object.* settings rather than --server.

catalog resolve

yolosearch catalog resolve [flags]

Prints the latest generation, or --generation, as the catalog records it.

catalog publish

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

catalog reconcile

yolosearch catalog reconcile [flags]

Repairs the catalog's lineage from the committed segments without announcing anything new.

catalog compact

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

catalog gc-dry-run

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

segment build

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
zsh
yolosearch segment build --schema schema.json --input docs.jsonl \
  --work-dir ./work --object-dir ./objects --checkpoint segments/demo

segment publish

yolosearch 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

Observation

stats

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.

zsh
yolosearch stats
yolosearch stats articles --json
yolosearch stats --node --watch

version

yolosearch version [flags]

Prints the build identity — the same line as --version.

manual

yolosearch manual [flags]

Renders the reference from the command tree and the configuration catalog, so it cannot drift from the binary.


Exit codes

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

The other binaries

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

Next