Skip to Content
We are live but in Staging 🎉
PipelinesCLI Guidedodil data recipe

dodil data recipe

Recipes are deterministic, one-command bundles — pipeline(s) + rule(s), plus a tables engine or object destination where the flow needs one — for common use cases. They are the fast path to everything the Quickstart and the cross-primitive recipes wire up by hand: instead of creating a collection, a pipeline, and an ingest rule in three commands, recipe install does it in one.

recipe show <id> prints the exact ordered steps before you run anything, so you (or an agent) can inspect — or replicate — what a recipe does under the hood.

The catalog

Eight recipes ship, and these ids are the complete list — dodil data recipe list returns exactly these and nothing else. An unknown id fails with unknown recipe "…".

Recipe IDGroupWhat it stands up
document-ragragIndex PDFs, office docs and markdown for semantic search (text_embedding_index + doc-glob rule)
code-ragragIndex source code for semantic search (code_embedding_index + source-extension rule)
image-ragragIndex images for visual similarity search (visual_embedding_index + image-glob rule)
invoice-intakeintakeParse invoices into a structured table (invoice_parsing → Tables)
transcriptionintakeTranscribe audio/video (audio_transcription → Tables) and index the text (text_embedding_index → Vector)
summarize-to-markdownprocessingSummarize documents and write results back to summaries/ (object destination + summarization)
summarize-then-ragcomboSummarize documents, then index the summaries for search (object destination + summarization, then text_embedding_index over summaries/)
genericgenericA vector index plus classification/summarization tables for mixed files

dodil data recipe list

dodil data recipe list [-o json]

Prints the catalog — ID, group, and tagline per recipe.

dodil data recipe show

dodil data recipe show <recipe-id> [-b BUCKET] [-o json]

Prints the ordered steps the recipe will run (the underlying commands), resolved against the bucket and flags you pass. Nothing is provisioned.

dodil data recipe show document-rag -b kb-prod # Recipe "document-rag" — Index PDFs, office docs and markdown for semantic search # # 1. vector collection add "document_rag_docs" --template text_embedding_index # 2. ingest add "document_rag_docs_rule" --source <internal-s3> --collection <last-vector> --include **/*.pdf,**/*.docx,**/*.md,**/*.txt,**/*.html

Note step 2: recipe install binds the ingest rule for you. This is the one path where you get a pipeline that actually runs from a single command — every other route (vector collection add, table pipeline create, pipeline create, or the raw API) leaves rule creation to you. The rule’s --source resolves to the bucket’s internal S3 source at install time, and --collection binds to the pipeline the previous step created.

Recipes carrying the legacy ensure-tables-engine step print (engine step retired — engines are implicit; skipped) and do nothing — the engine plane was retired. Object-destination steps show as (object destination folded into the pipeline; prefix …) because CreateObjectPipeline now writes the destination and its pipeline together.

dodil data recipe install

dodil data recipe install <recipe-id> -b BUCKET \ [--name-prefix PREFIX] [--folder SUBFOLDER/] \ [--set key=value ...] [--dry-run]

Provisions the recipe against the bucket. Collections and tables are created on demand — no engine setup or polling step precedes this.

FlagTypeDescription
--bucket / -bstringRequired. Bucket to provision against.
--name-prefixstringPrefix for created resource names. Default is the recipe id with hyphens replaced by underscores (document-ragdocument_rag). Collections/tables become <prefix>_<suffix>.
--folderstringOnly ingest from this bucket subfolder; scopes rule globs (e.g. --folder invoices/).
--setkey=value (repeatable)Template inputs / pipeline options, e.g. --set llm_model=kimi-k2.6 --set language=en.
--dry-runboolPrint the resolved plan without provisioning anything.

Examples:

# One command to a working RAG stack — then just upload documents dodil data recipe install document-rag -b kb-prod # Invoice parsing scoped to one folder, with a custom name prefix dodil data recipe install invoice-intake -b finance \ --folder invoices/ --name-prefix ap # Inspect first, then commit dodil data recipe install summarize-then-rag -b kb-prod --dry-run

Install is all-or-nothing per run: each step is a stage, and a failure aborts the recipe with recipe "<id>" failed at step N/M. The recipe is not installed at that point — fix the cause and re-run the same install; already-provisioned resources are reused.

After install, the stack behaves exactly like a hand-built one: uploads matching the rule globs spawn ingest jobs (dodil data ingest jobs -b <bucket>), and the created pipelines / rules / collections are managed with the regular pipeline, ingest, and per-primitive commands. Everything a recipe creates is stamped with recipeName (the resolved name prefix) on the Pipeline and IngestRule rows, so you can find it later:

dodil data pipeline list -b kb-prod -o json \ | jq '[.pipelines[] | select(.recipeName == "document_rag") | .pipelineId]'

To tear one down, delete the rules first, then the pipelines — or use BatchDeleteArtifacts (POST /:bucket/pipelines/_batch-delete), the idempotent multi-artifact inverse built for exactly this. It removes only the wiring K3 owns; the physical collection or table is plane state you drop yourself.


See also