Contact

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:

  1. 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 …).
  2. 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 search accepts --corpus as optional and the help text below says so, but omitting it currently fails against the local stack. Pass --corpus on every search.
  • Many commands call the managed /v1 API at api.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

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
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
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
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')