# DataK³ — one bucket, every dimension > Objects, tables, vector, and graph — one bucket, every dimension; wire adapters for S3, Postgres, Bolt, Pinecone, and Qdrant (object, table, vector) glued together by automated Scriptum workflows. Every K3 bucket is a self-contained knowledge instance — bytes, rows, and embeddings queryable side-by-side. ## Start here - [Overview](https://docs.dodil.io/k3): the three-primitive framing and where to go next - [Conventions](https://docs.dodil.io/k3/conventions): auth headers, route style, error envelope — applies to every K3 API; plus the data-plane adapter matrix (per-wire endpoints + API key / service account / bearer-JWT auth forms) - [CLI Basics](https://docs.dodil.io/k3/cli-basics): `dodil data` CLI install, auth, common flags, known gaps - [Connect & wire adapters](https://docs.dodil.io/k3/connect): endpoints (pg/objects/bolt/qdrant/pinecone/gql/grpc), API-key or service-account auth, dodil data sql|pg|bolt|vsearch|connect - [Data Engines](https://docs.dodil.io/k3/engines): the four engines behind every bucket — Objects (CephS3 byte plane, S3 wire), SQL (DB/OLTP + Warehouse/HTAP lanes on tabled; pg/gRPC/GraphQL), Vector (Qdrant/Pinecone adapters), Graph (Bolt/Cypher, defined via SQL) — one control plane, per-protocol data planes - [Reservation & Hot Cache](https://docs.dodil.io/k3/capacity): free shared tier vs dedicated (metered) reservations; per-engine resident-GB floors (sql/vector/graph); `dodil data reservation set|get|delete`; POST/GET/DELETE /:bucket/tables/reservation - [Graph](https://docs.dodil.io/k3/engines/graph): CREATE GRAPH over tables, graph_* SQL traversals + Cypher subset over Bolt, GraphQL graph fields ## Objects engine - [Object Storage](https://docs.dodil.io/k3/engines/objects): S3-compatible; the byte plane - [Quickstart](https://docs.dodil.io/k3/engines/objects/quickstart): first bucket + object + presigned URL in 5 minutes via `dodil data` - [Core Concepts](https://docs.dodil.io/k3/engines/objects/concepts): buckets, objects, ACL/policy, presigned URLs, internal source - [API Reference — Overview](https://docs.dodil.io/k3/engines/objects/api-reference): all StorageService operations grouped by resource - [API Reference — Buckets](https://docs.dodil.io/k3/engines/objects/api-reference/buckets): CreateBucket, GetBucket, ListBuckets, UpdateBucket, DeleteBucket - [API Reference — Policy](https://docs.dodil.io/k3/engines/objects/api-reference/policy): SetBucketPolicy, GetBucketPolicy, DeleteBucketPolicy (S3-style ACL) - [API Reference — CORS](https://docs.dodil.io/k3/engines/objects/api-reference/cors): PutBucketCors, GetBucketCors, DeleteBucketCors - [API Reference — Objects](https://docs.dodil.io/k3/engines/objects/api-reference/objects): byte plane (PUT/GET/HEAD via S3 protocol, no gRPC) + admin (ListObjects, GetObjectInfo, DeleteObject, GetObjectUrl) - [CLI Guide — Overview](https://docs.dodil.io/k3/engines/objects/cli-guide): all five Storage command groups - [CLI Guide — dodil data bucket](https://docs.dodil.io/k3/engines/objects/cli-guide/bucket): create, get, list, update, delete - [CLI Guide — dodil data bucket policy](https://docs.dodil.io/k3/engines/objects/cli-guide/policy): set (from JSON file/stdin), get, delete — S3-style ACL - [CLI Guide — dodil data bucket cors](https://docs.dodil.io/k3/engines/objects/cli-guide/cors): set (from JSON file/stdin), get, delete - [CLI Guide — dodil data object](https://docs.dodil.io/k3/engines/objects/cli-guide/object): create (HTTP PUT), show, list, url (presign), remove - [CLI Guide — dodil data mount](https://docs.dodil.io/k3/engines/objects/cli-guide/mount): mount (FUSE/NFS), unmount, list active mounts - [S3 Compatibility](https://docs.dodil.io/k3/engines/objects/s3-compatibility): aws-cli / boto3 / @aws-sdk/client-s3 / mc setup, supported S3 actions, auth modes, path-style addressing - [Recipes — Overview](https://docs.dodil.io/k3/engines/objects/recipes): copy-pasteable scenarios index - [Recipes — Browser Upload](https://docs.dodil.io/k3/engines/objects/recipes/browser-upload): presigned PUT + CORS for direct-from-browser uploads - [Recipes — Multipart Large Files](https://docs.dodil.io/k3/engines/objects/recipes/multipart-large-files): SDK auto-multipart, manual multipart, browser-side multipart with presigned URLs - [Recipes — Static Site / Assets](https://docs.dodil.io/k3/engines/objects/recipes/static-site): public bucket + CORS + cache-control for serving assets - [Recipes — Share a Public Bucket](https://docs.dodil.io/k3/engines/objects/recipes/share-public-bucket): world-readable bucket via policy — plain S3 URLs, no presigning - [Recipes — Mirror from AWS S3](https://docs.dodil.io/k3/engines/objects/recipes/mirror-from-s3): aws s3 sync / mc mirror / rclone between AWS and K3 ## Pipelines - [Pipelines](https://docs.dodil.io/k3/pipelines): sources + rules + Scriptum templates — auto-process every object into vector / warehouse / object / free destinations - [Quickstart](https://docs.dodil.io/k3/pipelines/quickstart): index your first PDF as embeddings in 5 minutes — end-to-end via `dodil data` - [Core Concepts](https://docs.dodil.io/k3/pipelines/concepts): proto-grounded type signatures for Source, Credential, Pipeline, Template, ScriptContract (the typed I/O contract — TypedField/TypeRef/constraints/EnumDef — shared across pillars), Rule, IngestJob - [API Reference — Overview](https://docs.dodil.io/k3/pipelines/api-reference): three services (Source, Pipeline, Ingest) grouped per resource - [API Reference — Sources](https://docs.dodil.io/k3/pipelines/api-reference/sources): CreateSource, GetSource, ListSources, UpdateSource, DeleteSource - [API Reference — Credentials](https://docs.dodil.io/k3/pipelines/api-reference/credentials): Store/Get/List/Delete/Validate + OAuth (GetOAuthUrl, ExchangeOAuthCode, RefreshOAuthToken) - [API Reference — Pipelines](https://docs.dodil.io/k3/pipelines/api-reference/pipelines): CreatePipeline (reference or spawn from template), GetPipeline, ListPipelines, UpdatePipeline, DeletePipeline - [API Reference — Templates](https://docs.dodil.io/k3/pipelines/api-reference/templates): ListTemplates, GetTemplate + the 24-template production catalog (core analysis, embedding index/search, vision, ecommerce) with modalities and warehouse-compat flags - [API Reference — Rules](https://docs.dodil.io/k3/pipelines/api-reference/rules): CreateRule, GetRule, ListRules, UpdateRule, DeleteRule (glob + MIME + size filters → pipeline_id) - [API Reference — Sync](https://docs.dodil.io/k3/pipelines/api-reference/sync): TriggerDiscovery, TriggerIngestion, GetSyncStatus - [API Reference — Jobs](https://docs.dodil.io/k3/pipelines/api-reference/jobs): TriggerIngest (one-shot), GetIngestStatus, ListIngestJobs - [CLI Guide — Overview](https://docs.dodil.io/k3/pipelines/cli-guide): six command groups + CLI-vs-API coverage table - [CLI Guide — dodil data source](https://docs.dodil.io/k3/pipelines/cli-guide/source): create, list, get (update/delete on API) - [CLI Guide — dodil data credential](https://docs.dodil.io/k3/pipelines/cli-guide/credential): store, oauth-url, oauth-exchange (other ops on API) - [CLI Guide — dodil data pipeline](https://docs.dodil.io/k3/pipelines/cli-guide/pipeline): full CRUD — create, list, get, update, delete - [CLI Guide — dodil data template](https://docs.dodil.io/k3/pipelines/cli-guide/template): list (with --category, --search, --label key=value server-side filters), get — org-scoped catalog browse across all pillars - [CLI Guide — dodil data ingest](https://docs.dodil.io/k3/pipelines/cli-guide/ingest): full rule CRUD (add/get/list/update/delete) with -p pipeline filter on list and jobs; triggers (trigger, trigger-discovery); jobs (-r rule and -p pipeline filters); update covers enable/disable, predicate replacement, MIME/size filters, re-bind to a different pipeline - [CLI Guide — dodil data recipe](https://docs.dodil.io/k3/pipelines/cli-guide/recipe): one-command provisioning — list, show, install (document-rag, code-rag, image-rag, invoice-intake, transcription, summarize-to-markdown, summarize-then-rag, generic) - [Recipes — Overview](https://docs.dodil.io/k3/pipelines/recipes): three end-to-end scenarios using production Scriptum templates - [Recipes — PDF → Vector](https://docs.dodil.io/k3/pipelines/recipes/pdf-to-vector): full RAG ingest with text_embedding_index — bucket, vector binding, rule, upload, watch, search - [Recipes — Documents → Warehouse](https://docs.dodil.io/k3/pipelines/recipes/docs-to-warehouse): entity_pii_extraction → structured rows in a Tables table; SQL query examples - [Recipes — Replay & Retry](https://docs.dodil.io/k3/pipelines/recipes/replay-and-retry): diagnose FAILED/PARTIAL jobs, understand RETRYING semantics, three replay scopes (TriggerIngest single, TriggerIngestion bulk, full-sync rediscover) ## SQL engine - [Tables](https://docs.dodil.io/k3/engines/sql): HTAP on Delta Lake — transactional writes coalesced into analytical reads; auto-enabled engine per bucket; the structure plane - [Quickstart](https://docs.dodil.io/k3/engines/sql/quickstart): create table → insert → query → JSON ops → MERGE → maintenance in 5 minutes - [Core Concepts](https://docs.dodil.io/k3/engines/sql/concepts): proto-grounded types — Engine, Table, Column, QueryStrategy, WriteStrategy, Freshness, ServedBy, HistoryEntry - [SQL Compatibility](https://docs.dodil.io/k3/engines/sql/sql-compatibility): DuckDB dialect, 11 column types, statement shapes (DDL/DML), JSON ops, refusals (BEGIN/COMMIT, multi-statement), coming-from-Postgres/MySQL/BigQuery cheatsheet - [API Reference — Overview](https://docs.dodil.io/k3/engines/sql/api-reference): six groups (Tables, Data, Execute, Maintenance, Templates, Engine) — wire conventions, truthful-response-shape note - [API Reference — Tables — Overview](https://docs.dodil.io/k3/engines/sql/api-reference/tables): table lifecycle hub — the two creation modes (manual vs pipeline-generated) and the Get/List/Schema/Describe/Partitions/Delete RPCs - [API Reference — Tables — Create](https://docs.dodil.io/k3/engines/sql/api-reference/tables/create): CreateTable (manual) + CreateTablePipeline (Scriptum template-bound, schema lazy-materialized) - [API Reference — Tables — Lifecycle](https://docs.dodil.io/k3/engines/sql/api-reference/tables/lifecycle): GetTable, ListTables, DeleteTable - [API Reference — Tables — Schema](https://docs.dodil.io/k3/engines/sql/api-reference/tables/schema): AlterTable (ADD COLUMN only), DescribeTable (sidecar stats + last-drain row classification), ListPartitions - [API Reference — Data — Overview](https://docs.dodil.io/k3/engines/sql/api-reference/data): structured row-ops hub — typed shortcuts (Query/Insert/Merge/Update/DeleteRows) for what Execute does with SQL strings; when to use Data vs Execute - [API Reference — Data — Query](https://docs.dodil.io/k3/engines/sql/api-reference/data/query): typed SQL read shortcut with freshness control, lookup_tables, strategy/served_by observability - [API Reference — Data — Insert](https://docs.dodil.io/k3/engines/sql/api-reference/data/insert): bulk insert; mode=append/overwrite - [API Reference — Data — Merge](https://docs.dodil.io/k3/engines/sql/api-reference/data/merge): upsert by match_columns; when_matched=update/delete, when_not_matched=insert/ignore - [API Reference — Data — Update](https://docs.dodil.io/k3/engines/sql/api-reference/data/update): predicate + flat updates Struct (wire-shape gotcha around fields wrapping) - [API Reference — Data — DeleteRows](https://docs.dodil.io/k3/engines/sql/api-reference/data/delete-rows): predicate-based delete, keyed = tombstone in write log - [API Reference — Execute (SQL) — Overview](https://docs.dodil.io/k3/engines/sql/api-reference/execute): Execute RPC contract, Freshness/QueryStrategy/WriteStrategy/ServedBy enums, refusals (BEGIN/COMMIT, DROP/RENAME COLUMN, multi-statement) - [API Reference — Execute — DDL](https://docs.dodil.io/k3/engines/sql/api-reference/execute/ddl): CREATE TABLE (with PRIMARY KEY + PARTITIONED BY), CTAS (type inference), ALTER TABLE ADD COLUMN, DROP TABLE - [API Reference — Execute — SELECT](https://docs.dodil.io/k3/engines/sql/api-reference/execute/select): read strategies (UNARY_WAREHOUSE, UNARY_MERGED_STRONG, FEDERATED_AGGREGATE/SCAN/TO_SINGLE), JSON column reads, joins/CTEs/windows - [API Reference — Execute — INSERT](https://docs.dodil.io/k3/engines/sql/api-reference/execute/insert): KEYED_INSERT_SINGLE/BULK/FROM_SELECT, NON_KEYED_INSERT (Delta-direct), NON_KEYED_INSERT_FROM_SELECT - [API Reference — Execute — UPDATE](https://docs.dodil.io/k3/engines/sql/api-reference/execute/update): KEYED_UPDATE/RANGE/FROM_SUBQUERY, NON_KEYED_UPDATE (⚠️ WAL-bypass) + two safe patterns (Compact-first / subquery-rewrite) - [API Reference — Execute — DELETE](https://docs.dodil.io/k3/engines/sql/api-reference/execute/delete): KEYED_DELETE/RANGE_DELETE/DELETE_FROM_SUBQUERY (write log tombstones), NON_KEYED_DELETE (⚠️) - [API Reference — Execute — MERGE](https://docs.dodil.io/k3/engines/sql/api-reference/execute/merge): MERGE_ROWS / MERGE_QUERY / MERGE_TABLE; WHEN MATCHED THEN DELETE; pre/post-drain semantics - [API Reference — Execute — Materialize](https://docs.dodil.io/k3/engines/sql/api-reference/execute/materialize): structured CTAS — modes (create/replace/append), lookup_tables for broadcast JOINs - [API Reference — Maintenance](https://docs.dodil.io/k3/engines/sql/api-reference/maintenance): Optimize (bin-pack + Z-order), Vacuum (retention + dry-run), Compact (force WAL drain), Restore (time travel by version/timestamp), History (paginated commit log) - [API Reference — Templates](https://docs.dodil.io/k3/engines/sql/api-reference/templates): ListTemplates filtered to 14 warehouse-compatible Scriptum templates (entity_pii_extraction, document_triage, summarization, classification, ocr_extraction, sentiment_intent_analysis, image_understanding, audio_transcription, object_detection, video_surveillance, code_intelligence, product_catalog_enrichment, review_analysis, translation) - [API Reference — Engine](https://docs.dodil.io/k3/engines/sql/api-reference/engine): EnableEngine / GetEngine / DisableEngine — auto-enabled per bucket; rarely needed - [CLI Guide — Overview](https://docs.dodil.io/k3/engines/sql/cli-guide): two command groups (table, engine), CLI-vs-API coverage table, quick session - [CLI Guide — dodil data table (lifecycle)](https://docs.dodil.io/k3/engines/sql/cli-guide/table): create (manual + pipeline-generated via --source/--pipeline-template-id), list, get, describe, delete, templates (warehouse-compatible subset, org-scoped, server-filtered via --category/--search/--label) - [CLI Guide — dodil data table (data)](https://docs.dodil.io/k3/engines/sql/cli-guide/data): query [positional sql], insert (--row repeatable, --mode), merge (--match-column, --when-matched/--when-not-matched), update (--predicate + --updates-json), delete-rows (--predicate) - [CLI Guide — dodil data table (maintenance)](https://docs.dodil.io/k3/engines/sql/cli-guide/maintenance): optimize (--target-file-size-mb, --z-order-column), vacuum (--retention-hours, --dry-run, --disable-retention-check), compact (--batch-size), canonical post-batch sequence - [CLI Guide — dodil data engine](https://docs.dodil.io/k3/engines/sql/cli-guide/engine): enable / get / disable — auto-enabled per bucket; this is the "you rarely touch it" group - [Recipes — Overview](https://docs.dodil.io/k3/engines/sql/recipes): four end-to-end Tables scenarios — manual + pipeline-bound + time-travel + CTAS/Materialize - [Recipes — Manual Table](https://docs.dodil.io/k3/engines/sql/recipes/manual-table): full SQL-first lifecycle — CreateTable (composite PK + partition + JSON column), insert/merge/update/delete, eventual+strong query, compact+optimize, describe drain stats. The canonical "I have structured data" recipe. - [Recipes — Pipeline-bound Table](https://docs.dodil.io/k3/engines/sql/recipes/pipeline-table): CreateTablePipeline with entity_pii_extraction — auto-extract entities from documents, lazy-materialized schema, query the auto-generated rows. Bridges Pipelines → Tables. - [Recipes — Time Travel & Restore](https://docs.dodil.io/k3/engines/sql/recipes/time-travel): History pagination, Restore by version/timestamp, Vacuum retention semantics, the vacuum-restore trap and safe patterns - [Recipes — CTAS & Materialize](https://docs.dodil.io/k3/engines/sql/recipes/ctas-materialize): CREATE TABLE AS SELECT + Materialize RPC — analytical ETL within K3; create/replace/append modes, partitioning, broadcast JOINs via lookup_tables, sessionization with window functions ## Vector engine - [Vector](https://docs.dodil.io/k3/engines/vector): bucket-scoped vector collections — template-owned hybrid search (dense + BM25 RRF k=60), multi-collection, multimodal; collections provision on demand (no engine setup); Qdrant/Pinecone wire adapters for KNN + writes; the meaning plane - [Quickstart](https://docs.dodil.io/k3/engines/vector/quickstart): create pipeline-mode collection → upload PDF → search, end-to-end in 5 min - [Core Concepts](https://docs.dodil.io/k3/engines/vector/concepts): proto-grounded types — Collection (both creation modes), FilterGroup, Template, plus the SparseMode / EmbeddingType / DistanceMetric / FilterOp / LogicalOp enums; search + vector writes live on the data plane - [API Reference — Overview](https://docs.dodil.io/k3/engines/vector/api-reference): control-plane RPCs (Collections · Templates) + the HTTP-only search route; retired Engine/Search/Vectors RPCs noted - [API Reference — Collections](https://docs.dodil.io/k3/engines/vector/api-reference/collections): AddVectorPipeline (template-driven, schema lazy) + AddVectorCollection (manual) + ListCollections, GetCollection, DeleteCollection - [API Reference — Search](https://docs.dodil.io/k3/engines/vector/api-reference/search): POST /:bucket/search/vector — text (JSON) and file (multipart) queries; template-owned hybrid + RRF merge; KNN by pre-embedded vector goes over the Qdrant/Pinecone adapters - [API Reference — Templates](https://docs.dodil.io/k3/engines/vector/api-reference/templates): vector-pillar catalog — 5 `*_embedding_index` templates (text / code / visual / face / object) with index+search pairing - [CLI Guide — Overview](https://docs.dodil.io/k3/engines/vector/cli-guide): vector collection / templates command groups + top-level `dodil data vsearch` (KNN over the Qdrant wire) - [CLI Guide — dodil data vector collection](https://docs.dodil.io/k3/engines/vector/cli-guide/collection): add (pipeline-mode, --template required), add-manual, get, list, delete - [CLI Guide — dodil data vsearch](https://docs.dodil.io/k3/engines/vector/cli-guide/search): `-b -c --vector "" --top-k N` — embed first via `dodil ignite models embed`; output is the stock Qdrant result[] (id/score) - [CLI Guide — dodil data vector templates](https://docs.dodil.io/k3/engines/vector/cli-guide/templates): with --search / --label server-side filters; org-scoped (no -b needed); category=embedding server-pinned - [Recipes — Overview](https://docs.dodil.io/k3/engines/vector/recipes): five runnable scenarios - [Recipes — Pipeline Collection](https://docs.dodil.io/k3/engines/vector/recipes/pipeline-collection): canonical RAG ingest with text_embedding_index — drop PDFs → auto chunk + embed + index → search - [Recipes — External Collection](https://docs.dodil.io/k3/engines/vector/recipes/external-collection): BYO embeddings via AddVectorCollection + Qdrant/Pinecone wire writes; query-side embedding for text vs pre-embedded KNN path - [Recipes — Multi-collection Search](https://docs.dodil.io/k3/engines/vector/recipes/multi-collection-search): empty collection list fan-out, compatibility group key (dimensions + embedding_type + embed_model), per-collection_statuses observability, metadata narrowing patterns - [Recipes — Hybrid Search](https://docs.dodil.io/k3/engines/vector/recipes/hybrid-rerank): template-owned hybrid (dense + BM25 RRF k=60) end-to-end; legacy searchMode/rerank fields are parsed but inert; client-side rerank pattern if you need cross-encoder precision - [Recipes — Multimodal Search](https://docs.dodil.io/k3/engines/vector/recipes/multimodal-search): file/s3_key query shape for image / audio / video / face / open-vocab object detection; content_type hint; combined file + text queries ## Graph engine - [Graph](https://docs.dodil.io/k3/engines/graph): overview — graph as a live view over tables, the two-plane model (table truth + pinned CSR artifact), three doors (SQL, Bolt, GraphQL) - [Graph DDL](https://docs.dodil.io/k3/engines/graph/graph-ddl): CREATE GRAPH [IF NOT EXISTS] name NODES (table [KEY col]) EDGES (table SRC col DST col), DROP GRAPH, SHOW GRAPHS columns; build lifecycle building→ready|failed; how table edits reflect (eventual vs 'strong' reads, auto-rebuild on drain); LOAD/RELEASE GRAPH residency; ceilings (2^32 nodes/edges, integer keys only) - [Cypher & Traversals](https://docs.dodil.io/k3/engines/graph/cypher): graph_khop/graph_neighbors/graph_shortest_path signatures + output shapes; the cypher() AGE-compatible subset — three MATCH shapes (var-length expand, single hop, shortestPath), id() anchoring rules, *k means up-to-k, direction from arrows, labels are no-ops; the honest unsupported list (no write Cypher, WITH/UNWIND/CALL, property filters, ORDER/LIMIT, multi-hop patterns); 'strong' freshness = read-your-writes; Bolt wire specifics (autocommit only, database = graph name) - [Graph Analytics](https://docs.dodil.io/k3/engines/graph/analytics): graph_pagerank('g'[,damping[,max_iters]]) defaults 0.85/100 → (node, rank double, Σ≈1); graph_components('g') weak components, deterministic ids by smallest key; graph_bfs('g', start[,dir]) → (node, level), unreachable absent; all eventual-only; degree not SQL-exposed ## Cross-primitive Recipes - [Recipes — Overview](https://docs.dodil.io/k3/recipes): query-the-engines recipes first (converging engines), then pipeline/auto-indexing scenarios; positions per-primitive recipes vs the platform story - [Recipes — Converging Engines](https://docs.dodil.io/k3/recipes/converging-engines): the flagship — one table as SQL + vector + graph node set; pgvector KNN operators (<-> <#> <=>) with predicates in one statement; KNN-then-graph-walk and graph-filtered-KNN pipelines; one GraphQL query composing relational + _score + nested graph traversal; honest note that graph_* calls can't JOIN in a single SQL statement yet - [Recipes — RAG Knowledge Base](https://docs.dodil.io/k3/recipes/rag-knowledge-base): full-stack "Hello, K3" — Storage (S3 upload) → Pipelines (auto-rule from text_embedding_index) → Vector (template-owned hybrid search); Python LLM-loop example; backfill via `trigger-discovery --full-sync` - [Recipes — Mixed-Media Library](https://docs.dodil.io/k3/recipes/mixed-media-library): Storage upload of image/video/audio/PDF → Pipelines (visual_embedding_index) → Vector multimodal search via s3_key; per-modality `chunksCreated` shape; combined file + text queries for "look like X AND match description Y"; presigned-URL pattern for UIs - [Recipes — Reviews Dashboard](https://docs.dodil.io/k3/recipes/reviews-dashboard): TWO-pipeline fan-out — Storage upload kicks both review_analysis (→ Tables) and text_embedding_index (→ Vector) on the same source; SQL dashboards + semantic-similar-review search; cross-pillar JOIN-like patterns; replay one pipeline without affecting the other - [Recipes — Document Intake](https://docs.dodil.io/k3/recipes/document-intake): same fan-out shape — document_triage (→ Tables for routing) + text_embedding_index (→ Vector for retrieval); routing-decision + similar-case agent workflow in Python; pre-filter vector search by team queue ## Operations - [Auth and Access](https://docs.dodil.io/k3/auth-and-access): Keycloak JWT, SigV4, credential modes - [Operations](https://docs.dodil.io/k3/operations): day-2 ops checklist — health probes, baseline checks, pipelines/tables maintenance, common failure patterns - [Feature Status](https://docs.dodil.io/k3/feature-status): live vs roadmap ## Raw markdown Every page is fetchable as raw markdown for LLM/agent consumption — append `.md` to the path. Example: - https://docs.dodil.io/k3/engines/objects/api-reference.md ## Source - dodil-k3 repository: https://github.com/dodilio/dodil-k3