CLI reference
Generated from enscrive 0.1.0+499715a (2026-08-01) on 2026-08-01 by walking --help over
every command the binary exposes. Every block below is the binary’s own output,
verbatim. If this page and the CLI disagree, the CLI is right and this page is
stale — please open an issue.
The generator makes exactly two edits to that output, both mechanical:
- The
Usage:line of nested commands. The binary prints the leaf name alone (Usage: ensure …); the generator rewrites it to the full invocation you actually type (Usage: enscrive corpus ensure …). - Internal references are removed. Some help text carries issue ids and planning references — tracker keys, tier ids, and internal programme milestones — that mean nothing outside Enscrive. Nothing else in the description changes.
Global options
--api-key, --embedding-provider-key, --endpoint, --profile and
--output are global: they are accepted on every command, not just at the
top level, so enscrive corpus ensure --name x --output json is valid.
They are listed only under enscrive below and do not appear
in any subcommand’s option list — that is how the binary renders its help, and
this page reproduces it faithfully rather than editing it.
How to read this page
This is the complete surface of the binary, which is a wider surface than the supported path. Three things are worth knowing before you use it as a menu:
- Start with the quickstart. The commands proven
end-to-end on every release — install,
init,start,project init,corpus ensure,ingest documents,search,corpus document delete, and the inspection verbs — are the ones the quickstart teaches, and they are exercised against a real stack by the clean-room CI gate on every pull request. Commands outside that set are real, but less travelled. - Always scope a search to a corpus.
enscrive searchaccepts--corpusas optional and the help text below says so, but omitting it currently fails against the local stack. Pass--corpuson every search. - Many commands call the managed
/v1API atapi.enscrive.io, which is pre-launch and not yet serving — see Install and the API overview. Against a local self-managed stack they target your own endpoint instead.
Commands
enscrive initenscrive startenscrive stopenscrive statusenscrive bootstrapenscrive projectenscrive healthenscrive searchenscrive completeenscrive agentsenscrive recordsenscrive ratecardenscrive embeddingsenscrive ingestenscrive segmentenscrive preview-chunkingenscrive preview-with-templateenscrive segmentation-templatesenscrive analyzeenscrive modelsenscrive corpusenscrive voicesenscrive evalsenscrive logsenscrive backupenscrive revisionsenscrive restoreenscrive exportenscrive usageenscrive walletenscrive jobsenscrive batch-setsenscrive adminenscrive datasetsenscrive eval-defsenscrive license
enscrive
Enscrive CLI - Perfect short term memory and limitless long term memory for humans and AI agents - Developer portal on localhost:3000 and enscrive.io
Usage: enscrive [OPTIONS] <COMMAND>
Commands:
init Initialize a managed or self-managed Enscrive profile
start Start the local self-managed stack for the selected profile
stop Stop the local self-managed stack for the selected profile
status Show resolved profile and local stack status
bootstrap Re-run tenant / environment / API-key bootstrap against an already-running local stack. `enscrive start` does this as one of its steps; use this when that step is what failed, so you can recover without tearing down a working stack. Idempotent
project Per-project memory — give the project in this directory its own isolated Enscrive tenant, so any agent working here can remember, recall, and retire without global config. Design of record: ADR ENSCRIVE-CLI-APP-MEMORY-2026-07-31
health Check stack health through /health
search Search corpora through /v1/search
complete Managed reasoning — open-ended completion through /v1/complete (proxies the tenant's BYOK or platform-managed provider key, budget-gated and metered). For a persisted, corpus-bound agent that answers repeatedly against the same retrieval config, see `Commands::Agents`
agents Enscrive Agents — persistent, corpus-bound agents through /v1/agents. Each agent is a saved {provider, model, system_prompt, corpus_id, top_k, max_tokens} config; `answer` retrieves from the bound corpus and reasons over it in one call (thin passthrough — no local scoring, budget-gated and metered same as `complete`)
records Records — the bounded structural store (`/v1/records`). Tenant-scoped collections of JSON records with declared indexed fields for typed filter/sort/keyset-page queries. Slice 1 is the structural store; embedding-backed collections (`--embed`) and `--vector-query` return 501 until Slice 2. Requires the `records` API-key capability
ratecard Rate card commands (public, no auth required)
embeddings Embedding commands
ingest Ingestion commands
segment Segmentation commands
preview-chunking Preview how content will be chunked without ingesting it (`POST /v1/preview-chunking`). All preview is local — no server-side storage or metering
preview-with-template Preview template-driven segmentation of a document (`POST /v1/preview-with-template`) [Pro]
segmentation-templates Segmentation template commands (`/v1/segmentation-templates*`)
analyze Content analysis commands
models Model discovery commands
corpus Corpus commands
voices Voice commands
evals Evaluation commands
logs Logs and observability commands
backup Operator backup and restore commands (admin `/v1/admin/*` surface; for the tenant surface see `enscrive revisions` + `enscrive restore`)
revisions Revisions of your tenant data — point-in-time restore points
restore Restore tenant data to a revision (tenant-wide, point-in-time; destructive — confirmation required)
export Data export commands
usage Usage and metering commands
wallet Wallet balance + debit history commands
jobs Background job management commands
batch-sets Batch-set management commands
admin Operator admin commands (requires Admin capability)
datasets Evals 2.0 dataset primitive commands (list/get/describe/delete/upload). Distinct from legacy `enscrive evals datasets` which targets `/v1/evals/datasets/*` (eval_campaigns lineage)
eval-defs Evals 2.0 eval definitions + runs (`/v1/eval-defs/*`, `/v1/eval-runs/*`). Distinct from legacy `enscrive evals campaigns`
license License management for self-managed / enterprise deployments. The enscrive-developer service verifies the JWT at startup — the CLI only stores it
help Print this message or the help of the given subcommand(s)
Options:
--api-key <API_KEY>
API key (or set ENSCRIVE_API_KEY) [env: ENSCRIVE_API_KEY=]
--embedding-provider-key <EMBEDDING_PROVIDER_KEY>
Optional BYOK embedding provider key forwarded as X-Embedding-Provider-Key [env: ENSCRIVE_EMBEDDING_PROVIDER_KEY=]
--endpoint <ENDPOINT>
Base URL of enscrive-developer (or set ENSCRIVE_BASE_URL) [env: ENSCRIVE_BASE_URL=]
--profile <PROFILE>
Named CLI profile from ~/.config/enscrive/profiles.toml [env: ENSCRIVE_PROFILE=]
--output <OUTPUT>
Output format [default: human] [possible values: human, json]
-h, --help
Print help
-V, --version
Print version
enscrive init
Initialize a managed or self-managed Enscrive profile
Usage: enscrive init [OPTIONS]
Options:
--mode <MODE>
Initialization mode: managed or self-managed [possible values: managed, self-managed]
--profile-name <PROFILE_NAME>
Profile name to create or update
--with-grafana
Enable Grafana in the local stack
--developer-port <DEVELOPER_PORT>
Local port for enscrive-developer in self-managed mode
--developer-bin <DEVELOPER_BIN>
Path to enscrive-developer binary for self-managed mode
--observe-bin <OBSERVE_BIN>
Path to enscrive-observe binary for self-managed mode
--embed-bin <EMBED_BIN>
Path to enscrive-embed binary for self-managed mode
--esm-bin <ESM_BIN>
Path to esm binary for self-managed mode. Defaults to `esm` discovered via PATH. Override when esm is installed at a non-standard location
--docs-bin <DOCS_BIN>
Path to enscrive-docs binary for self-managed mode. When unset, init fetches it from the release manifest at the "enscrive-docs" key
--openai-api-key <OPENAI_API_KEY>
Bring-your-own OpenAI key for local embeddings and optional LLM chunking
--anthropic-api-key <ANTHROPIC_API_KEY>
Bring-your-own Anthropic key for optional local LLM chunking
--voyage-api-key <VOYAGE_API_KEY>
Bring-your-own Voyage key for local embeddings
--nebius-api-key <NEBIUS_API_KEY>
Bring-your-own Nebius key for local Token Factory-backed embeddings
--set-default
Set this profile as the default CLI profile
--manifest-url <MANIFEST_URL>
Override the release manifest URL. Defaults to the dev channel at `https://developer.enscrive.io/releases/dev/latest.json` (same distribution as `install.sh`); will be re-pointed once production CloudFront is provisioned. Supports `file://` for offline harnesses. Also reads `ENSCRIVE_MANIFEST_URL` [env: ENSCRIVE_MANIFEST_URL=]
--force-refetch
Re-download service binaries even if they already exist and match the manifest SHA256
-h, --help
Print help
enscrive start
Start the local self-managed stack for the selected profile
Usage: enscrive start
Options:
-h, --help Print help
enscrive stop
Stop the local self-managed stack for the selected profile
Usage: enscrive stop [OPTIONS]
Options:
--remove-infra Remove local infrastructure containers instead of only stopping them
-h, --help Print help
enscrive status
Show resolved profile and local stack status
Usage: enscrive status
Options:
-h, --help Print help
enscrive bootstrap
Re-run tenant / environment / API-key bootstrap against an already-running local stack. `enscrive start` does this as one of its steps; use this when that step is what failed, so you can recover without tearing down a working stack. Idempotent
Usage: enscrive bootstrap [OPTIONS]
Options:
--issue-key Issue and store a fresh API key even if this profile already has one. Without this, a key is issued only when the profile has none — the same rule `enscrive start` follows
-h, --help Print help
enscrive project
Per-project memory — give the project in this directory its own isolated Enscrive tenant, so any agent working here can remember, recall, and retire without global config. Design of record: ADR ENSCRIVE-CLI-APP-MEMORY-2026-07-31
Usage: enscrive project <COMMAND>
Commands:
init Make Enscrive live in this project: create its own isolated tenant on the running local stack, store that tenant's API key in your per-user key store, and drop a committable `.enscrive/` marker (config.toml + AGENT.md). Every enscrive command run anywhere in this directory tree then targets this project's memory
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive project init
Make Enscrive live in this project: create its own isolated tenant on the running local stack, store that tenant's API key in your per-user key store, and drop a committable `.enscrive/` marker (config.toml + AGENT.md). Every enscrive command run anywhere in this directory tree then targets this project's memory
Usage: enscrive project init [OPTIONS]
Options:
--name <NAME> Project and tenant name. Defaults to this directory's name, sanitized
--dir <DIR> Directory to initialize (default: the current directory)
--adopt-existing Deliberately bind this project to a tenant that already exists under this name, sharing that memory. Without this flag a name collision is refused, so two projects can never silently share one tenant
-h, --help Print help
enscrive health
Check stack health through /health
Usage: enscrive health
Options:
-h, --help Print help
enscrive search
Search corpora through /v1/search
Usage: enscrive search [OPTIONS] --query <QUERY>
Options:
--query <QUERY>
Search query text
--corpus <CORPUS>
Optional corpus ID
--limit <LIMIT>
Number of results to return [default: 10]
--include-vectors
Include vectors in the response
--score-threshold <SCORE_THRESHOLD>
Minimum similarity score a result must reach. Leave unset for most retrieval — you get the top --limit matches ranked by score. Relevant matches land nowhere near 1.0: on a measured corpus, true matches scored 0.57-0.70 and noise sat at <=0.39, so ~0.50 is a reasonable starting threshold and a guessed 0.8-0.9 filters out good results and looks like "search is broken". That band shifts with model and chunk size — calibrate against your own corpus: search unfiltered, read the scores you get, set this just below where relevance stops. See "Search score calibration" in the README
--granularity <GRANULARITY>
Optional search granularity
--oversample-factor <OVERSAMPLE_FACTOR>
Optional oversample factor
--extended-results
Include below-threshold results when supported
--score-floor <SCORE_FLOOR>
Optional minimum score for extended results
--filter-document-id <FILTER_DOCUMENT_ID>
--filter-user-id <FILTER_USER_ID>
--filter-layer <FILTER_LAYER>
--filter-strategy <FILTER_STRATEGY>
--metadata <FILTER_METADATA>
Metadata filter in key=value form. Pass multiple times as needed
--hybrid-alpha <HYBRID_ALPHA>
Hybrid search alpha: 0.0 = pure dense, 1.0 = pure BM25 sparse
--resolution <RESOLUTION>
Target named vector resolution (e.g. "dense_256", "dense_512")
-h, --help
Print help
enscrive complete
Managed reasoning — open-ended completion through /v1/complete (proxies the tenant's BYOK or platform-managed provider key, budget-gated and metered). For a persisted, corpus-bound agent that answers repeatedly against the same retrieval config, see `Commands::Agents`
Usage: enscrive complete [OPTIONS] --provider <PROVIDER> --model <MODEL>
Options:
--provider <PROVIDER> Reasoning provider: anthropic | openai | openrouter | custom | bedrock | vertex
--model <MODEL> Model identifier as the provider names it (e.g. "claude-opus-4-8"). Required — there is no platform default
--prompt <PROMPT> Single-shot prompt text. Mutually exclusive with --messages
--messages <MESSAGES> Path to a JSON file containing the agentic transcript: an array of `{"role": "user"|"assistant", "content": [ ...blocks ]}` messages. Mutually exclusive with --prompt
--tools <TOOLS> Path to a JSON file containing the tool catalogue: an array of `{"name", "description", "input_schema"}` objects. Only valid with --messages (agentic mode)
--system <SYSTEM> Optional system prompt / instructions
--max-tokens <MAX_TOKENS> Hard ceiling on generated tokens. Defaults to 1024 server-side if unset
--temperature <TEMPERATURE> Sampling temperature in [0.0, 1.0]. Provider default applies if unset
--top-p <TOP_P> Nucleus sampling in [0.0, 1.0]. Provider default applies if unset
-h, --help Print help (see more with '--help')
enscrive agents
Enscrive Agents — persistent, corpus-bound agents through /v1/agents. Each agent is a saved {provider, model, system_prompt, corpus_id, top_k, max_tokens} config; `answer` retrieves from the bound corpus and reasons over it in one call (thin passthrough — no local scoring, budget-gated and metered same as `complete`)
Usage: enscrive agents <COMMAND>
Commands:
create Create a persistent agent bound to a corpus (POST /v1/agents)
list List agents (GET /v1/agents)
get Get a single agent by id (GET /v1/agents/{id})
delete Delete an agent by id (DELETE /v1/agents/{id})
answer Ask a question against an agent's bound corpus — retrieval + managed reasoning in one call (POST /v1/agents/{id}/answer). `corpus_id`, `top_k`, and `max_tokens` are hard-locked from the persisted agent row server-side (never request-supplied) — there is no per-answer override; adjust the agent itself instead
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive agents create
Create a persistent agent bound to a corpus (POST /v1/agents)
Usage: enscrive agents create [OPTIONS] --name <NAME> --provider <PROVIDER> --model <MODEL> --corpus-id <CORPUS_ID>
Options:
--name <NAME> Human-readable agent name
--provider <PROVIDER> Reasoning provider. Server-validated (v1: anthropic | openai)
--model <MODEL> Model identifier as the provider names it (e.g. "claude-opus-4-8"). Required — there is no platform default
--corpus-id <CORPUS_ID> Corpus UUID the agent retrieves from. Hard-locked at create time — never request-supplied again for this agent's answers
--system-prompt <SYSTEM_PROMPT> Optional system prompt / instructions
--top-k <TOP_K> Number of chunks to retrieve per answer. Server default applies if unset
--max-tokens <MAX_TOKENS> Hard ceiling on generated tokens. Server default applies if unset
-h, --help Print help
enscrive agents list
List agents (GET /v1/agents)
Usage: enscrive agents list
Options:
-h, --help Print help
enscrive agents get
Get a single agent by id (GET /v1/agents/{id})
Usage: enscrive agents get <ID>
Arguments:
<ID> Agent UUID
Options:
-h, --help Print help
enscrive agents delete
Delete an agent by id (DELETE /v1/agents/{id})
Usage: enscrive agents delete <ID>
Arguments:
<ID> Agent UUID
Options:
-h, --help Print help
enscrive agents answer
Ask a question against an agent's bound corpus — retrieval + managed reasoning in one call (POST /v1/agents/{id}/answer). `corpus_id`, `top_k`, and `max_tokens` are hard-locked from the persisted agent row server-side (never request-supplied) — there is no per-answer override; adjust the agent itself instead
Usage: enscrive agents answer --question <QUESTION> <ID>
Arguments:
<ID> Agent UUID
Options:
--question <QUESTION> The question to ask the agent
-h, --help Print help
enscrive records
Records — the bounded structural store (`/v1/records`). Tenant-scoped collections of JSON records with declared indexed fields for typed filter/sort/keyset-page queries. Slice 1 is the structural store; embedding-backed collections (`--embed`) and `--vector-query` return 501 until Slice 2. Requires the `records` API-key capability
Usage: enscrive records <COMMAND>
Commands:
collections Manage record collections (schemas) — `/v1/records/collections`
put Upsert a record into a collection by id (POST /v1/records/{collection}). Last-write-wins; no versioning
query Query records with typed filters, sort, and keyset pagination (POST /v1/records/{collection}/query)
get Get a single record by id (GET /v1/records/{collection}/{id})
delete Delete a single record by id (DELETE /v1/records/{collection}/{id})
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive records collections
Manage record collections (schemas) — `/v1/records/collections`
Usage: enscrive records collections <COMMAND>
Commands:
create Create a collection (POST /v1/records/collections)
list List collections (GET /v1/records/collections)
update Replace a collection's indexed-field set — whole-set replace, not a merge (PUT /v1/records/collections/{collection})
delete Delete a collection and cascade-delete all its records (DELETE /v1/records/collections/{collection})
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive records collections create
Create a collection (POST /v1/records/collections)
Usage: enscrive records collections create [OPTIONS] --collection <COLLECTION>
Options:
--collection <COLLECTION>
Collection name (unique per tenant)
--indexed-field <NAME:TYPE>
Declare an indexed field as `NAME:TYPE` (TYPE = string | number | bool | timestamp). Repeatable
--embed
Request an embedding-backed collection. Slice-1 server returns 501 (embedding lands in Slice 2)
--embedding-model <EMBEDDING_MODEL>
Embedding model for `--embed` collections (unused in Slice 1)
-h, --help
Print help
enscrive records collections list
List collections (GET /v1/records/collections)
Usage: enscrive records collections list
Options:
-h, --help Print help
enscrive records collections update
Replace a collection's indexed-field set — whole-set replace, not a merge (PUT /v1/records/collections/{collection})
Usage: enscrive records collections update [OPTIONS] <COLLECTION>
Arguments:
<COLLECTION> Collection name
Options:
--indexed-field <NAME:TYPE> Replacement indexed field as `NAME:TYPE` (TYPE = string | number | bool | timestamp). Repeatable; the supplied set replaces the collection's entire declared field set
-h, --help Print help
enscrive records collections delete
Delete a collection and cascade-delete all its records (DELETE /v1/records/collections/{collection})
Usage: enscrive records collections delete <COLLECTION>
Arguments:
<COLLECTION> Collection name
Options:
-h, --help Print help
enscrive records put
Upsert a record into a collection by id (POST /v1/records/{collection}). Last-write-wins; no versioning
Usage: enscrive records put [OPTIONS] --id <ID> <COLLECTION>
Arguments:
<COLLECTION> Collection name
Options:
--id <ID> Record id (unique within the collection; upsert-by-id)
--json <JSON> Record body as an inline JSON object
--json-file <JSON_FILE> Record body read from a JSON file
-h, --help Print help
enscrive records query
Query records with typed filters, sort, and keyset pagination (POST /v1/records/{collection}/query)
Usage: enscrive records query [OPTIONS] <COLLECTION>
Arguments:
<COLLECTION> Collection name
Options:
--filter <FIELD:OP:VALUE> Filter as `FIELD:OP:VALUE` (OP = eq | neq | lt | lte | gt | gte). The field must be a declared indexed field. VALUE is parsed as JSON when it parses (number/bool/quoted-string), otherwise treated as a string (so bare timestamps work). Repeatable
--sort <FIELD:DIR> Sort as `FIELD:DIR` (DIR = asc | desc; default asc). Field must be a declared indexed field. Repeatable. Cannot be combined with --cursor
--limit <LIMIT> Max rows to return (server clamps to 1..=200; default 50)
--cursor <CURSOR> Keyset cursor = the id of the last row from the previous page. Only valid under the default id-ascending order (cannot combine with --sort)
--query-json <QUERY_JSON> Full `QueryRecordsBody` as raw JSON — escape hatch that overrides the structured --filter/--sort/--limit/--cursor flags entirely
-h, --help Print help
enscrive records get
Get a single record by id (GET /v1/records/{collection}/{id})
Usage: enscrive records get <COLLECTION> <ID>
Arguments:
<COLLECTION> Collection name
<ID> Record id
Options:
-h, --help Print help
enscrive records delete
Delete a single record by id (DELETE /v1/records/{collection}/{id})
Usage: enscrive records delete <COLLECTION> <ID>
Arguments:
<COLLECTION> Collection name
<ID> Record id
Options:
-h, --help Print help
enscrive ratecard
Rate card commands (public, no auth required)
Usage: enscrive ratecard <COMMAND>
Commands:
show Show the active (or historical, via --at) rate card. Public — no API key required
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive ratecard show
Show the active (or historical, via --at) rate card. Public — no API key required
Usage: enscrive ratecard show [OPTIONS]
Options:
--at <AT> RFC3339 timestamp; look up the rate card active at this instant instead of the currently active one
-h, --help Print help
enscrive embeddings
Embedding commands
Usage: enscrive embeddings <COMMAND>
Commands:
query Generate query embeddings
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive embeddings query
Generate query embeddings
Usage: enscrive embeddings query [OPTIONS] --text <TEXTS>
Options:
--text <TEXTS> Text to embed. Pass multiple times for batch requests
--voice-id <VOICE_ID> Optional voice ID for voice-backed embeddings
--corpus <CORPUS> Optional corpus ID to resolve the corpus embedding model
-h, --help Print help
enscrive ingest
Ingestion commands
Usage: enscrive ingest <COMMAND>
Commands:
prepared Ingest pre-segmented documents
documents Ingest documents with automatic segmentation and embedding
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive ingest prepared
Ingest pre-segmented documents
Usage: enscrive ingest prepared [OPTIONS] --corpus-id <CORPUS_ID> --document-id <DOCUMENT_ID>
Options:
--corpus-id <CORPUS_ID>
--document-id <DOCUMENT_ID>
--voice-id <VOICE_ID>
--segments-json <SEGMENTS_JSON> JSON string containing an array of PreparedSegment objects
--segments-file <SEGMENTS_FILE> Path to a JSON file containing an array of PreparedSegment objects
--async Wave A: return immediately with the launched job instead of polling to terminal status. Ignored when the server returns synchronously (no `job_id` in the response)
--timeout-secs <TIMEOUT_SECS> Poll timeout for the wait path. Ignored when `--async` is set or when the server returns synchronously. Default 1800s [default: 1800]
-h, --help Print help
enscrive ingest documents
Ingest documents with automatic segmentation and embedding
Usage: enscrive ingest documents [OPTIONS] --corpus-id <CORPUS_ID>
Options:
--corpus-id <CORPUS_ID>
--document-id <DOCUMENT_ID>
Single document ID (for single-document ingest). If omitted when using --content/--content-file, a deterministic content-hash id ("doc-<sha256 prefix>") is generated so identical content re-ingests as a no-op; pass this explicitly to control replace-a-prior-version semantics
--content <CONTENT>
Content as inline text (single doc)
--content-file <CONTENT_FILE>
Content from file (single doc)
--documents-json <DOCUMENTS_JSON>
Multiple documents as inline JSON array
--documents-file <DOCUMENTS_FILE>
Multiple documents from JSON file
--voice-id <VOICE_ID>
--sync
DEPRECATED: the server always processes ingest asynchronously and ignores this flag; accepted for compatibility
--no-batch
Disable batch embedding (force synchronous embedding)
--dry-run
Preview without actually ingesting
--async
Wave A: return immediately with the launched job instead of polling to terminal status. Mutually exclusive with `--sync` (the latter requests a synchronous server-side path). Ignored when the server returns synchronously regardless (`--sync`, `--dry-run`, or batched path off)
--timeout-secs <TIMEOUT_SECS>
Poll timeout for the wait path. Ignored when `--async` is set or when the server returns synchronously. Default 1800s [default: 1800]
-h, --help
Print help
enscrive segment
Segmentation commands
Usage: enscrive segment <COMMAND>
Commands:
document Run single-pass segmentation through /v1/segment-document
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive segment document
Run single-pass segmentation through /v1/segment-document
Usage: enscrive segment document [OPTIONS] --voice-id <VOICE_ID>
Options:
--voice-id <VOICE_ID>
--content <CONTENT> Inline content to segment
--content-file <CONTENT_FILE> Path to a file containing the content to segment
-h, --help Print help
enscrive preview-chunking
Preview how content will be chunked without ingesting it (`POST /v1/preview-chunking`). All preview is local — no server-side storage or metering
Usage: enscrive preview-chunking [OPTIONS]
Options:
--content <CONTENT> Inline content to preview-chunk
--content-file <CONTENT_FILE> Path to a file containing the content to preview-chunk
--voice-id <VOICE_ID> Voice UUID whose chunking strategy + parameters to preview with. Omit to preview the "baseline" strategy
-h, --help Print help
enscrive preview-with-template
Preview template-driven segmentation of a document (`POST /v1/preview-with-template`) [Pro]
Usage: enscrive preview-with-template [OPTIONS] --template-id <TEMPLATE_ID>
Options:
--text <TEXT>
Inline text to segment with the template
--text-file <TEXT_FILE>
Path to a file containing the text to segment
--template-id <TEMPLATE_ID>
Segmentation template UUID
--min-segment-length <MIN_SEGMENT_LENGTH>
Override the template's default minimum segment length
--max-segment-length <MAX_SEGMENT_LENGTH>
Override the template's default maximum segment length
--model <MODEL>
Override the template's default LLM model
-h, --help
Print help
enscrive segmentation-templates
Segmentation template commands (`/v1/segmentation-templates*`)
Usage: enscrive segmentation-templates <COMMAND>
Commands:
list List templates visible to the caller's tenant (system + own). `GET /v1/segmentation-templates` [Pro]
create Create a new template. `POST /v1/segmentation-templates` [Pro]
get Get a single template. `GET /v1/segmentation-templates/{id}` [Pro]
update Update a template (own only, not system). `PUT /v1/segmentation-templates/{id}` [Pro]
delete Delete a template (own only, not system). `DELETE /v1/segmentation-templates/{id}` [Pro]
clone Clone a template (system or own) into a new tenant-owned copy. `POST /v1/segmentation-templates/{id}/clone` [Pro]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive segmentation-templates list
List templates visible to the caller's tenant (system + own). `GET /v1/segmentation-templates` [Pro]
Usage: enscrive segmentation-templates list
Options:
-h, --help Print help
enscrive segmentation-templates create
Create a new template. `POST /v1/segmentation-templates` [Pro]
Usage: enscrive segmentation-templates create [OPTIONS] --name <NAME> --slug <SLUG> --system-prompt <SYSTEM_PROMPT>
Options:
--name <NAME>
--slug <SLUG> URL-friendly identifier: lowercase alphanumeric + hyphens only
--description <DESCRIPTION>
--system-prompt <SYSTEM_PROMPT>
--output-schema <OUTPUT_SCHEMA> Raw JSON object for the output schema. Default `{}`
--defaults <DEFAULTS> Raw JSON object for the default segmentation parameters (`min_segment_length`, `max_segment_length`, `model`, ...). Default `{}`
--tags <TAGS> Comma-separated tags
-h, --help Print help
enscrive segmentation-templates get
Get a single template. `GET /v1/segmentation-templates/{id}` [Pro]
Usage: enscrive segmentation-templates get <ID>
Arguments:
<ID> Template UUID
Options:
-h, --help Print help
enscrive segmentation-templates update
Update a template (own only, not system). `PUT /v1/segmentation-templates/{id}` [Pro]
Usage: enscrive segmentation-templates update [OPTIONS] <ID>
Arguments:
<ID> Template UUID
Options:
--name <NAME> New name, if changing
--slug <SLUG> New slug, if changing (lowercase alphanumeric + hyphens only)
--description <DESCRIPTION> New description, if changing
--system-prompt <SYSTEM_PROMPT> New system prompt, if changing
--output-schema <OUTPUT_SCHEMA> Raw JSON object to replace the output schema
--defaults <DEFAULTS> Raw JSON object to replace the default segmentation parameters
--tags <TAGS> Comma-separated tags (replaces the existing tag set)
-h, --help Print help
enscrive segmentation-templates delete
Delete a template (own only, not system). `DELETE /v1/segmentation-templates/{id}` [Pro]
Usage: enscrive segmentation-templates delete <ID>
Arguments:
<ID> Template UUID
Options:
-h, --help Print help
enscrive segmentation-templates clone
Clone a template (system or own) into a new tenant-owned copy. `POST /v1/segmentation-templates/{id}/clone` [Pro]
Usage: enscrive segmentation-templates clone <ID>
Arguments:
<ID> Template UUID
Options:
-h, --help Print help
enscrive analyze
Content analysis commands
Usage: enscrive analyze <COMMAND>
Commands:
content Analyze document content and recommend chunking strategy
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive analyze content
Analyze document content and recommend chunking strategy
Usage: enscrive analyze content [OPTIONS]
Options:
--content <CONTENT> Inline content to analyze
--content-file <CONTENT_FILE> Path to a file containing the content to analyze
-h, --help Print help
enscrive models
Model discovery commands
Usage: enscrive models <COMMAND>
Commands:
list List public embedding and chunking model names
show Show model card detail for a specific model
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive models list
List public embedding and chunking model names
Usage: enscrive models list
Options:
-h, --help Print help
enscrive models show
Show model card detail for a specific model
Usage: enscrive models show [OPTIONS] [PROVIDER_MODEL]
Arguments:
[PROVIDER_MODEL] Provider/model string as a single arg, e.g. "nebius/Qwen/Qwen3-Embedding-8B". If the model name contains a slash, encode it as %2F or use --provider + --model
Options:
--provider <PROVIDER> Provider name (alternative to positional PROVIDER_MODEL)
--model <MODEL_NAME> Model name (alternative to positional PROVIDER_MODEL)
-h, --help Print help (see more with '--help')
enscrive corpus
Corpus commands
Usage: enscrive corpus <COMMAND>
Commands:
list List corpora
create Create a corpus
ensure Idempotently get-or-create a corpus by name — safe to run every session. Returns the existing corpus when one already has this name, creates it otherwise, and refuses when a same-named corpus is bound to a DIFFERENT embedding model (ingesting into an unexpected vector space silently degrades every later search). This is the verb an agent should reach for; `create` always attempts creation
update Update a corpus
delete Delete a corpus
stats Get corpus stats
documents List documents in a corpus
chunks Get stored chunks for a document in a corpus
get Get enriched detail for a single corpus
revert Discard all uncommitted pending changes for a corpus
commits Show the commit history for a corpus
metrics Get vector-space metrics for a corpus
stage Stage document changes for later commit
commit Commit staged changes to the corpus
pending List pending staged changes
pending-delete Delete a specific pending staged change
document Document-scoped operations — app-memory epic P3 (ADR ENSCRIVE-CLI-APP-MEMORY-2026-07-31 §3/§6-P3)
materialize-from-dataset Materialize a purpose-built corpus from a dataset's selected corpus subset. Closes the rapid-voice-iteration gap in the 5-step E2E evals vision: an 83-doc stratified sample re-embeds in seconds instead of hours
populate-from-dataset Populate an existing empty corpus with a dataset's corpus, chunked by the supplied voice. The canonical Step-4 primitive of the 5-step Enscrive eval workflow (voice + empty corpus + dataset → populate → eval). The corpus's existing model + dimensions bind the embedding space; the voice's embedding_model is advisory only. Returns 409 if the corpus already has documents
promote Promote a corpus into another environment (ADR CORPUS-ENV-PROMOTION-2026-06-27). Requires a Pro+/Enterprise plan (MultiEnv entitlement); the target env must belong to the same tenant and differ from the source (POST /v1/corpora/{id}/promote) [Pro]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive corpus list
List corpora
Usage: enscrive corpus list
Options:
-h, --help Print help
enscrive corpus create
Create a corpus
Usage: enscrive corpus create [OPTIONS] --name <NAME> --embedding-model <EMBEDDING_MODEL>
Options:
--name <NAME>
--embedding-model <EMBEDDING_MODEL>
--description <DESCRIPTION>
--dimensions <DIMENSIONS>
-h, --help Print help
enscrive corpus ensure
Idempotently get-or-create a corpus by name — safe to run every session. Returns the existing corpus when one already has this name, creates it otherwise, and refuses when a same-named corpus is bound to a DIFFERENT embedding model (ingesting into an unexpected vector space silently degrades every later search). This is the verb an agent should reach for; `create` always attempts creation
Usage: enscrive corpus ensure [OPTIONS] --name <NAME> --embedding-model <EMBEDDING_MODEL>
Options:
--name <NAME>
Corpus name to get-or-create. Matched exactly
--embedding-model <EMBEDDING_MODEL>
Embedding model the corpus must be bound to. Required for the create path, and checked against an existing corpus so a name collision on a different model fails loudly instead of silently returning the wrong vector space
--description <DESCRIPTION>
Description applied only when this call creates the corpus. An existing corpus is returned untouched — `ensure` never mutates
--dimensions <DIMENSIONS>
-h, --help
Print help
enscrive corpus update
Update a corpus
Usage: enscrive corpus update [OPTIONS] --id <ID>
Options:
--id <ID>
--name <NAME>
--description <DESCRIPTION>
-h, --help Print help
enscrive corpus delete
Delete a corpus
Usage: enscrive corpus delete [OPTIONS] --id <ID>
Options:
--id <ID> Corpus UUID to delete
--confirm Required to proceed with the destructive delete. Without this the command short-circuits with FAIL_CONFIRMATION_REQUIRED
--confirm-token <TOKEN> Confirmation token (required in managed mode; obtain via portal at https://enscrive.io/portal/confirmations)
-h, --help Print help (see more with '--help')
enscrive corpus stats
Get corpus stats
Usage: enscrive corpus stats --id <ID>
Options:
--id <ID>
-h, --help Print help
enscrive corpus documents
List documents in a corpus
Usage: enscrive corpus documents --id <ID>
Options:
--id <ID>
-h, --help Print help
enscrive corpus chunks
Get stored chunks for a document in a corpus
Usage: enscrive corpus chunks [OPTIONS] --corpus-id <CORPUS_ID> --document-id <DOCUMENT_ID>
Options:
--corpus-id <CORPUS_ID>
--document-id <DOCUMENT_ID>
--include-vectors <INCLUDE_VECTORS> [default: true] [possible values: true, false]
--include-content <INCLUDE_CONTENT> [default: true] [possible values: true, false]
-h, --help Print help
enscrive corpus get
Get enriched detail for a single corpus
Usage: enscrive corpus get --id <ID>
Options:
--id <ID>
-h, --help Print help
enscrive corpus revert
Discard all uncommitted pending changes for a corpus
Usage: enscrive corpus revert --id <ID>
Options:
--id <ID>
-h, --help Print help
enscrive corpus commits
Show the commit history for a corpus
Usage: enscrive corpus commits [OPTIONS] --id <ID>
Options:
--id <ID> Corpus ID
--limit <LIMIT> Maximum number of commits to return (1–200, default 50) [default: 50]
-h, --help Print help
enscrive corpus metrics
Get vector-space metrics for a corpus
Usage: enscrive corpus metrics [OPTIONS] --id <ID>
Options:
--id <ID> Corpus UUID to compute metrics for
--sample-size <SAMPLE_SIZE> Number of vectors to sample for cosine similarity histogram and norm stats. Default 1000, max 10000 [default: 1000]
--force-refresh Bypass the 60-second in-memory cache and recompute metrics
-h, --help Print help
enscrive corpus stage
Stage document changes for later commit
Usage: enscrive corpus stage [OPTIONS] --id <ID>
Options:
--id <ID>
--documents-json <DOCUMENTS_JSON> Documents to stage as inline JSON
--documents-file <DOCUMENTS_FILE> Documents to stage from JSON file
--delete <DELETES> Document IDs to delete (repeatable)
--voice-id <VOICE_ID>
-h, --help Print help
enscrive corpus commit
Commit staged changes to the corpus
Usage: enscrive corpus commit [OPTIONS] --id <ID>
Options:
--id <ID>
--force-sync DEPRECATED: the server always processes commits asynchronously and ignores this flag; accepted for compatibility
-h, --help Print help
enscrive corpus pending
List pending staged changes
Usage: enscrive corpus pending --id <ID>
Options:
--id <ID>
-h, --help Print help
enscrive corpus pending-delete
Delete a specific pending staged change
Usage: enscrive corpus pending-delete --id <ID> --document-id <DOCUMENT_ID>
Options:
--id <ID>
--document-id <DOCUMENT_ID>
-h, --help Print help
enscrive corpus document
Document-scoped operations — app-memory epic P3 (ADR ENSCRIVE-CLI-APP-MEMORY-2026-07-31 §3/§6-P3)
Usage: enscrive corpus document <COMMAND>
Commands:
delete Retire a single memory: delete one document (all its chunks, all layers) from a corpus. Synchronous — no stage/commit round-trip
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive corpus document delete
Retire a single memory: delete one document (all its chunks, all layers) from a corpus. Synchronous — no stage/commit round-trip
Usage: enscrive corpus document delete --corpus-id <CORPUS_ID> --document-id <DOCUMENT_ID>
Options:
--corpus-id <CORPUS_ID> Corpus UUID the document belongs to
--document-id <DOCUMENT_ID> Document id to delete
-h, --help Print help
enscrive corpus materialize-from-dataset
Materialize a purpose-built corpus from a dataset's selected corpus subset. Closes the rapid-voice-iteration gap in the 5-step E2E evals vision: an 83-doc stratified sample re-embeds in seconds instead of hours
Usage: enscrive corpus materialize-from-dataset [OPTIONS] --dataset-id <DATASET_ID> --name <CORPUS_NAME>
Options:
--dataset-id <DATASET_ID>
Dataset UUID whose selected corpus subset drives the ingest
--name <CORPUS_NAME>
Name for the new corpus
--description <CORPUS_DESCRIPTION>
Optional description for the new corpus
--voice-id <VOICE_ID>
Voice UUID whose chunking + embedding config drives the ingest. When omitted, a baseline text-embedding-3-small config is used
-h, --help
Print help
enscrive corpus populate-from-dataset
Populate an existing empty corpus with a dataset's corpus, chunked by the supplied voice. The canonical Step-4 primitive of the 5-step Enscrive eval workflow (voice + empty corpus + dataset → populate → eval). The corpus's existing model + dimensions bind the embedding space; the voice's embedding_model is advisory only. Returns 409 if the corpus already has documents
Usage: enscrive corpus populate-from-dataset [OPTIONS] --corpus <CORPUS_ID> --dataset-id <DATASET_ID> --voice-id <VOICE_ID>
Options:
--corpus <CORPUS_ID> Existing corpus UUID to populate. Must currently have `document_count == 0`; the server returns 409 otherwise
--dataset-id <DATASET_ID> Dataset UUID whose corpus to ingest
--voice-id <VOICE_ID> Voice UUID whose chunking strategy + parameters drive the ingest. Voice's `embedding_model` is advisory only — the CORPUS's model binds the embedding space
--async Phase 1: return immediately with the launched job_id instead of polling to terminal status. The job continues server-side; use `enscrive jobs get --id <job_id>` to check progress
--timeout-secs <TIMEOUT_SECS> Poll timeout for the wait path. Ignored when `--async` is set. Default 1800 seconds (30 minutes); large populates (50K+ docs) via batch APIs may take longer and should set this explicitly or use `--async` and poll manually [default: 1800]
-h, --help Print help
enscrive corpus promote
Promote a corpus into another environment (ADR CORPUS-ENV-PROMOTION-2026-06-27). Requires a Pro+/Enterprise plan (MultiEnv entitlement); the target env must belong to the same tenant and differ from the source (POST /v1/corpora/{id}/promote) [Pro]
Usage: enscrive corpus promote --id <ID> --target-environment-id <TARGET_ENVIRONMENT_ID>
Options:
--id <ID>
Source corpus UUID
--target-environment-id <TARGET_ENVIRONMENT_ID>
Target environment UUID to promote the corpus into
-h, --help
Print help
enscrive voices
Voice commands
Usage: enscrive voices <COMMAND>
Commands:
list List voices
get Get a voice
create Create a voice
update Update a voice (full config replace; bumps version and appends to the voice_versions audit table). Retrieval-only changes apply instantly; chunking + embedding changes invalidate the target corpus's corpus — run `voices diff2 diff-cost` first to estimate re-embed
delete Delete a voice
compare Compare two voices against the same query and corpus
promote Promote a voice to another environment [Pro]
gates Manage promotion gates for a voice
versions Inspect the version history of a voice (the `voice_versions` audit table that `voices update` appends to)
search Search with a voice profile
diff2 voice-diff analyzer + cost estimator
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive voices list
List voices
Usage: enscrive voices list
Options:
-h, --help Print help
enscrive voices get
Get a voice
Usage: enscrive voices get --id <ID>
Options:
--id <ID>
-h, --help Print help
enscrive voices create
Create a voice
Usage: enscrive voices create [OPTIONS] --name <NAME>
Options:
--name <NAME>
--config-json <CONFIG_JSON> JSON string containing the VoiceConfigApi object
--config-file <CONFIG_FILE> Path to a JSON file containing the VoiceConfigApi object
-h, --help Print help (see more with '--help')
enscrive voices update
Update a voice (full config replace; bumps version and appends to the voice_versions audit table). Retrieval-only changes apply instantly; chunking + embedding changes invalidate the target corpus's corpus — run `voices diff2 diff-cost` first to estimate re-embed
Usage: enscrive voices update [OPTIONS] --id <ID>
Options:
--id <ID> Voice id to update
--config-json <CONFIG_JSON> JSON string containing the replacement VoiceConfigApi object
--config-file <CONFIG_FILE> Path to a JSON file containing the replacement VoiceConfigApi object
--confirm-re-embed Required acknowledgment when the change is corpus-invalidating (chunking / embedding touched). Safety interlock for expensive re-embeds — run `voices diff2 diff-cost --against <v> --corpus <id>` first to see the $ and wall-clock estimate. Ignored for query-only changes
-h, --help Print help (see more with '--help')
enscrive voices delete
Delete a voice
Usage: enscrive voices delete [OPTIONS] --id <ID>
Options:
--id <ID> Voice UUID to delete
--confirm Required to proceed with the destructive delete. Without this the command short-circuits with FAIL_CONFIRMATION_REQUIRED
--confirm-token <TOKEN> Confirmation token (required in managed mode; obtain via portal at https://enscrive.io/portal/confirmations)
-h, --help Print help (see more with '--help')
enscrive voices compare
Compare two voices against the same query and corpus
Usage: enscrive voices compare [OPTIONS] --voice-a-id <VOICE_A_ID> --voice-b-id <VOICE_B_ID> --query <QUERY> --corpus-id <CORPUS_ID>
Options:
--voice-a-id <VOICE_A_ID>
--voice-b-id <VOICE_B_ID>
--query <QUERY>
--corpus-id <CORPUS_ID>
--include-vectors
-h, --help Print help
enscrive voices promote
Promote a voice to another environment [Pro]
Usage: enscrive voices promote --voice-id <VOICE_ID> --target-environment-id <TARGET_ENVIRONMENT_ID>
Options:
--voice-id <VOICE_ID>
--target-environment-id <TARGET_ENVIRONMENT_ID>
-h, --help Print help
enscrive voices gates
Manage promotion gates for a voice
Usage: enscrive voices gates <COMMAND>
Commands:
list List promotion gates for a voice [Pro]
set Add or update a promotion gate [Pro]
delete Delete a promotion gate [Pro]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive voices gates list
List promotion gates for a voice [Pro]
Usage: enscrive voices gates list --voice-id <VOICE_ID>
Options:
--voice-id <VOICE_ID>
-h, --help Print help
enscrive voices gates set
Add or update a promotion gate [Pro]
Usage: enscrive voices gates set --voice-id <VOICE_ID> --metric <METRIC> --threshold <THRESHOLD> --operator <OPERATOR>
Options:
--voice-id <VOICE_ID>
--metric <METRIC>
--threshold <THRESHOLD>
--operator <OPERATOR>
-h, --help Print help
enscrive voices gates delete
Delete a promotion gate [Pro]
Usage: enscrive voices gates delete --voice-id <VOICE_ID> --metric <METRIC>
Options:
--voice-id <VOICE_ID>
--metric <METRIC>
-h, --help Print help
enscrive voices versions
Inspect the version history of a voice (the `voice_versions` audit table that `voices update` appends to)
Usage: enscrive voices versions <COMMAND>
Commands:
list List all versions of a voice, newest first (GET /v1/voices/{id}/versions) [Pro]
get Get a specific version of a voice (GET /v1/voices/{id}/versions/{version}) [Pro]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive voices versions list
List all versions of a voice, newest first (GET /v1/voices/{id}/versions) [Pro]
Usage: enscrive voices versions list --id <ID>
Options:
--id <ID> Voice id
-h, --help Print help
enscrive voices versions get
Get a specific version of a voice (GET /v1/voices/{id}/versions/{version}) [Pro]
Usage: enscrive voices versions get --id <ID> --version <VERSION>
Options:
--id <ID> Voice id
--version <VERSION> Version number (1-based, as returned by `voices versions list`)
-h, --help Print help
enscrive voices search
Search with a voice profile
Usage: enscrive voices search [OPTIONS] --query <QUERY> --voice-id <VOICE_ID>
Options:
--query <QUERY>
--voice-id <VOICE_ID>
--corpus <CORPUS>
--limit <LIMIT>
[default: 10]
--include-vectors
--score-threshold <SCORE_THRESHOLD>
--granularity <GRANULARITY>
--oversample-factor <OVERSAMPLE_FACTOR>
--extended-results
--score-floor <SCORE_FLOOR>
--filter-document-id <FILTER_DOCUMENT_ID>
--filter-user-id <FILTER_USER_ID>
--filter-layer <FILTER_LAYER>
--filter-strategy <FILTER_STRATEGY>
--metadata <FILTER_METADATA>
Metadata filter in key=value form. Pass multiple times as needed
--hybrid-alpha <HYBRID_ALPHA>
Hybrid search alpha: 0.0 = pure dense, 1.0 = pure BM25 sparse
--resolution <RESOLUTION>
Target named vector resolution (e.g. "dense_256", "dense_512")
-h, --help
Print help
enscrive voices diff2
voice-diff analyzer + cost estimator
Usage: enscrive voices diff2 <COMMAND>
Commands:
diff Diff a voice against an earlier version (or between two versions)
diff-cost Estimate money + time cost of applying the diff to a corpus
diff-proposal Diff the live voice against a proposed config from a JSON file
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive voices diff2 diff
Diff a voice against an earlier version (or between two versions)
Usage: enscrive voices diff2 diff [OPTIONS] --id <ID> --against <AGAINST>
Options:
--id <ID>
--against <AGAINST> Version to diff AGAINST (before side)
--from <FROM> Optional "after" version (defaults to live voice from observe)
-h, --help Print help
enscrive voices diff2 diff-cost
Estimate money + time cost of applying the diff to a corpus
Usage: enscrive voices diff2 diff-cost [OPTIONS] --id <ID> --against <AGAINST> --corpus <CORPUS>
Options:
--id <ID>
--against <AGAINST> Version to diff AGAINST
--corpus <CORPUS> Target corpus UUID
--batch Whether to model batch-API pricing (default true)
-h, --help Print help
enscrive voices diff2 diff-proposal
Diff the live voice against a proposed config from a JSON file
Usage: enscrive voices diff2 diff-proposal --id <ID> --proposed-file <PROPOSED_FILE>
Options:
--id <ID>
--proposed-file <PROPOSED_FILE> File containing the proposed VoiceConfigApi JSON
-h, --help Print help
enscrive evals
Evaluation commands
Usage: enscrive evals <COMMAND>
Commands:
campaigns Eval campaign commands
run-campaign Run an eval campaign [Pro]
run-campaign-stream Run an eval campaign with SSE streaming [Pro]
import Import benchmark data from standard formats (BEIR, MTEB, etc.) [Pro]
from-url Import a HuggingFace benchmark via background job and poll to completion (`POST /v1/evals/from-url` + `GET /v1/jobs/{id}`) [Pro]
datasets Eval dataset commands
voice-status Get latest promotion-gate status for a voice [Pro]
convergence Convergence status across a voice's completed campaign series — is the metric still improving, converging, or converged? (GET /v1/evals/convergence) [Pro]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive evals campaigns
Eval campaign commands
Usage: enscrive evals campaigns <COMMAND>
Commands:
list List eval campaigns [Pro]
get Get an eval campaign [Pro]
promote Promote an eval campaign into another environment (POST /v1/evals/{id}/promote). Target env must belong to the same tenant and differ from the source [Pro]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive evals campaigns list
List eval campaigns [Pro]
Usage: enscrive evals campaigns list
Options:
-h, --help Print help
enscrive evals campaigns get
Get an eval campaign [Pro]
Usage: enscrive evals campaigns get --id <ID>
Options:
--id <ID>
-h, --help Print help
enscrive evals campaigns promote
Promote an eval campaign into another environment (POST /v1/evals/{id}/promote). Target env must belong to the same tenant and differ from the source [Pro]
Usage: enscrive evals campaigns promote --id <ID> --target-environment-id <TARGET_ENVIRONMENT_ID>
Options:
--id <ID>
Campaign UUID
--target-environment-id <TARGET_ENVIRONMENT_ID>
Target environment UUID to promote the campaign into
-h, --help
Print help
enscrive evals run-campaign
Run an eval campaign [Pro]
Usage: enscrive evals run-campaign [OPTIONS] --name <NAME> --voice-id <VOICE_ID> --dataset-id <DATASET_ID> --metric <METRICS>
Options:
--name <NAME>
--voice-id <VOICE_ID>
--dataset-id <DATASET_ID>
--metric <METRICS> Metric name to compute. Pass multiple times as needed
--corpus-id <CORPUS_ID> Campaign-level default corpus ID for queries that do not include corpus_id
--queries-json <QUERIES_JSON> JSON string containing an array of EvalQueryItem objects
--queries-file <QUERIES_FILE> Path to a JSON file containing an array of EvalQueryItem objects
--match-mode <MATCH_MODE> Campaign-level default match mode: exact or document_prefix
-h, --help Print help (see more with '--help')
enscrive evals run-campaign-stream
Run an eval campaign with SSE streaming [Pro]
Usage: enscrive evals run-campaign-stream [OPTIONS] --name <NAME> --voice-id <VOICE_ID> --dataset-id <DATASET_ID> --metric <METRICS>
Options:
--name <NAME>
--voice-id <VOICE_ID>
--dataset-id <DATASET_ID>
--metric <METRICS> Metric name to compute. Pass multiple times as needed
--corpus-id <CORPUS_ID> Campaign-level default corpus ID for queries that do not include corpus_id
--queries-json <QUERIES_JSON> JSON string containing an array of EvalQueryItem objects
--queries-file <QUERIES_FILE> Path to a JSON file containing an array of EvalQueryItem objects
--match-mode <MATCH_MODE> Campaign-level default match mode: exact or document_prefix
-h, --help Print help (see more with '--help')
enscrive evals import
Import benchmark data from standard formats (BEIR, MTEB, etc.) [Pro]
Usage: enscrive evals import [OPTIONS] --dataset-name <DATASET_NAME> --queries-file <QUERIES_FILE> --qrels-file <QRELS_FILE>
Options:
--format <FORMAT> Import format (currently: "beir") [default: beir]
--dataset-name <DATASET_NAME> Name for the created eval dataset
--queries-file <QUERIES_FILE> Path to queries file (BEIR: queries.jsonl)
--qrels-file <QRELS_FILE> Path to relevance judgments file (BEIR: qrels/test.tsv)
--corpus-file <CORPUS_FILE> Optional: also ingest corpus into a corpus
--corpus-id <CORPUS_ID> Corpus ID for corpus ingestion (required if --corpus-file is provided)
--voice-id <VOICE_ID> Voice ID for corpus ingestion (optional, determines chunking strategy)
-h, --help Print help
enscrive evals from-url
Import a HuggingFace benchmark via background job and poll to completion (`POST /v1/evals/from-url` + `GET /v1/jobs/{id}`) [Pro]
Usage: enscrive evals from-url [OPTIONS] <DATASET>
Arguments:
<DATASET> HuggingFace dataset plain ID (`BeIR/scifact`) or full URL (`https://huggingface.co/datasets/BeIR/scifact`). The `hf://` scheme is NOT supported by the developer parser
Options:
--name <NAME> Name for the created eval dataset (defaults to `<slugified-dataset>-<timestamp>`)
--corpus-id <CORPUS_ID> Corpus ID to ingest corpus into. Optional: a throwaway uuid is sent when omitted, which is sufficient for phase-1 materialization (dataset row + queries + qrels) when embed/ingest is unhealthy
--qrels-url <QRELS_URL> Optional explicit qrels dataset URL or ID (auto-discovered when omitted)
--voice-id <VOICE_ID> Optional voice ID to use for chunking during ingest
--timeout-secs <TIMEOUT_SECS> Poll timeout in seconds (default 300). `--timeout` retained as alias for backwards compatibility; new scripts should use `--timeout-secs` to match the rest of the CLI [default: 300]
--async Wave A: return immediately with the launched job instead of polling to terminal status. The job continues server-side; use `enscrive jobs get --id <job_id>` to check progress
-h, --help Print help
enscrive evals datasets
Eval dataset commands
Usage: enscrive evals datasets <COMMAND>
Commands:
list List eval datasets [Pro]
create Create an eval dataset [Pro]
get Get an eval dataset [Pro]
queries Fetch the flat queries + qrels view of an eval dataset (`GET /v1/evals/datasets/{id}/queries`) [Pro]
update Update an eval dataset [Pro]
delete Delete an eval dataset [Pro]
promote Promote an eval dataset into another environment (POST /v1/evals/datasets/{id}/promote). Target env must belong to the same tenant and differ from the source [Pro]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive evals datasets list
List eval datasets [Pro]
Usage: enscrive evals datasets list
Options:
-h, --help Print help
enscrive evals datasets create
Create an eval dataset [Pro]
Usage: enscrive evals datasets create [OPTIONS] --name <NAME>
Options:
--name <NAME>
--queries-json <QUERIES_JSON> JSON string containing an array of EvalQueryItem objects
--queries-file <QUERIES_FILE> Path to a JSON file containing an array of EvalQueryItem objects
-h, --help Print help (see more with '--help')
enscrive evals datasets get
Get an eval dataset [Pro]
Usage: enscrive evals datasets get --id <ID>
Options:
--id <ID>
-h, --help Print help
enscrive evals datasets queries
Fetch the flat queries + qrels view of an eval dataset (`GET /v1/evals/datasets/{id}/queries`) [Pro]
Usage: enscrive evals datasets queries --id <ID>
Options:
--id <ID>
-h, --help Print help
enscrive evals datasets update
Update an eval dataset [Pro]
Usage: enscrive evals datasets update [OPTIONS] --id <ID> --name <NAME>
Options:
--id <ID>
--name <NAME>
--queries-json <QUERIES_JSON>
--queries-file <QUERIES_FILE>
-h, --help Print help (see more with '--help')
enscrive evals datasets delete
Delete an eval dataset [Pro]
Usage: enscrive evals datasets delete --id <ID>
Options:
--id <ID>
-h, --help Print help
enscrive evals datasets promote
Promote an eval dataset into another environment (POST /v1/evals/datasets/{id}/promote). Target env must belong to the same tenant and differ from the source [Pro]
Usage: enscrive evals datasets promote --id <ID> --target-environment-id <TARGET_ENVIRONMENT_ID>
Options:
--id <ID>
Dataset UUID
--target-environment-id <TARGET_ENVIRONMENT_ID>
Target environment UUID to promote the dataset into
-h, --help
Print help
enscrive evals voice-status
Get latest promotion-gate status for a voice [Pro]
Usage: enscrive evals voice-status --voice-id <VOICE_ID>
Options:
--voice-id <VOICE_ID>
-h, --help Print help
enscrive evals convergence
Convergence status across a voice's completed campaign series — is the metric still improving, converging, or converged? (GET /v1/evals/convergence) [Pro]
Usage: enscrive evals convergence [OPTIONS] --voice-id <VOICE_ID>
Options:
--voice-id <VOICE_ID> Voice id whose campaign series to analyze
--dataset-id <DATASET_ID> Restrict to campaigns on a single dataset (optional)
--metric <METRIC> Metric to track (server default: ndcg@10)
--window <WINDOW> Number of recent campaigns to consider (server default: 5)
--threshold <THRESHOLD> Minimum absolute improvement counted as "still improving" (server default: 0.005 = 0.5%)
-h, --help Print help
enscrive logs
Logs and observability commands
Usage: enscrive logs <COMMAND>
Commands:
stream Stream logs through /v1/logs/stream
search Search historical logs through /v1/logs/search [Pro]
metrics Fetch performance metrics through /v1/logs/metrics [Pro]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive logs stream
Stream logs through /v1/logs/stream
Usage: enscrive logs stream [OPTIONS]
Options:
--severity <SEVERITY>
--operation <OPERATION>
--request-id <REQUEST_ID>
--timeout-secs <TIMEOUT_SECS> Max seconds to wait for stream output before returning [default: 10]
-h, --help Print help
enscrive logs search
Search historical logs through /v1/logs/search [Pro]
Usage: enscrive logs search [OPTIONS] --start-time <START_TIME> --end-time <END_TIME>
Options:
--start-time <START_TIME>
--end-time <END_TIME>
--query <QUERY>
--severity <SEVERITY>
--operation <OPERATION>
--request-id <REQUEST_ID>
--limit <LIMIT> [default: 100]
--page-token <PAGE_TOKEN>
-h, --help Print help
enscrive logs metrics
Fetch performance metrics through /v1/logs/metrics [Pro]
Usage: enscrive logs metrics [OPTIONS] --start-time <START_TIME> --end-time <END_TIME>
Options:
--start-time <START_TIME>
--end-time <END_TIME>
--operation <OPERATION>
--granularity <GRANULARITY> [default: minute]
-h, --help Print help
enscrive backup
Operator backup and restore commands (admin `/v1/admin/*` surface; for the tenant surface see `enscrive revisions` + `enscrive restore`)
Usage: enscrive backup <COMMAND>
Commands:
create Trigger a backup for the current tenant scope [Pro]
list List backups for the current tenant scope [Pro]
get Get a single backup by ID [Pro]
restore Restore tenant data to a target point in time [Pro]
dry-run Validate a restore without executing it [Pro]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive backup create
Trigger a backup for the current tenant scope [Pro]
Usage: enscrive backup create
Options:
-h, --help Print help
enscrive backup list
List backups for the current tenant scope [Pro]
Usage: enscrive backup list [OPTIONS]
Options:
--limit <LIMIT>
-h, --help Print help
enscrive backup get
Get a single backup by ID [Pro]
Usage: enscrive backup get --backup-id <BACKUP_ID>
Options:
--backup-id <BACKUP_ID>
-h, --help Print help
enscrive backup restore
Restore tenant data to a target point in time [Pro]
Usage: enscrive backup restore [OPTIONS] --target-time <TARGET_TIME>
Options:
--target-time <TARGET_TIME>
--confirm Required explicit acknowledgement for destructive restore execution
--confirm-token <TOKEN> Confirmation token (required in managed mode; obtain via portal at https://enscrive.io/portal/confirmations)
-h, --help Print help
enscrive backup dry-run
Validate a restore without executing it [Pro]
Usage: enscrive backup dry-run --target-time <TARGET_TIME>
Options:
--target-time <TARGET_TIME>
-h, --help Print help
enscrive revisions
Revisions of your tenant data — point-in-time restore points
Usage: enscrive revisions <COMMAND>
Commands:
list List revisions (point-in-time restore points) for your tenant
show Show one revision in detail, including content checksums
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive revisions list
List revisions (point-in-time restore points) for your tenant
Usage: enscrive revisions list [OPTIONS]
Options:
--limit <LIMIT> Page size (server default 20)
--cursor <CURSOR> Pagination cursor — pass the previous page's `next_cursor`
-h, --help Print help
enscrive revisions show
Show one revision in detail, including content checksums
Usage: enscrive revisions show <REVISION_ID>
Arguments:
<REVISION_ID> Revision ID (see `enscrive revisions list`)
Options:
-h, --help Print help
enscrive restore
Restore tenant data to a revision (tenant-wide, point-in-time; destructive — confirmation required)
Usage: enscrive restore [OPTIONS] --revision <REVISION_ID>
Options:
--revision <REVISION_ID> Revision to restore to (see `enscrive revisions list`)
--dry-run Validate the restore server-side without executing it
--confirm Required to proceed with the destructive restore. Without this the command refuses; in an interactive TTY you are then prompted to re-type the revision id
--confirm-token <TOKEN> Confirmation token (required in managed mode; obtain via portal at https://enscrive.io/portal/confirmations)
--async Return immediately with the launched job instead of polling to terminal status. Check progress with `enscrive jobs get`
--timeout-secs <TIMEOUT_SECS> Poll timeout for the wait path. Ignored when `--async` is set [default: 1800]
-h, --help Print help
enscrive export
Data export commands
Usage: enscrive export <COMMAND>
Commands:
tenant Export tenant data from the public portability endpoint [Pro]
embeddings Export raw embedding records from the public admin surface [Pro]
token-usage Export granular token-usage records from the public admin surface [Pro]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive export tenant
Export tenant data from the public portability endpoint [Pro]
Usage: enscrive export tenant [OPTIONS] --out-file <OUT_FILE>
Options:
--out-file <OUT_FILE>
--include-vectors
--document-id <DOCUMENT_ID>
--layer <LAYER>
-h, --help Print help
enscrive export embeddings
Export raw embedding records from the public admin surface [Pro]
Usage: enscrive export embeddings [OPTIONS]
Options:
--user-id <USER_ID>
--document-id <DOCUMENT_ID>
--layer <LAYER>
--conversation-id <CONVERSATION_ID>
--paragraph-id <PARAGRAPH_IDS>
Restrict export to specific paragraph IDs. Pass multiple times as needed
--limit <LIMIT>
--page-token <PAGE_TOKEN>
--include-vectors
-h, --help
Print help
enscrive export token-usage
Export granular token-usage records from the public admin surface [Pro]
Usage: enscrive export token-usage [OPTIONS]
Options:
--user-id <USER_ID>
--document-id <DOCUMENT_ID>
--layer <LAYER>
--conversation-id <CONVERSATION_ID>
--paragraph-id <PARAGRAPH_IDS>
Restrict export to specific paragraph IDs. Pass multiple times as needed
--limit <LIMIT>
--page-token <PAGE_TOKEN>
-h, --help
Print help
enscrive usage
Usage and metering commands
Usage: enscrive usage [OPTIONS] --start-time <START_TIME> --end-time <END_TIME>
Options:
--start-time <START_TIME> RFC3339/ISO8601 start timestamp
--end-time <END_TIME> RFC3339/ISO8601 end timestamp
--document-id <DOCUMENT_ID>
--corpus-id <CORPUS_ID>
--operation <OPERATION>
--embedding-model <EMBEDDING_MODEL>
--limit <LIMIT>
--page-token <PAGE_TOKEN>
-h, --help Print help
enscrive wallet
Wallet balance + debit history commands
Usage: enscrive wallet <COMMAND>
Commands:
balance Show current wallet balance (GET /v1/wallet/balance)
debits List debit transaction history (GET /v1/wallet/debits)
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive wallet balance
Show current wallet balance (GET /v1/wallet/balance)
Usage: enscrive wallet balance
Options:
-h, --help Print help
enscrive wallet debits
List debit transaction history (GET /v1/wallet/debits)
Usage: enscrive wallet debits [OPTIONS]
Options:
--since <SINCE> Inclusive lower bound on created_at (RFC3339). Omit for all-time
--before <BEFORE> Pagination cursor — pass back the previous page's `next_page_token` verbatim. Opaque; do not construct or parse it client-side
--limit <LIMIT> Page size. Server default 50, clamped to 1..=200
-h, --help Print help
enscrive jobs
Background job management commands
Usage: enscrive jobs <COMMAND>
Commands:
list List background jobs
get Get details of a specific job
cancel Cancel a running job
retry Retry failed sub-batches of a batch-set job
abandon Abandon a failed batch-set job, cleaning up staging corpora
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive jobs list
List background jobs
Usage: enscrive jobs list [OPTIONS]
Options:
--status <STATUS>
Filter by job status (pending | in_progress | complete | failed | cancelled)
--kind <KIND>
filter by job_kind (corpus_ingest, embedding_batch_*, search, corpus_delete, eval_run, legacy)
--parent-id <PARENT_ID>
filter by parent job UUID. Pass the literal string `null` to list only top-level (no parent) jobs
--created-after <CREATED_AFTER>
RFC-3339 lower bound on created_at
--created-before <CREATED_BEFORE>
RFC-3339 upper bound on created_at
--async <ASYNC>
filter by async classification. true → write-side kinds (corpus_ingest, embedding_batch_*, corpus_delete, eval_run); false → search [possible values: true, false]
--limit <LIMIT>
Page size (1-200, default 50)
--cursor <CURSOR>
Opaque page cursor returned by the prior page
--sort <SORT>
Sort column: created_at (default) or completed_at
--order <ORDER>
Order: asc or desc (default)
-h, --help
Print help
enscrive jobs get
Get details of a specific job
Usage: enscrive jobs get --id <ID>
Options:
--id <ID> Job ID
-h, --help Print help
enscrive jobs cancel
Cancel a running job
Usage: enscrive jobs cancel --id <ID>
Options:
--id <ID> Job ID
-h, --help Print help
enscrive jobs retry
Retry failed sub-batches of a batch-set job
Usage: enscrive jobs retry --id <ID>
Options:
--id <ID> Job ID
-h, --help Print help
enscrive jobs abandon
Abandon a failed batch-set job, cleaning up staging corpora
Usage: enscrive jobs abandon --id <ID>
Options:
--id <ID> Job ID
-h, --help Print help
enscrive batch-sets
Batch-set management commands
Usage: enscrive batch-sets <COMMAND>
Commands:
list List batch-sets for a corpus
get Get details of a specific batch-set
retry Retry a recoverable-failed batch-set (POST /v1/batch-sets/{id}/retry). Only valid when the batch-set is in the `failed_recoverable` state
abandon Abandon a batch-set (POST /v1/batch-sets/{id}/abandon). Invalid for terminal states (committed / already-abandoned)
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive batch-sets list
List batch-sets for a corpus
Usage: enscrive batch-sets list [OPTIONS] --corpus <CORPUS>
Options:
--corpus <CORPUS> Corpus UUID
--limit <LIMIT> Maximum results (default 50, max 200)
--offset <OFFSET> Offset for pagination (default 0)
-h, --help Print help
enscrive batch-sets get
Get details of a specific batch-set
Usage: enscrive batch-sets get <ID>
Arguments:
<ID> Batch-set UUID
Options:
-h, --help Print help
enscrive batch-sets retry
Retry a recoverable-failed batch-set (POST /v1/batch-sets/{id}/retry). Only valid when the batch-set is in the `failed_recoverable` state
Usage: enscrive batch-sets retry <ID>
Arguments:
<ID> Batch-set UUID
Options:
-h, --help Print help
enscrive batch-sets abandon
Abandon a batch-set (POST /v1/batch-sets/{id}/abandon). Invalid for terminal states (committed / already-abandoned)
Usage: enscrive batch-sets abandon <ID>
Arguments:
<ID> Batch-set UUID
Options:
-h, --help Print help
enscrive admin
Operator admin commands (requires Admin capability)
Usage: enscrive admin <COMMAND>
Commands:
rate-limits Rate-limit governor commands (DESIGN §R9)
api-rate-limits Inbound /v1 edge rate-limit override commands. Distinct from the provider governor above: these manage the per-tenant override layer on the inbound request limiter, keyed by route CATEGORY (search | query_embeddings | ingest | corpus_crud | voice_crud | preview_chunking). Admin capability required
ratecard Rate card management commands. Requires an API key with the Admin capability (operator key, not a normal tenant key)
wallet Operator wallet top-up commands
audit Durable admin audit-log commands
incidents Admin-scoped incident log viewer
migrations Migration status commands
telemetry Aggregate stack telemetry commands
metering Metering backfill commands
tenants Operator tenant provisioning + erasure commands
api-keys Operator API-key minting commands
catalog-import Import a tenant's catalog backup artifact. Admin-only; confirm-gated; checksum-verified before any write [Enterprise]
corpora Corpus repair commands
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive admin rate-limits
Rate-limit governor commands (DESIGN §R9)
Usage: enscrive admin rate-limits <COMMAND>
Commands:
show Show the effective rate-limit policy for the caller's own tenant
set Set (upsert) the rate-limit policy for a tenant/provider pair [Enterprise, managed only]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive admin rate-limits show
Show the effective rate-limit policy for the caller's own tenant
Usage: enscrive admin rate-limits show [OPTIONS]
Options:
--tenant <TENANT> Tenant UUID to show (currently ignored — shows caller's own tenant via GET /v1/rate-limits; cross-tenant admin read lands in a later unit)
-h, --help Print help (see more with '--help')
enscrive admin rate-limits set
Set (upsert) the rate-limit policy for a tenant/provider pair [Enterprise, managed only]
Usage: enscrive admin rate-limits set --tenant <TENANT> --provider <PROVIDER> --rpm <RPM> --burst-rpm <BURST_RPM> --tpm <TPM> --burst-tpm <BURST_TPM>
Options:
--tenant <TENANT> Tenant UUID to update. Use 00000000-0000-0000-0000-000000000000 for the global default
--provider <PROVIDER> Provider key: openai | voyage | nebius
--rpm <RPM> Steady-state requests per minute
--burst-rpm <BURST_RPM> Burst-request capacity (instantaneous headroom above steady-state RPM)
--tpm <TPM> Steady-state tokens per minute
--burst-tpm <BURST_TPM> Burst-token capacity (instantaneous headroom above steady-state TPM)
-h, --help Print help (see more with '--help')
enscrive admin api-rate-limits
Inbound /v1 edge rate-limit override commands. Distinct from the provider governor above: these manage the per-tenant override layer on the inbound request limiter, keyed by route CATEGORY (search | query_embeddings | ingest | corpus_crud | voice_crud | preview_chunking). Admin capability required
Usage: enscrive admin api-rate-limits <COMMAND>
Commands:
list List a tenant's inbound edge rate-limit overrides (GET /v1/admin/api-rate-limits/{tenant_id}) [Enterprise]
set Upsert a per-tenant, per-category inbound rate-limit override (PATCH /v1/admin/api-rate-limits/{tenant_id}/{category}) [Enterprise]
delete Remove a per-tenant override, reverting the category to the service default (DELETE /v1/admin/api-rate-limits/{tenant_id}/{category}; 404 when no override exists) [Enterprise]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive admin api-rate-limits list
List a tenant's inbound edge rate-limit overrides (GET /v1/admin/api-rate-limits/{tenant_id}) [Enterprise]
Usage: enscrive admin api-rate-limits list --tenant-id <TENANT_ID>
Options:
--tenant-id <TENANT_ID> Tenant UUID to list overrides for
-h, --help Print help
enscrive admin api-rate-limits set
Upsert a per-tenant, per-category inbound rate-limit override (PATCH /v1/admin/api-rate-limits/{tenant_id}/{category}) [Enterprise]
Usage: enscrive admin api-rate-limits set --tenant-id <TENANT_ID> --category <CATEGORY> --requests-per-minute <REQUESTS_PER_MINUTE>
Options:
--tenant-id <TENANT_ID>
Tenant UUID to override
--category <CATEGORY>
Route category: search | query_embeddings | ingest | corpus_crud | voice_crud | preview_chunking. Unknown categories are rejected 400
--requests-per-minute <REQUESTS_PER_MINUTE>
Requests-per-minute ceiling (per API key of the tenant; must be >= 1)
-h, --help
Print help
enscrive admin api-rate-limits delete
Remove a per-tenant override, reverting the category to the service default (DELETE /v1/admin/api-rate-limits/{tenant_id}/{category}; 404 when no override exists) [Enterprise]
Usage: enscrive admin api-rate-limits delete --tenant-id <TENANT_ID> --category <CATEGORY>
Options:
--tenant-id <TENANT_ID> Tenant UUID
--category <CATEGORY> Route category to revert to the service default
-h, --help Print help
enscrive admin ratecard
Rate card management commands. Requires an API key with the Admin capability (operator key, not a normal tenant key)
Usage: enscrive admin ratecard <COMMAND>
Commands:
apply Apply a new rate card from a TOML file [Enterprise, managed only]
list List rate card version history [Enterprise, managed only]
show Show the current or a specific rate card version [Enterprise, managed only]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive admin ratecard apply
Apply a new rate card from a TOML file [Enterprise, managed only]
Usage: enscrive admin ratecard apply --file <FILE>
Options:
--file <FILE> Path to a rate card TOML file to read and apply as the new active rate card
-h, --help Print help (see more with '--help')
enscrive admin ratecard list
List rate card version history [Enterprise, managed only]
Usage: enscrive admin ratecard list [OPTIONS]
Options:
--limit <LIMIT> Maximum number of history rows to return (default 20, max 1000 — server clamps out-of-range values)
-h, --help Print help (see more with '--help')
enscrive admin ratecard show
Show the current or a specific rate card version [Enterprise, managed only]
Usage: enscrive admin ratecard show
Options:
--version <VERSION> Specific rate card version to show. Omit to show the currently-active card
-h, --help Print help (see more with '--help')
enscrive admin wallet
Operator wallet top-up commands
Usage: enscrive admin wallet <COMMAND>
Commands:
credit Credit a tenant's wallet (operator top-up). `POST /v1/admin/wallets/credit` [Enterprise]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive admin wallet credit
Credit a tenant's wallet (operator top-up). `POST /v1/admin/wallets/credit` [Enterprise]
Usage: enscrive admin wallet credit [OPTIONS] --tenant <TENANT> --amount-micros <AMOUNT_MICROS> --reason <REASON>
Options:
--tenant <TENANT>
Tenant UUID to credit
--amount-micros <AMOUNT_MICROS>
Amount to credit, in MICROS (1,000,000 micros = $1.00). Must be > 0. Sent verbatim as the server's exact-integer unit — no client-side dollar→micros float conversion (exact-ledger discipline)
--reason <REASON>
Operator-supplied justification. Required — the server rejects an empty reason (it lands on the durable admin_audit_log row)
--idempotency-key <IDEMPOTENCY_KEY>
Optional idempotency key. When supplied, a retried call with the same key collapses to a single credit instead of double-crediting
-h, --help
Print help (see more with '--help')
enscrive admin audit
Durable admin audit-log commands
Usage: enscrive admin audit <COMMAND>
Commands:
list List durable admin audit-log entries (tenant/api-key/wallet-credit/ tenant-erase mutations). `GET /v1/admin/audit`. Most-recent first [Enterprise]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive admin audit list
List durable admin audit-log entries (tenant/api-key/wallet-credit/ tenant-erase mutations). `GET /v1/admin/audit`. Most-recent first [Enterprise]
Usage: enscrive admin audit list [OPTIONS]
Options:
--since <SINCE>
ISO-8601 lower bound (inclusive) on created_at
--until <UNTIL>
ISO-8601 upper bound (exclusive) on created_at
--action <ACTION>
Exact action-verb filter, e.g. "wallet.credit", "tenant.create", "api_key.create", "tenant.erase"
--subject-tenant <SUBJECT_TENANT>
Filter to audit rows recorded against this tenant (UUID)
--limit <LIMIT>
Page size (server default 50, max 200)
--offset <OFFSET>
Offset for pagination (server default 0)
-h, --help
Print help
enscrive admin incidents
Admin-scoped incident log viewer
Usage: enscrive admin incidents <COMMAND>
Commands:
list List incidents (admin-scoped, cross-tenant). `GET /v1/admin/incidents` [Enterprise]
get Get one incident's full detail (includes `body`). `GET /v1/admin/incidents/{id}` [Enterprise]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive admin incidents list
List incidents (admin-scoped, cross-tenant). `GET /v1/admin/incidents` [Enterprise]
Usage: enscrive admin incidents list [OPTIONS]
Options:
--since <SINCE> ISO-8601 lower bound (inclusive) on created_at
--until <UNTIL> ISO-8601 upper bound (exclusive) on created_at
--severity <SEVERITY> Severity filter: critical | high | medium | low
--source <SOURCE> Source prefix match (server does `LIKE '<source>%'`)
--tenant <TENANT> Filter to a specific tenant UUID
--limit <LIMIT> Page size (server default 50, max 200)
--offset <OFFSET> Offset for pagination (server default 0)
-h, --help Print help
enscrive admin incidents get
Get one incident's full detail (includes `body`). `GET /v1/admin/incidents/{id}` [Enterprise]
Usage: enscrive admin incidents get <ID>
Arguments:
<ID> Incident UUID
Options:
-h, --help Print help
enscrive admin migrations
Migration status commands
Usage: enscrive admin migrations <COMMAND>
Commands:
status Report applied vs pending vs failed sqlx migrations. `GET /v1/admin/migrations` [Enterprise]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive admin migrations status
Report applied vs pending vs failed sqlx migrations. `GET /v1/admin/migrations` [Enterprise]
Usage: enscrive admin migrations status
Options:
-h, --help Print help
enscrive admin telemetry
Aggregate stack telemetry commands
Usage: enscrive admin telemetry <COMMAND>
Commands:
stats Aggregate-only wallet + incident + six-sigma counters for the whole stack. `GET /v1/admin/telemetry/stats` [Enterprise]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive admin telemetry stats
Aggregate-only wallet + incident + six-sigma counters for the whole stack. `GET /v1/admin/telemetry/stats` [Enterprise]
Usage: enscrive admin telemetry stats
Options:
-h, --help Print help
enscrive admin metering
Metering backfill commands
Usage: enscrive admin metering <COMMAND>
Commands:
backfill One-shot Loki -> metering_events backfill. `POST /v1/admin/metering/backfill`. The handler reads its parameters from the URL query string (not a JSON body) — this command sends them that way [Enterprise, managed only]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive admin metering backfill
One-shot Loki -> metering_events backfill. `POST /v1/admin/metering/backfill`. The handler reads its parameters from the URL query string (not a JSON body) — this command sends them that way [Enterprise, managed only]
Usage: enscrive admin metering backfill [OPTIONS] --start <START> --end <END>
Options:
--start <START> RFC3339 inclusive lower bound for occurred_at
--end <END> RFC3339 exclusive upper bound for occurred_at
--tenant <TENANT> Optional single-tenant scope (UUID). Omit to scan every tenant
--dry-run Scan + synthesize rows but skip the INSERT (counts still reflect what would have been written)
-h, --help Print help
enscrive admin tenants
Operator tenant provisioning + erasure commands
Usage: enscrive admin tenants <COMMAND>
Commands:
create Create (or idempotently return) an administrative tenant. `POST /v1/admin/tenants` [Enterprise]
erase PERMANENTLY erase a tenant's backups (GDPR Article 17): tombstones the tenant, deletes catalog artifacts + ledger rows, and erases substrate-side backups. Irreversible. `POST /v1/admin/tenants/erase` [Enterprise]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive admin tenants create
Create (or idempotently return) an administrative tenant. `POST /v1/admin/tenants` [Enterprise]
Usage: enscrive admin tenants create --name <NAME>
Options:
--name <NAME> Tenant name. Idempotent — re-calling with the same name returns the existing administrative tenant (`was_created: false` in the response)
-h, --help Print help
enscrive admin tenants erase
PERMANENTLY erase a tenant's backups (GDPR Article 17): tombstones the tenant, deletes catalog artifacts + ledger rows, and erases substrate-side backups. Irreversible. `POST /v1/admin/tenants/erase` [Enterprise]
Usage: enscrive admin tenants erase [OPTIONS] --tenant <TENANT> --confirm <CONFIRM>
Options:
--tenant <TENANT> Tenant UUID to erase. DESTRUCTIVE and IRREVERSIBLE
--confirm <CONFIRM> Must exactly repeat --tenant's value. Defense-in-depth client-side check mirroring the same field the server itself requires (the server's own confirm gate is authoritative; this just fails fast before a network round-trip on a typo)
--reason <REASON> Operator justification; lands on the tombstone row. Server default: "erasure_requested" when omitted
-h, --help Print help
enscrive admin api-keys
Operator API-key minting commands
Usage: enscrive admin api-keys <COMMAND>
Commands:
create Mint an API key for a (tenant, environment) pair. Cross-tenant — the caller's Admin capability is the auth gate, the target is named explicitly in the body. `POST /v1/admin/api-keys` [Enterprise]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive admin api-keys create
Mint an API key for a (tenant, environment) pair. Cross-tenant — the caller's Admin capability is the auth gate, the target is named explicitly in the body. `POST /v1/admin/api-keys` [Enterprise]
Usage: enscrive admin api-keys create [OPTIONS] --tenant <TENANT> --environment <ENVIRONMENT> --label <LABEL>
Options:
--tenant <TENANT> Target tenant UUID
--environment <ENVIRONMENT> Target environment UUID. Must belong to --tenant (the server pre-validates this and 400s otherwise)
--label <LABEL> Human-readable label for the minted key
--scope <SCOPE> Key scope: tenant | operator | platform_admin. Server default: tenant
--capabilities <CAPABILITIES> Comma-separated capability list (e.g. "search,records,admin"). Empty means "apply the default capabilities for the scope" server-side
--revoke-existing-with-label Atomically revoke prior active keys on (tenant, label) before minting the new one. Used to rotate a sidecar key without accumulating dead rows
--confirm <CONFIRM> Required (must exactly repeat --label) when minting a privilege-escalating key: `--scope operator`/`--scope platform_admin`, or any `--capabilities` entry of `admin`, `operator`, or `platform_admin`. Defense-in-depth against a fat-fingered scope/capability silently over-granting a fresh key — mirrors the `--confirm` gate on `admin tenants erase`. Not required for an ordinary tenant-scoped key
-h, --help Print help
enscrive admin catalog-import
Import a tenant's catalog backup artifact. Admin-only; confirm-gated; checksum-verified before any write [Enterprise]
Usage: enscrive admin catalog-import [OPTIONS] --tenant <TENANT> --confirm <CONFIRM>
Options:
--tenant <TENANT> Tenant UUID whose catalog to import
--confirm <CONFIRM> Must exactly repeat --tenant's value (server confirm-gate; same field name the server itself uses)
--ts <TS> Artifact generation (compact UTC timestamp, e.g. `20260610T120000Z`). Omit to use the latest `catalog_exports` ledger row for the tenant
--allow-unledgered DISASTER-RECOVERY ONLY: import an artifact with no matching `catalog_exports` ledger row (integrity then rests on the manifest alone). Use only when the ledger itself is gone
-h, --help Print help
enscrive admin corpora
Corpus repair commands
Usage: enscrive admin corpora <COMMAND>
Commands:
reconcile Repair a corpus whose catalog is complete but whose substrate (vector storage) is partial, by re-embedding exactly the missing chunks. ALWAYS-ASYNC: `POST /v1/admin/corpora/{id}/reconcile` returns 202 + a job id; this command polls to terminal by default [Enterprise]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive admin corpora reconcile
Repair a corpus whose catalog is complete but whose substrate (vector storage) is partial, by re-embedding exactly the missing chunks. ALWAYS-ASYNC: `POST /v1/admin/corpora/{id}/reconcile` returns 202 + a job id; this command polls to terminal by default [Enterprise]
Usage: enscrive admin corpora reconcile [OPTIONS] <CORPUS_ID>
Arguments:
<CORPUS_ID> Corpus UUID to reconcile
Options:
--async Return immediately with the launch response instead of polling to terminal status. The job continues server-side; poll with `enscrive jobs get --id <job_id>`
--timeout-secs <TIMEOUT_SECS> Poll timeout for the wait path. Ignored when --async is set [default: 1800]
-h, --help Print help
enscrive datasets
Evals 2.0 dataset primitive commands (list/get/describe/delete/upload). Distinct from legacy `enscrive evals datasets` which targets `/v1/evals/datasets/*` (eval_campaigns lineage)
Usage: enscrive datasets <COMMAND>
Commands:
list List datasets for the tenant + environment [Pro]
get Get a dataset by id [Pro]
describe Describe a dataset (structured summary for agents) [Pro]
delete Archive (hard-delete) a dataset [Pro]
upload Upload a BeIR-layout dataset from a local directory containing `corpus.jsonl`, `queries.jsonl`, `qrels.tsv` [Pro]
create Create a dataset by downloading from a HuggingFace BeIR URL. Writes `source_type=huggingface` and `source_url` at creation, so the dataset is eligible for the `/v1/eval-defs/{id}/publish` gate without admin SQL [Pro]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive datasets list
List datasets for the tenant + environment [Pro]
Usage: enscrive datasets list
Options:
-h, --help Print help
enscrive datasets get
Get a dataset by id [Pro]
Usage: enscrive datasets get --id <ID>
Options:
--id <ID>
-h, --help Print help
enscrive datasets describe
Describe a dataset (structured summary for agents) [Pro]
Usage: enscrive datasets describe --id <ID>
Options:
--id <ID>
-h, --help Print help
enscrive datasets delete
Archive (hard-delete) a dataset [Pro]
Usage: enscrive datasets delete --id <ID>
Options:
--id <ID>
-h, --help Print help
enscrive datasets upload
Upload a BeIR-layout dataset from a local directory containing `corpus.jsonl`, `queries.jsonl`, `qrels.tsv` [Pro]
Usage: enscrive datasets upload [OPTIONS] --dir <DIR> --name <NAME>
Options:
--dir <DIR>
Directory holding corpus.jsonl + queries.jsonl + qrels. Accepts both the flat layout (qrels.tsv at the top) and the canonical BEIR layout (qrels/{train,dev,test}.tsv); see --qrels-split
--qrels-split <QRELS_SPLIT>
Which qrels split to upload when the directory uses the BEIR layout (qrels/<split>.tsv). Default "test" — matches baseline comparison. Ignored when a flat qrels.tsv is present [default: test]
--name <NAME>
Dataset display name
--description <DESCRIPTION>
Optional description
--sample-strategy <SAMPLE_STRATEGY>
Sample strategy: full | stratified_random | explicit. Defaults to full [default: full]
--sample-params <SAMPLE_PARAMS>
Strategy params as JSON (e.g. '{"n_queries": 40, "distractor_ratio": 2}')
--sample-seed <SAMPLE_SEED>
Seed for stratified_random (ignored by other strategies)
--selected-query-ids <SELECTED_QUERY_IDS>
For `explicit`: comma-separated query IDs
--selected-doc-ids <SELECTED_DOC_IDS>
For `explicit`: comma-separated doc IDs
--rationale <RATIONALE>
For `explicit`: free-form rationale (stored for audit)
--async
Wave A: return immediately with the launched job instead of polling to terminal status. Ignored when the server returns synchronously (small uploads inline the response)
--timeout-secs <TIMEOUT_SECS>
Poll timeout for the wait path. Ignored when `--async` is set or when the server returns synchronously. Default 1800s [default: 1800]
-h, --help
Print help
enscrive datasets create
Create a dataset by downloading from a HuggingFace BeIR URL. Writes `source_type=huggingface` and `source_url` at creation, so the dataset is eligible for the `/v1/eval-defs/{id}/publish` gate without admin SQL [Pro]
Usage: enscrive datasets create [OPTIONS] --from-url <FROM_URL> --name <NAME>
Options:
--from-url <FROM_URL>
Source URL. For `huggingface`: accepts `huggingface:BeIR/fiqa`, `https://huggingface.co/datasets/BeIR/fiqa`, or short `BeIR/fiqa`. For `croissant`: any HTTPS URL pointing to a Croissant JSON-LD manifest (e.g. `https://huggingface.co/api/datasets/BeIR/scifact/croissant`)
--source-type <SOURCE_TYPE>
Source adapter. `huggingface` (default) for the BeIR JSONL pipeline; `croissant` for any HTTPS Croissant JSON-LD manifest URL [default: huggingface]
--name <NAME>
Dataset display name
--description <DESCRIPTION>
--sample-strategy <SAMPLE_STRATEGY>
full | stratified_random | explicit. Default full [default: full]
--sample-params <SAMPLE_PARAMS>
Strategy params as JSON
--sample-seed <SAMPLE_SEED>
--selected-query-ids <SELECTED_QUERY_IDS>
--selected-doc-ids <SELECTED_DOC_IDS>
--rationale <RATIONALE>
--async
Phase 1.5: for HuggingFace sources the server returns `202 Accepted + JobLaunchResponse`; this flag returns the launch response immediately instead of polling to terminal status. Ignored for non-async source types (croissant) which still return synchronously
--timeout-secs <TIMEOUT_SECS>
Poll timeout for the async-wait path (HuggingFace). Ignored when `--async` is set or when the server returns synchronously. Default 1800s (30 min); large archives (MSMARCO-class) may take longer [default: 1800]
-h, --help
Print help
enscrive eval-defs
Evals 2.0 eval definitions + runs (`/v1/eval-defs/*`, `/v1/eval-runs/*`). Distinct from legacy `enscrive evals campaigns`
Usage: enscrive eval-defs <COMMAND>
Commands:
create Create a new eval definition [Pro]
list List all eval definitions for the tenant + environment [Pro]
get Get a single eval definition [Pro]
delete Delete (soft-archive) an eval definition [Pro]
run Trigger a run and poll until terminal [Pro]
runs Per-run sub-commands
publish Publish a completed full-scope run as canonical [Pro]
publications List active publications for an eval [Pro]
unpublish Unpublish a publication (soft delete — audit row remains) [Pro]
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive eval-defs create
Create a new eval definition [Pro]
Usage: enscrive eval-defs create [OPTIONS] --dataset <DATASET> --corpus <CORPUS> --name <NAME>
Options:
--dataset <DATASET> Dataset UUID this eval targets
--corpus <CORPUS> Corpus UUID (where search runs)
--voice <VOICE> Optional voice UUID
--name <NAME> Display name
--description <DESCRIPTION> Optional description
--methodology <METHODOLOGY> Optional methodology JSON (defaults to `{"k_values": [10, 100], "metrics": ["recall","precision","ndcg","mrr"]}`)
-h, --help Print help
enscrive eval-defs list
List all eval definitions for the tenant + environment [Pro]
Usage: enscrive eval-defs list
Options:
-h, --help Print help
enscrive eval-defs get
Get a single eval definition [Pro]
Usage: enscrive eval-defs get --id <ID>
Options:
--id <ID>
-h, --help Print help
enscrive eval-defs delete
Delete (soft-archive) an eval definition [Pro]
Usage: enscrive eval-defs delete --id <ID>
Options:
--id <ID>
-h, --help Print help
enscrive eval-defs run
Trigger a run and poll until terminal [Pro]
Usage: enscrive eval-defs run [OPTIONS] --id <ID>
Options:
--id <ID> Eval definition UUID
--no-follow Don't poll — return the accepted-response as soon as the run enqueues
--poll-secs <POLL_SECS> Poll interval in seconds [default: 3]
--timeout-secs <TIMEOUT_SECS> Max total polling seconds before giving up (still returns what's known at that moment) [default: 3600]
-h, --help Print help
enscrive eval-defs runs
Per-run sub-commands
Usage: enscrive eval-defs runs <COMMAND>
Commands:
list List all runs for an eval definition
get Fetch a run (aggregate metrics + status)
diagnose Fetch per-query details for a run, sorted worst-first — the diagnose view
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive eval-defs runs list
List all runs for an eval definition
Usage: enscrive eval-defs runs list --eval-id <EVAL_ID>
Options:
--eval-id <EVAL_ID>
-h, --help Print help
enscrive eval-defs runs get
Fetch a run (aggregate metrics + status)
Usage: enscrive eval-defs runs get --id <ID>
Options:
--id <ID>
-h, --help Print help
enscrive eval-defs runs diagnose
Fetch per-query details for a run, sorted worst-first — the diagnose view
Usage: enscrive eval-defs runs diagnose [OPTIONS] --id <ID>
Options:
--id <ID>
--limit <LIMIT> [default: 20]
--offset <OFFSET> [default: 0]
--order <ORDER> Ordering: `worst` (default) by nDCG@10 asc, or `created` for insert order [default: worst]
-h, --help Print help
enscrive eval-defs publish
Publish a completed full-scope run as canonical [Pro]
Usage: enscrive eval-defs publish [OPTIONS] --id <ID> --run-id <RUN_ID>
Options:
--id <ID> Eval definition UUID
--run-id <RUN_ID> Run UUID to mark as canonical
--notes <NOTES> Optional free-form reviewer notes (stored for audit)
-h, --help Print help
enscrive eval-defs publications
List active publications for an eval [Pro]
Usage: enscrive eval-defs publications --id <ID>
Options:
--id <ID>
-h, --help Print help
enscrive eval-defs unpublish
Unpublish a publication (soft delete — audit row remains) [Pro]
Usage: enscrive eval-defs unpublish --publication-id <PUBLICATION_ID>
Options:
--publication-id <PUBLICATION_ID>
-h, --help Print help
enscrive license
License management for self-managed / enterprise deployments. The enscrive-developer service verifies the JWT at startup — the CLI only stores it
Usage: enscrive license <COMMAND>
Commands:
activate Activate a license JWT by writing it to $ENSCRIVE_LICENSE_PATH (or ~/.config/enscrive/license.jwt)
status Show current license status (plan, expiry, file path)
deactivate Remove the license file from disk
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
enscrive license activate
Activate a license JWT by writing it to $ENSCRIVE_LICENSE_PATH (or ~/.config/enscrive/license.jwt)
Usage: enscrive license activate <JWT>
Arguments:
<JWT> Signed license JWT obtained from the enscrive.io portal
Options:
-h, --help Print help (see more with '--help')
enscrive license status
Show current license status (plan, expiry, file path)
Usage: enscrive license status
Options:
-h, --help Print help (see more with '--help')
enscrive license deactivate
Remove the license file from disk
Usage: enscrive license deactivate
Options:
-h, --help Print help (see more with '--help')