Wire-compatible with S3 — swap the endpoint, keep your SDK. Attach ingest rules and every upload runs your code: embeddings, tables, graphs, all written automatically as the bytes land.
Every K3 Objects bucket speaks S3 wire protocol. Point boto3, aws-cli, terraform, rclone — anything — at s3.api.dodil.io and it works unchanged.
No queues to wire, no worker pods to manage. Just rules attached to a bucket, and Scriptum pipelines that fan out from there.
Model weights, RAG corpora, append-only event archives, pinned datasets — one bucket type, four shapes. Versioned, indexed, sovereign.
rag/index fired · 184 chunks · vectors written to contracts-idxHand a single object out to a browser, a teammate, or a webhook caller without provisioning IAM. URLs expire on a timer you set and carry scope (GET or PUT) baked in.
# issue a 5-minute GET URL$ dodil objects sign \my-bucket/reports/q2-2026.pdf \--method=GET --expires=5m# or PUT for direct browser upload$ dodil objects sign \my-bucket/uploads/$(uuidgen) \--method=PUT --expires=15m --max-size=25MB
# anyone with the URL can fetch — no creds$ curl -L "$URL" > q2-2026.pdf# or upload from the browserawait fetch(url, { method: "PUT", body: file });