Reference
Configuration reference
Every YoloSearch setting, grouped by section, with its kind, scope, default, and flag — plus the precedence model and where files are discovered.
YoloSearch has one configuration catalog. Every setting in it has a dotted key, a kind, a scope, a default, an environment variable, and — unless it is a secret or a compile-time value — a flag. The same key means the same thing in a file, in the environment, on a command line, and through the runtime API.
The configuration guide explains the model. This page is the table.
Later layers win:
default < file < environment < flag < runtime API (config set)Every value carries its provenance. config get, config list, and
config export show it.
Scope says what may change at runtime.
| Scope | Meaning |
|---|---|
startup |
Fixed when the process starts. A file reload does not change it |
node-runtime |
Accepts yolosearch config set and takes effect without a restart |
compile-time |
Display only. It reports what this binary is, and cannot be set at all |
Only node-runtime settings accept config set. A startup setting can still
be put in a file or the environment; it just needs a restart to take effect.
The three spellings of a setting derive from its key mechanically:
| Key | Environment | Flag |
|---|---|---|
server.listen |
YOLOSEARCH_SERVER_LISTEN |
--server-listen, aliased --listen |
cache.full_bytes |
YOLOSEARCH_CACHE_FULL_BYTES |
--cache-full-bytes |
object.s3.use_ssl |
YOLOSEARCH_OBJECT_S3_USE_SSL |
--object-s3-use-ssl, aliased --s3-use-ssl |
The environment name is YOLOSEARCH_ followed by the key with every . and
_ rendered as _. Some settings carry a short alias as well as the derived
long flag; both work, and the tables below name the alias where one exists.
Files are discovered in a fixed order, and later files override earlier ones:
/etc/yolosearch/yolosearch.yml, then/etc/yolosearch/conf.d/*.yml$XDG_CONFIG_HOME/yolosearch/yolosearch.yml(default~/.config/yolosearch/), then itsconf.d/*.yml./yolosearch.yml<data-dir>/config.yaml, when--data-diris set--config-dir DIR's*.yml, in name order--config FILE
.yaml is accepted wherever .yml is. --config-search=false
(YOLOSEARCH_CONFIG_SEARCH=false) skips the default locations entirely.
A file nests keys under their sections:
server:
listen: 0.0.0.0:9500
object:
backend: s3
s3:
endpoint: minio:9000
bucket: yolosearch
path_style: true
cache:
full_bytes: 8GiB
storage:
mode: AUTOFour settings are read from the environment only. They have no flag, never appear in a file, and are never copied into a rendered command line or a Kubernetes custom-resource status.
| Setting | Environment |
|---|---|
object.s3.access_key |
YOLOSEARCH_OBJECT_S3_ACCESS_KEY |
object.s3.secret_key |
YOLOSEARCH_OBJECT_S3_SECRET_KEY |
object.s3.session_token |
YOLOSEARCH_OBJECT_S3_SESSION_TOKEN |
embedding.credential |
YOLOSEARCH_EMBEDDING_CREDENTIAL |
Leaving every S3 credential setting empty lets the ambient credential chain
resolve and refresh one. Supplying an expiring access and secret pair without
object.s3.session_token is rejected by the provider.
Two settings exist only to derive others, and both apply their derivation only where nothing more specific was set.
| Setting | Derives |
|---|---|
server.data_dir |
object.backend=fs, object.dir, cache.dir, ingest.dir, and config.file beneath one directory |
object.source |
object.backend, the bucket, prefix and root, the index when the URL names one, and server.read_only |
The listener, identity, roles, and the request size limits.
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
server.data_dir |
string | startup | — | --data-dir (--server-data-dir) |
Developer shortcut: derives object.backend=fs, object.dir, cache.dir, ingest.dir, and config.file beneath one directory where nothing more specific is set. |
server.grace_period |
duration | startup | 5s |
--grace-period (--server-grace-period) |
Graceful shutdown period. |
server.listen |
string | startup | 127.0.0.1:9500 |
--listen (--server-listen) |
gRPC listen host:port serve and node bind; the default is the address the client verbs dial (client.server). |
server.max_receive_bytes |
bytes size | startup | 4MiB |
--max-receive-bytes (--server-max-receive-bytes) |
Maximum gRPC request bytes (at least 64KiB). |
server.max_send_bytes |
bytes size | startup | 4MiB |
--max-send-bytes (--server-max-send-bytes) |
Maximum gRPC response bytes (at least 64KiB, one result frame). |
server.node_id |
string | startup | — | --node-id (--server-node-id) |
Node identity; empty defaults to the bound listen address. |
server.read_only |
bool | startup | false |
--read-only (--server-read-only) |
Refuse every object-store write for this process's lifetime. |
server.roles |
string list | startup | — | --roles (--server-roles) |
Comma-separated roles for node: coordinator, worker, merger, aggregator, compactor, router, builder, publisher. |
server.zone |
string | startup | default |
--zone (--server-zone) |
Placement zone this node advertises in. |
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
log.format |
enum | startup | text |
--log-format |
Log line format. |
log.level |
enum | node-runtime | info |
--log-level |
Minimum level written to stderr. |
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
debug.pprof_listen |
string | startup | — | --pprof-listen (--debug-pprof-listen) |
host:port serving net/http/pprof profiles; empty disables it. |
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
observability.metrics_listen |
string | startup | :9550 |
--metrics-listen (--observability-metrics-listen) |
host:port serving Prometheus exposition at /metrics; empty disables it. |
The authoritative store. The three S3 credential settings are read from the environment only — never a flag, never a file.
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
object.backend |
enum | startup | fs |
--object-backend |
Object store backend. |
object.dir |
string | startup | — | --object-dir |
Filesystem object-store directory; required for the fs backend. |
object.root |
string | startup | indexes |
--object-root |
Object key root. |
object.s3.access_key |
string | startup | — | env only | S3 access key. |
object.s3.anonymous |
bool | startup | false |
--s3-anonymous (--object-s3-anonymous) |
Sign no requests at all, for a bucket that grants public reads. |
object.s3.bucket |
string | startup | — | --s3-bucket (--object-s3-bucket) |
S3 bucket; required for the s3 backend. |
object.s3.endpoint |
string | startup | — | --s3-endpoint (--object-s3-endpoint) |
S3 endpoint host:port; required for the s3 backend. |
object.s3.path_style |
bool | startup | false |
--s3-path-style (--object-s3-path-style) |
Use path-style S3 addressing. |
object.s3.prefix |
string | startup | — | --s3-prefix (--object-s3-prefix) |
S3 key prefix. |
object.s3.region |
string | startup | — | --s3-region (--object-s3-region) |
S3 region. |
object.s3.secret_key |
string | startup | — | env only | S3 secret key. |
object.s3.session_token |
string | startup | — | env only | S3 session token accompanying a temporary access/secret pair, as issued by SSO, an assumed role, or a web identity. |
object.s3.use_ssl |
bool | startup | true |
--s3-use-ssl (--object-s3-use-ssl) |
Use TLS to the S3 endpoint. |
object.source |
string | startup | — | --source (--object-source) |
Dataset URL to attach read-only, such as s3://bucket/root/ for a whole root or s3://bucket/root/indexes/name/ for one index. |
Which index a catalog-bound role serves, and which generation it pins.
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
index.generation |
string | startup | — | --generation (--index-generation) |
Exact generation to pin, or empty for the latest. |
index.name |
string | startup | — | --index (--index-name) |
Index name for catalog-bound serve, worker, coordinator, compactor, router, builder, and publisher roles. |
Where configuration files come from and whether they are watched.
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
config.dir |
string | startup | — | --config-dir |
Directory whose *.yml and *.yaml files are layered in name order after the default locations and before config.file. |
config.file |
string | startup | — | --config (--config-file) |
YAML configuration file layered last among files. |
config.search |
bool | startup | true |
--config-search |
Probe /etc/yolosearch, $XDG_CONFIG_HOME/yolosearch (default ~/.config/yolosearch), and ./yolosearch.yml at startup. |
config.watch |
bool | startup | true |
--config-watch |
Reload the discovered configuration files when any of them changes. |
Used by the client verbs; ignored by a server process.
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
client.json |
bool | startup | false |
--json (--client-json) |
Emit JSON instead of tables. |
client.quiet |
bool | startup | false |
--quiet (--client-quiet) |
Suppress progress output. |
client.server |
string | startup | 127.0.0.1:9500 |
--server (--client-server) |
Server address the client verbs dial. |
client.timeout |
duration | startup | 30s |
--timeout (--client-timeout) |
Client request timeout. |
Four tiers: two on local disk, two in process memory. All of them are startup settings except the scrubber.
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
cache.block_bytes |
bytes size | startup | 2GiB |
--cache-block-bytes |
Block cache byte budget. |
cache.block_entries |
int64 | startup | 1048576 |
--cache-block-entries |
Block cache entry budget. |
cache.dir |
string | startup | — | --cache-dir |
Disposable local cache directory; symlinks in its path are resolved once at startup and the cache then anchors there without following any. |
cache.full_bytes |
bytes size | startup | 8GiB |
--cache-full-bytes |
Full-segment cache byte budget. |
cache.full_entries |
int64 | startup | 1024 |
--cache-full-entries |
Full-segment cache entry budget. |
cache.read_block_bytes |
bytes size | startup | 512MiB |
--cache-read-block-bytes |
Process-wide decoded WavesDB block-cache byte budget shared by immutable segment readers. |
cache.read_open_files |
int64 | startup | 1024 |
--cache-read-open-files |
Process-wide open WavesDB table-file limit shared by immutable segment readers. |
cache.read_open_readers |
int64 | startup | 1024 |
--cache-read-open-readers |
Process-wide decoded WavesDB table-reader count limit. |
cache.read_reader_bytes |
bytes size | startup | 2GiB |
--cache-read-reader-bytes |
Process-wide WavesDB table index and Bloom-filter byte budget. |
cache.scrub_entries |
int64 | node-runtime | 4 |
--cache-scrub-entries |
How many cached full segments one scrubber pass re-reads. |
cache.scrub_interval |
duration | node-runtime | 5m |
--cache-scrub-interval |
How often the background scrubber re-reads cached full segments and checks them against their commits. |
What AUTO weighs when it chooses between hydration and remote blocks.
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
storage.hydrate_throughput_floor |
bytes size | node-runtime | 128MiB |
--hydrate-throughput-floor (--storage-hydrate-throughput-floor) |
Lowest believable hydration throughput in bytes per second. |
storage.hysteresis_denominator |
uint64 | node-runtime | 4 |
--hysteresis-denominator (--storage-hysteresis-denominator) |
Hysteresis denominator; must be below the numerator. |
storage.hysteresis_numerator |
uint64 | node-runtime | 5 |
--hysteresis-numerator (--storage-hysteresis-numerator) |
Hysteresis numerator; must exceed the denominator. |
storage.mode |
enum | startup | AUTO |
--mode (--storage-mode) |
Storage mode: HYDRATE_FULL, REMOTE_BLOCKS, or AUTO (AUTO is refused by the checkpoint-bound serve). |
storage.remote_latency_floor |
duration | node-runtime | 2ms |
--remote-latency-floor (--storage-remote-latency-floor) |
Lowest believable remote request latency. |
storage.remote_throughput_floor |
bytes size | node-runtime | 64MiB |
--remote-throughput-floor (--storage-remote-throughput-floor) |
Lowest believable remote throughput in bytes per second. |
storage.scan_threshold_permille |
uint64 | node-runtime | 200 |
--scan-threshold-permille (--storage-scan-threshold-permille) |
Scan fraction above which AUTO hydrates. |
Who a role talks to. Every one of these is a startup setting.
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
fleet.admin_fleet |
string list | startup | — | --admin-fleet (--fleet-admin-fleet) |
Node host:port endpoints StreamFleetStats fans in; empty refuses the fleet stream. |
fleet.aggregators |
string list | startup | — | --aggregators (--fleet-aggregators) |
Aggregator host:port endpoints. |
fleet.builders |
string list | startup | — | --builders (--fleet-builders) |
Builder host:port endpoints the router polls and rendezvous-routes batches across. |
fleet.fallback_workers |
string list | startup | — | --fallback-workers (--fleet-fallback-workers) |
Worker host:port endpoints: the dispatch universe and the cache-oblivious fallback. |
fleet.fan_in |
int64 | startup | 0 |
--fan-in (--fleet-fan-in) |
Children per merge node in coordinator plans; zero means the planner's default, otherwise at least 2. |
fleet.lane_slots |
string | startup | interactive=4,streaming=2 |
--lane-slots (--fleet-lane-slots) |
Per-lane worker slot pools, lane=count. |
fleet.mergers |
string list | startup | — | --mergers (--fleet-mergers) |
Merge host:port endpoints: the coordinator's merge tier, a merger's delegation peers. |
Admission limits on the router and the seal triggers on the builder.
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
ingest.burst_documents |
int64 | node-runtime | 100000 |
--ingest-burst-documents |
Per-index document tokens available for an ingest burst when the rate quota is enabled. |
ingest.dir |
string | startup | — | --ingest-dir |
Ingest spool/build directory for builders and scratch root for the dedicated compactor role. |
ingest.documents_per_second |
int64 | node-runtime | 0 |
--ingest-documents-per-second |
Per-router, per-index document admission rate; zero disables the rate quota. |
ingest.global_queue_bytes |
bytes size | node-runtime | 256MiB |
--ingest-global-queue-bytes |
Encoded ingest bytes all router sessions may hold while waiting for builders. |
ingest.index_queue_bytes |
bytes size | node-runtime | 64MiB |
--ingest-index-queue-bytes |
Encoded ingest bytes one index may hold while waiting for builders. |
ingest.max_batch_bytes |
bytes size | node-runtime | 4MiB |
--ingest-max-batch-bytes |
Largest accepted ingest batch. |
ingest.max_document_bytes |
bytes size | node-runtime | 16MiB |
--ingest-max-document-bytes |
Largest accepted document. |
ingest.seal_age |
duration | node-runtime | 30s |
--ingest-seal-age |
Age at which an open build seals. |
ingest.seal_bytes |
bytes size | node-runtime | 0 |
--ingest-seal-bytes |
Spooled bytes at which an open build seals; zero derives it as a quarter of builder.sort_memory_bytes. |
ingest.seal_documents |
int64 | node-runtime | 100000 |
--ingest-seal-documents |
Spooled documents at which an open build seals. |
One build's accounted budget and the derivations that hang off it.
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
builder.analysis_batch_documents |
int64 | node-runtime | 0 |
--analysis-batch-documents (--builder-analysis-batch-documents) |
Documents handed to the analysis workers at once; zero derives sixteen per worker. |
builder.analysis_memory_bytes |
bytes size | node-runtime | 0 |
--analysis-memory-bytes (--builder-analysis-memory-bytes) |
The share of builder.sort_memory_bytes reserved for documents in flight through analysis; zero derives a thirty-second of it, clamped to between 64KiB and 32MiB and never more than a quarter of what the public-id and docvalue spools leave. |
builder.analysis_workers |
int64 | node-runtime | 0 |
--analysis-workers (--builder-analysis-workers) |
Goroutines tokenising documents inside one build; zero derives GOMAXPROCS, bounded at eight. |
builder.blob_dictionary |
bool | node-runtime | true |
--blob-dictionary (--builder-blob-dictionary) |
Compress stored values against a dictionary trained per blob file. |
builder.blob_zstd_level |
int64 | node-runtime | 0 |
--blob-zstd-level (--builder-blob-zstd-level) |
Zstd effort for stored values; zero keeps the storage default (7). |
builder.build_concurrency |
int64 | node-runtime | 0 |
--build-concurrency (--builder-build-concurrency) |
Sealed builds that may run through the seal pipeline at once; zero derives one per CPU, bounded at twelve. |
builder.catalog_publication |
enum | startup | direct |
--builder-catalog-publication |
Catalog writer mode: direct is the single-node compatibility path; external stops after commit markers for a lease-fenced publisher role. |
builder.dedupe_index_identities |
int64 | node-runtime | 0 |
--dedupe-index-identities (--builder-dedupe-index-identities) |
Distinct document keys one open spool's dedupe index may hold before it gives up; zero derives 1048576. |
builder.lexical_blob_threshold |
bytes size | node-runtime | 0 |
--lexical-blob-threshold (--builder-lexical-blob-threshold) |
Size at which a posting, position or term value is stored in a blob file rather than inline in the key log; zero keeps the default of 64KiB. |
builder.lexical_block_compression |
string | node-runtime | — | --lexical-block-compression (--builder-lexical-block-compression) |
Codec the term, posting and position families compress key-log blocks with: none, snappy, lz4, lz4fast or zstd. |
builder.max_document_working_bytes |
bytes size | node-runtime | 0 |
--max-document-working-bytes (--builder-max-document-working-bytes) |
What one document may use beyond the partition budget while it is being analyzed; zero derives 64MiB, or a quarter of builder.sort_memory_bytes when that is smaller. |
builder.max_queued_builds |
int64 | node-runtime | 0 |
--max-queued-builds (--builder-max-queued-builds) |
Sealed builds that may wait for or run in the pipeline before ingest is throttled; zero derives it as four times builder.build_concurrency. |
builder.max_token_bytes |
bytes size | node-runtime | 64KiB |
--max-token-bytes (--builder-max-token-bytes) |
Maximum analyzed token size. |
builder.merge_fan_in |
int64 | node-runtime | 0 |
--merge-fan-in (--builder-merge-fan-in) |
Spilled mini-runs merged in one pass; zero derives as many as an eighth of the partition budget affords at builder.run_page_bytes plus 512 bytes of reader overhead each, capped at sixty-four and floored at two. |
builder.output_format_version |
uint64 | startup | 0 |
--builder-output-format-version |
Segment format emitted by builders and compactors; zero selects this binary's current format. |
builder.publish_verification |
string | node-runtime | checksum |
--publish-verification (--builder-publish-verification) |
How a published segment is confirmed: checksum, sample, or readback. |
builder.run_page_bytes |
bytes size | node-runtime | 0 |
--run-page-bytes (--builder-run-page-bytes) |
Read-ahead page one spilled mini-run is buffered in during the final merge; zero derives 64KiB, shrinking it when an eighth of the partition budget cannot hold sixty-four such pages. |
builder.sort_memory_bytes |
bytes size | node-runtime | 256MiB |
--sort-memory-bytes (--builder-sort-memory-bytes) |
Total accounted builder budget: one ledger every part of a build charges against, and the setting the other builder budgets derive from. |
Lease-fenced catalog publication.
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
publisher.announce_interval |
duration | node-runtime | 15s |
--publisher-announce-interval |
Requested commit-marker publication cadence; the daemon floors it at follower.poll_interval and 15 seconds. |
publisher.lease_ttl |
duration | startup | 30s |
--publisher-lease-ttl |
Startup-fixed object-store lease lifetime for the catalog publisher; renewal runs at one third of this value. |
How a node tracks the catalog and how long it keeps retired engines.
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
follower.discovery_interval |
duration | node-runtime | 30s |
--follower-discovery-interval |
How often a root attachment looks for indexes that appeared or disappeared under it. |
follower.generation_overlap |
duration | node-runtime | 30s |
--follower-generation-overlap |
Maximum age of an unseen catalog generation a worker may resolve on demand; in-flight references may keep its engine beyond this window. |
follower.max_staleness |
duration | node-runtime | 5m |
--follower-max-staleness |
How long a follower may go without confirming its installed generation is still current before it refuses new queries. |
follower.poll_interval |
duration | node-runtime | 2s |
--follower-poll-interval |
How often a node checks the catalog's latest pointer. |
follower.retired_generation_grace |
duration | node-runtime | 30s |
--follower-retired-generation-grace |
How long a superseded generation's engine stays open after its last query. |
Size-tiered physical merging of active segments.
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
compaction.enabled |
bool | node-runtime | false |
--compaction-enabled |
Run single-flight size-tiered compaction inside all-in-one serve. |
compaction.interval |
duration | node-runtime | 1m |
--compaction-interval |
Interval between background compaction eligibility checks. |
compaction.max_active_segments |
int64 | node-runtime | 16 |
--compaction-max-active-segments |
Active searchable segment fan-out above which the scheduler may compact. |
compaction.max_inputs |
int64 | node-runtime | 8 |
--compaction-max-inputs |
Maximum inputs in one compaction job; jobs are always single-flight. |
compaction.max_output_bytes |
bytes size | node-runtime | 4GiB |
--compaction-max-output-bytes |
Maximum summed input bytes admitted to one compaction proposal. |
compaction.max_size_ratio |
uint64 | node-runtime | 2 |
--compaction-max-size-ratio |
Largest size ratio allowed between inputs in one tier. |
compaction.min_inputs |
int64 | node-runtime | 4 |
--compaction-min-inputs |
Minimum adjacent similarly-sized inputs in one compaction job. |
compaction.recent_delta |
int64 | node-runtime | 4 |
--compaction-recent-delta |
Newest active segments left uncompacted as an ingest delta tier. |
compaction.target_bytes |
bytes size | node-runtime | 512MiB |
--compaction-target-bytes |
Approximate input-byte target for one size-tiered compaction group. |
Two-phase object reclamation. Both phases are off by default.
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
gc.grace |
duration | node-runtime | 1h |
--gc-grace |
Additional safety margin added to every scheduled GC reachability horizon. |
gc.interval |
duration | node-runtime | 1h |
--gc-interval |
Cadence at which the dedicated compactor role writes a GC proposal and considers a quarantined older proposal. |
gc.maximum_stream_lifetime |
duration | node-runtime | 1h |
--gc-maximum-stream-lifetime |
Longest query-stream lifetime protected when marking superseded generations for scheduled GC. |
gc.minimum_upload_age |
duration | node-runtime | 24h |
--gc-minimum-upload-age |
Minimum age before an unreferenced object can enter a scheduled GC proposal. |
gc.quarantine_age |
duration | node-runtime | 24h |
--gc-quarantine-age |
Minimum age of an immutable GC proposal before a fresh mark may authorize deleting its still-unreachable exact keys. |
gc.retained_generations |
int64 | node-runtime | 2 |
--gc-retained-generations |
Historical catalog generations retained in addition to latest during scheduled GC. |
gc.sweep_enabled |
bool | node-runtime | false |
--gc-sweep-enabled |
Allow the dedicated compactor role to delete freshly re-proven orphan objects after an immutable dry-run proposal passes quarantine. |
Server-side ceilings on what a request may ask for.
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
query.collapse_key_versions |
bool | startup | true |
--collapse-key-versions (--query-collapse-key-versions) |
Return one hit per document key, the copy with the greatest mutation version. |
query.default_top_k |
uint64 | node-runtime | 10 |
--query-default-top-k |
top_k when a request names none. |
query.max_ast_depth |
uint64 | node-runtime | 32 |
--query-max-ast-depth |
Deepest query nesting either grammar accepts. |
query.max_results |
uint64 | node-runtime | 0 |
--query-max-results |
Ceiling on maximum_results per request; zero keeps the engine default. |
query.phrase_gap_expansion_limit |
uint64 | node-runtime | 64 |
--query-phrase-gap-expansion-limit |
Most exact gap variants a {m,n} quantifier may expand to. |
query.regex_max_expansions |
uint64 | node-runtime | 256 |
--query-regex-max-expansions |
Most dictionary terms a regex or prefix may expand to before the query is refused. |
The bounded approximate lexical tail. Off by default.
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
tail.impact_enabled |
bool | node-runtime | false |
--tail-impact-enabled |
Persist score-banded approximate-tail data. |
tail.impact_maximum_bands |
uint64 | node-runtime | 64 |
--tail-impact-maximum-bands |
Maximum score-impact bands persisted for one term. |
tail.impact_target_documents |
uint64 | node-runtime | 4096 |
--tail-impact-target-documents |
Target postings per persisted impact run. |
tail.maximum_ordering_error |
float64 | node-runtime | 0 |
--tail-maximum-ordering-error |
Server ceiling on accepted approximate-tail score-ordering error; zero requires exact fallback. |
IVF-PQ construction and per-request candidate generation.
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
vector.bits_per_code |
uint64 | node-runtime | 8 |
--vector-bits-per-code |
Bits in each PQ subquantizer code. |
vector.build_memory_bytes |
bytes size | node-runtime | 0 |
--vector-build-memory-bytes |
Per-build vector training and assignment memory; zero derives a bounded share of builder.sort_memory_bytes. |
vector.centroids |
uint64 | node-runtime | 0 |
--vector-centroids |
IVF coarse centroid count; zero derives it deterministically from population. |
vector.flat_threshold |
uint64 | node-runtime | 10000 |
--vector-flat-threshold |
Per-segment vector population at or below which candidate generation stays exhaustive. |
vector.list_block_documents |
uint64 | node-runtime | 0 |
--vector-list-block-documents |
Target vector entries per IVF-list block; zero follows the document-value block geometry. |
vector.maximum_training_vectors |
uint64 | node-runtime | 4096 |
--vector-maximum-training-vectors |
Maximum deterministic training samples retained per vector field. |
vector.query_candidate_multiplier |
uint64 | node-runtime | 10 |
--vector-query-candidate-multiplier |
Default ANN candidates as a multiple of requested top_k. |
vector.query_default_probes |
uint64 | node-runtime | 8 |
--vector-query-default-probes |
IVF coarse lists probed when a vector request does not specify probes. |
vector.query_maximum_candidates |
uint64 | node-runtime | 100000 |
--vector-query-maximum-candidates |
Hard per-request candidate generation and exact-rerank cap. |
vector.query_maximum_probes |
uint64 | node-runtime | 1024 |
--vector-query-maximum-probes |
Hard per-request IVF probe cap. |
vector.query_memory_bytes |
bytes size | node-runtime | 256MiB |
--vector-query-memory-bytes |
Per-process admission budget for decoded vector-query working sets. |
vector.subquantizers |
uint64 | node-runtime | 0 |
--vector-subquantizers |
PQ subquantizer count; zero derives a geometry compatible with each vector field's dimension. |
vector.training_iterations |
uint64 | node-runtime | 20 |
--vector-training-iterations |
Maximum deterministic k-means iterations during IVF-PQ training. |
The four embedding providers, their limits, and the model cache.
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
embedding.credential |
string | startup | — | env only | Optional external embedding bearer token. |
embedding.external_allow_http |
bool | startup | false |
--embedding-external-allow-http |
Allow plain HTTP external embedding endpoints for trusted development networks. |
embedding.external_batch_size |
int64 | startup | 128 |
--embedding-external-batch-size |
Maximum texts in one external embedding request. |
embedding.external_concurrency |
int64 | startup | 8 |
--embedding-external-concurrency |
Concurrent external embedding requests per process. |
embedding.external_max_retry_after |
duration | startup | 2s |
--embedding-external-max-retry-after |
Largest Retry-After delay accepted from an external embedding endpoint. |
embedding.external_request_bytes |
bytes size | startup | 8MiB |
--embedding-external-request-bytes |
Maximum encoded external embedding request bytes. |
embedding.external_response_bytes |
bytes size | startup | 64MiB |
--embedding-external-response-bytes |
Maximum external embedding response bytes read before JSON decoding. |
embedding.external_retries |
int64 | startup | 2 |
--embedding-external-retries |
Retry attempts after the first retryable external embedding failure. |
embedding.external_retry_base |
duration | startup | 50ms |
--embedding-external-retry-base |
Base exponential backoff for external embedding retries. |
embedding.external_timeout |
duration | startup | 30s |
--embedding-external-timeout |
Deadline for one external embedding HTTP attempt sequence. |
embedding.grpc_allow_insecure |
bool | startup | false |
--embedding-grpc-allow-insecure |
Allow plaintext gRPC embedding endpoints on trusted internal networks. |
embedding.grpc_batch_size |
int64 | startup | 128 |
--embedding-grpc-batch-size |
Maximum texts in one gRPC embedding request. |
embedding.grpc_concurrency |
int64 | startup | 8 |
--embedding-grpc-concurrency |
Concurrent gRPC embedding requests per process. |
embedding.grpc_request_bytes |
bytes size | startup | 8MiB |
--embedding-grpc-request-bytes |
Maximum encoded gRPC embedding request bytes. |
embedding.grpc_response_bytes |
bytes size | startup | 64MiB |
--embedding-grpc-response-bytes |
Maximum encoded gRPC embedding response bytes. |
embedding.grpc_timeout |
duration | startup | 30s |
--embedding-grpc-timeout |
Deadline for one gRPC embedding request. |
embedding.grpc_work_class |
enum | startup | auto |
--embedding-grpc-work-class |
gRPC embedding scheduler class; auto maps queries to interactive and indexing to bulk. |
embedding.internal_batch_size |
int64 | startup | 32 |
--embedding-internal-batch-size |
Maximum texts in one internal embedding batch. |
embedding.internal_concurrency |
int64 | startup | 2 |
--embedding-internal-concurrency |
Concurrent pure-Go internal embedding batches. |
embedding.internal_enabled |
bool | startup | false |
--embedding-internal-enabled |
Enable the pure-Go internal embedding runtime. |
embedding.model_cache_bytes |
bytes size | startup | 10GiB |
--embedding-model-cache-bytes |
Maximum installed bytes in the internal-model cache. |
embedding.model_cache_dir |
string | startup | — | --embedding-model-cache-dir |
Checksum-addressed internal-model cache directory. |
embedding.model_cache_packages |
int64 | startup | 8 |
--embedding-model-cache-packages |
Maximum installed internal-model packages. |
embedding.model_download_allow_http |
bool | startup | false |
--embedding-model-download-allow-http |
Allow plain HTTP model manifests and artifacts for trusted development networks. |
embedding.model_download_concurrency |
int64 | startup | 2 |
--embedding-model-download-concurrency |
Concurrent verified internal-model artifact downloads. |
embedding.model_download_timeout |
duration | startup | 10m |
--embedding-model-download-timeout |
Deadline for one internal-model package installation. |
embedding.model_manifest_bytes |
bytes size | startup | 1MiB |
--embedding-model-manifest-bytes |
Maximum bytes in one internal-model manifest. |
embedding.model_package_bytes |
bytes size | startup | 4GiB |
--embedding-model-package-bytes |
Maximum bytes in one downloaded internal-model package. |
embedding.query_cache_bytes |
bytes size | startup | 64MiB |
--embedding-query-cache-bytes |
Maximum float-vector bytes retained by the text-query embedding cache. |
embedding.query_cache_entries |
int64 | startup | 4096 |
--embedding-query-cache-entries |
Maximum completed text-query embeddings retained per process. |
embedding.query_cache_ttl |
duration | startup | 10m |
--embedding-query-cache-ttl |
Lifetime of a completed text-query embedding cache entry. |
Compile-time and display-only.
| Key | Kind | Scope | Default | Flag | Meaning |
|---|---|---|---|---|---|
format.minimum_reader_version |
uint64 | compile-time | 1 |
— | Oldest segment format this binary reads. |
format.segment_version |
uint64 | compile-time | 5 |
— | Segment format this binary writes. |
config.watch defaults to true: the discovered configuration files are
reloaded when any of them changes. A reload that is refused leaves the previous
configuration in place, and that refusal is visible in metrics before it is
visible in logs:
| Metric | Meaning |
|---|---|
yolosearch_config_reloads_total |
Reloads that were applied |
yolosearch_config_reload_failures_total |
Reloads that were refused; the previous configuration stayed |
- Configuration guide — the model, with worked examples
- Sizing — how these settings affect capacity
- CLI reference — the commands that read and change them