dodil k3 ingest
Rules, triggers, and jobs. Aliased as dodil k3 rule. The single group covers three concerns:
- Rule lifecycle — full CRUD:
add,get,list,update,delete - Sync triggers —
trigger(dispatch matched objects),trigger-discovery(scan source for new objects) - Jobs —
jobs(list ingest jobs in a bucket)
--bucket / -b is persistent on the group.
Rules
dodil k3 ingest add
dodil k3 ingest add [name] \
-b BUCKET \
--source SOURCE_ID \
--collection PIPELINE_ID \
[--include PATTERN] [--include PATTERN ...]Creates an ingest rule. The --collection flag maps to the API’s pipeline_id — historical naming the CLI hasn’t caught up on.
| Flag | Short | Type | Description |
|---|---|---|---|
--bucket | -b | string | Required (persistent). |
--source | -s | string | Required. Source ID the rule fires against. |
--collection | -c | string | Required. Pipeline ID (despite the name) to bind to. |
--include | -i | string list | Include glob patterns (case-insensitive, supports * / ** / ? — see Glob syntax). Default: **/* (match everything). Repeatable. |
Examples:
# Index all PDFs under contracts/ via your embedding pipeline
dodil k3 ingest add pdf-rule \
-b kb-prod \
--source "$SOURCE_ID" \
--collection "$PIPELINE_ID" \
--include "contracts/**/*.pdf"
# Match anything (default --include)
dodil k3 ingest add all-rule \
-b kb-prod \
--source "$SOURCE_ID" \
--collection "$PIPELINE_ID"
# Multiple include patterns
dodil k3 ingest add docs-rule \
-b kb-prod \
--source "$SOURCE_ID" \
--collection "$PIPELINE_ID" \
--include "docs/**/*.pdf" \
--include "docs/**/*.md"Exclude patterns, MIME filters, size thresholds, and priority aren’t on CLI flags today. Set them via
UpdateRuleover the API afteradd, or create the rule via the API directly withCreateRule.
dodil k3 ingest get
dodil k3 ingest get [rule_id] -b BUCKETExample:
dodil k3 ingest get rule_a1b2... -b kb-prod -o jsondodil k3 ingest list
dodil k3 ingest list -b BUCKET [-s SOURCE_ID] [-p PIPELINE_ID]| Flag | Short | Description |
|---|---|---|
--source | -s | Filter by source ID |
--pipeline | -p | Filter by pipeline ID |
Examples:
# All rules in the bucket
dodil k3 ingest list -b kb-prod -o json
# Filter by source
dodil k3 ingest list -b kb-prod -s "$SOURCE_ID" -o json
# All rules bound to a specific pipeline (useful when you have multiple sources feeding one pipeline)
dodil k3 ingest list -b kb-prod -p "$PIPELINE_ID" -o jsondodil k3 ingest update
dodil k3 ingest update [rule_id] -b BUCKET [flags]Patches mutable fields on a rule. Pass only the flags you want to change.
| Flag | Type | Description |
|---|---|---|
--name | string | Rename the rule |
--description | string | Replace description |
--include | string list | Replace include glob patterns (empty = clear) |
--exclude | string list | Replace exclude glob patterns (empty = clear) |
--include-mime | string list | Replace include MIME types (empty = clear) |
--exclude-mime | string list | Replace exclude MIME types (empty = clear) |
--min-size | int64 | Minimum object size in bytes |
--max-size | int64 | Maximum object size in bytes (0 = no limit) |
--enabled | bool | Enable (true) or disable (false) — pauses the rule without deleting it |
--priority | int32 | Higher value = matched first |
--pipeline | string | Re-bind the rule to a different pipeline ID |
Examples:
# Pause a rule without deleting it
dodil k3 ingest update rule_a1b2... -b kb-prod --enabled=false
# Re-enable
dodil k3 ingest update rule_a1b2... -b kb-prod --enabled=true
# Tighten the include set
dodil k3 ingest update rule_a1b2... -b kb-prod --include "contracts/2026/*.pdf"
# Add MIME filtering on top
dodil k3 ingest update rule_a1b2... -b kb-prod \
--include-mime application/pdf
# Re-bind to a new pipeline (e.g. after spawning a v2 pipeline)
dodil k3 ingest update rule_a1b2... -b kb-prod --pipeline pipe_new...
# Combine — rename + change priority + re-enable
dodil k3 ingest update rule_a1b2... -b kb-prod \
--name "contracts-rule-v2" \
--priority 200 \
--enabled=trueList-typed flags REPLACE the existing values.
--includewith an empty list clears the include set; with one or more patterns it replaces the whole set. Same for--exclude,--include-mime,--exclude-mime. To accumulate, list-get the existing values first, then pass the combined list.
dodil k3 ingest delete
dodil k3 ingest delete [rule_id] -b BUCKETExample:
dodil k3 ingest delete rule_a1b2... -b kb-prodExisting in-flight jobs continue; new ones stop. To pause without deleting, use update --enabled=false above.
Sync triggers
dodil k3 ingest trigger-discovery
Scans a source for new / changed objects.
dodil k3 ingest trigger-discovery -b BUCKET -s SOURCE_ID [--rule RULE_ID] [--full-sync]| Flag | Short | Type | Description |
|---|---|---|---|
--source | -s | string | Required. Source to scan. |
--rule | -r | string | Scope discovery to one rule’s matchers |
--full-sync | — | bool | Ignore the source’s checkpoint and rescan from scratch |
Examples:
# Delta scan
dodil k3 ingest trigger-discovery -b kb-prod -s "$SOURCE_ID"
# Full rescan (after fixing pipeline options / rules)
dodil k3 ingest trigger-discovery -b kb-prod -s "$SOURCE_ID" --full-sync
# Narrow to one rule's matchers
dodil k3 ingest trigger-discovery -b kb-prod -s "$SOURCE_ID" --rule "$RULE_ID"dodil k3 ingest trigger
Dispatches already-discovered objects to ingest — replay / backfill.
dodil k3 ingest trigger -b BUCKET -s SOURCE_ID \
[--rule RULE_ID] [--source-object-id OBJ_ID] [--retry-failed]| Flag | Short | Type | Description |
|---|---|---|---|
--source | -s | string | Required. Source to ingest from. |
--rule | -r | string | Restrict to one rule’s pending objects |
--source-object-id | — | string | Restrict to a single source-object row |
--retry-failed | — | bool | Include objects in FAILED / PARTIAL status |
Examples:
# Replay all failed/partial objects
dodil k3 ingest trigger -b kb-prod -s "$SOURCE_ID" --retry-failed
# Replay a single object
dodil k3 ingest trigger -b kb-prod -s "$SOURCE_ID" --source-object-id obj_a1b2...One-shot single-object ingest (without going through a source’s queue) is
TriggerIngeston the API — not currently in the CLI.
Jobs
dodil k3 ingest jobs
dodil k3 ingest jobs -b BUCKET [-r RULE_ID] [-p PIPELINE_ID]Lists all ingest jobs in the bucket. Filter by rule and/or pipeline.
| Flag | Short | Description |
|---|---|---|
--rule | -r | Filter by rule ID |
--pipeline | -p | Filter by pipeline ID |
Examples:
# All jobs in the bucket
dodil k3 ingest jobs -b kb-prod -o json
# Only jobs from one rule
dodil k3 ingest jobs -b kb-prod -r "$RULE_ID" -o json
# All jobs for one pipeline (useful when the pipeline has multiple rules feeding it)
dodil k3 ingest jobs -b kb-prod -p "$PIPELINE_ID" -o json
# Failed jobs only (status filter is still client-side via jq)
dodil k3 ingest jobs -b kb-prod -o json \
| jq '.jobs[] | select(.status == "INGEST_STATUS_FAILED")'Status enum, counters, and Scriptum thread linkage are documented at Core Concepts → IngestJob.
Server-side
status_filteris supported on the API but not as a CLI flag today — filter client-side withjqas above.
See also
- Rules — API Reference — full Rule CRUD on the HTTP / gRPC surface
- Sync — API Reference —
TriggerDiscovery,TriggerIngestion,GetSyncStatus - Jobs — API Reference —
TriggerIngest,GetIngestStatus,ListIngestJobs - Core Concepts → Rule · → IngestJob