Pipelines — CLI Guide
The dodil k3 CLI covers five Pipeline-domain command groups:
dodil k3 source— register external sources on a bucket (current CLI surface:createonly)dodil k3 credential— store credentials + run the OAuth flow (current CLI surface:store,oauth-url,oauth-exchange)dodil k3 pipeline— full pipeline CRUD (create,list,get,update,delete)dodil k3 template— browse the Scriptum template catalog (list,get)dodil k3 ingest— rule lifecycle + sync triggers + job listing (rules:add,get,list,delete; jobs:jobs; triggers:trigger,trigger-discovery)
For install, auth, output format, and global flags see CLI Basics. For the underlying API contracts see Pipelines — API Reference.
Quick setup
dodil auth loginOpens a browser to log in; for non-interactive / CI use, set DODIL_SERVICE_ACCOUNT_ID + DODIL_SERVICE_ACCOUNT_SECRET (or pass --service-account-id/--service-account-secret). After login, the CLI resolves endpoint, token, and org from ~/.config/dodil/config.yaml. Most pipeline commands take --bucket / -b to scope.
CLI surface vs API surface
The CLI is leaner than the underlying API on purpose — it covers the most-common operations. Anything missing has a direct HTTP equivalent in the API Reference.
| Domain | API coverage | CLI coverage | Use API directly for |
|---|---|---|---|
| Source | full CRUD + Update | only create | get, list, update, delete — use curl against /:bucket/sources |
| Credential | full CRUD + Validate + Refresh + OAuth | store, oauth-url, oauth-exchange | get, list, delete, validate, refresh — use curl against /admin/credentials |
| Pipeline | full CRUD | full CRUD | — ✅ complete |
| Template | List + Get | full — list supports server-side --category / --search / --label key=value filters | — ✅ complete |
| Rule | full CRUD | full CRUD — add / get / list (with -p pipeline filter) / update / delete | — ✅ complete |
| Sync / Jobs | TriggerIngest, TriggerDiscovery, TriggerIngestion, GetSyncStatus, ListIngestJobs, GetIngestStatus | trigger, trigger-discovery, jobs (with -r rule and -p pipeline filters) | TriggerIngestion (bulk replay), GetSyncStatus, server-side status_filter on jobs — use curl |
Quickstart shape
A typical pipeline-domain CLI session looks like this:
# 1. Browse what's available
dodil k3 template list -o json
# 2. Create a pipeline targeting a destination
dodil k3 pipeline create embed-docs \
-b kb-prod --scriptum text_embedding_index -o json
# 3. Create an ingest rule for the internal source
# (find SOURCE_ID via curl — `source list` isn't in the CLI yet)
dodil k3 ingest add pdf-rule \
-b kb-prod \
--source "$SOURCE_ID" \
--collection "$PIPELINE_ID" \
--include "**/*.pdf"
# 4. Upload an object — auto-triggers the pipeline
dodil k3 object create ./contract.pdf -b kb-prod -k contracts/contract.pdf
# 5. Watch the job
dodil k3 ingest jobs -b kb-prod --pipeline-id "$PIPELINE_ID"See Quickstart for the full end-to-end walkthrough.
See also
- API Reference — the full Pipelines API surface
- Core Concepts — Source, Credential, Pipeline, Template, Rule, IngestJob
- CLI Basics — install, auth, output formats
- Conventions — auth headers and error envelope