DODIL BLOG
DocsLog inSign up
DODIL Blog

Notes from the AI cloud

Engineering deep-dives, product stories, and field notes from the team building DODIL — DataK3, Ignite, Models, and Scriptum.


Latest

Getting Started · Software & Dev Tools
A sales system in a day: what our own method produced, including the parts that went wrong

We wrote down how business software should be built on DODIL, then handed the method to agents that had never seen it and played the customer ourselves. One day: a signed-off design with 26 decisions, an app with 36 tests named after the requirements, ten screens, three change requests with impact statements, and three platform faults found by the tests. Here is the transcript-level account, including the two places the method itself failed and what we changed.

Read →
Getting Started · Software & Dev Tools
How business software gets built on DODIL: understand first, then generate

A customer says 'we need an app'. What follows decides whether they get their business or ours: the roles, the stories with their acceptance criteria, the records and who owns them, written down and signed off before any code — then generated, tested per story, and changed later without fear. This is the lifecycle an agent follows, why each phase exists, and what it produced when we ran it end to end with a customer who had never had a system.

Read →
CRM · Software & Dev Tools
Inside the reference CRM: what the package contains, and which parts you are meant to change

The build phase, once the design is signed off: what ships in the CRM package, which file answers which user story, the five rules that decide whether a customer can live with the result, and the parts that are configuration rather than code — stages, discount thresholds, quote validity, loss reasons. Read the module first; read this when you are ready to generate someone's system.

Read →
Deploy
Ship a DODIL app the supported way: git push → CI → registry → CD → a gated URL

Every DODIL tutorial builds an engine and stops at shown-as-code. This is the supported last mile, and it is git-driven: push to a DODIL repo, the forge runs your .github/workflows/ci.yml with the registry credentials already injected, the image lands in registry.dodil.io, and an in-repo .dodil/deploy.yaml applies it to an Ignite app — runtime credentials resolved from the repo's secret store at deploy time, end-user login done by the gateway, neither one written by you. One org, one bill, one auth context, no GitHub, no Docker Hub, no external CI.

Read the build →
App Auth
Auth Is Config, Not Code: End-User and Platform Sign-In for DODIL Apps

Every app you build on DODIL serves two kinds of caller: business users who log in (sales reps, customers, guests) and platform principals (service accounts, CI, other services) that call it machine-to-machine. On DODIL that is a config decision, not an auth library. Attach a dodil-appid pool to an Ignite app and the per-cluster gateway runs the whole browser login — PKCE S256, an AEAD-sealed host-only session cookie, single-flight refresh — then injects X-Dodil-User, X-Dodil-User-Jwt and X-Dodil-Auth-Source into your request. The app ships no auth code. Platform callers keep working alongside, because the model is additive. And when you are NOT behind that gateway, you verify the pool's EdDSA JWT yourself against its JWKS with iss AND aud mandatory.

Read the build →
App Auth
Who-Can-Do-What Without a Policy Server: App Authorization on DODIL with dodil-appid

Your app on DODIL knows who the user is — now it needs to know what they can do. A rep sees only their deals; an approver can approve invoices. The usual answers are a policy server (OPA, a permissions microservice) you call on every request, or authz logic smeared through the app. dodil-appid does RBAC in the token: a per-pool role catalog maps roles to resource:action permissions, a user's roles expand into a permissions claim on their JWT, and the app checks permissions locally with zero round-trips. Behind the Ignite gateway that token arrives already verified in X-Dodil-User-Jwt, so the app reads permissions off an injected header and verifies nothing. Tenants add per-subsidiary roles and tenant-pinned tokens — the ERP layer. And the two-plane rule holds: appid says who and what-role; the app filters rows by sub via its own service account, because bucket RBAC can't do per-row authz.

Read the build →

Tutorials

View all →
Deploy
Ship a DODIL app the supported way: git push → CI → registry → CD → a gated URL

Every DODIL tutorial builds an engine and stops at shown-as-code. This is the supported last mile, and it is git-driven: push to a DODIL repo, the forge runs your .github/workflows/ci.yml with the registry credentials already injected, the image lands in registry.dodil.io, and an in-repo .dodil/deploy.yaml applies it to an Ignite app — runtime credentials resolved from the repo's secret store at deploy time, end-user login done by the gateway, neither one written by you. One org, one bill, one auth context, no GitHub, no Docker Hub, no external CI.

Read the build →
App Auth
Auth Is Config, Not Code: End-User and Platform Sign-In for DODIL Apps

Every app you build on DODIL serves two kinds of caller: business users who log in (sales reps, customers, guests) and platform principals (service accounts, CI, other services) that call it machine-to-machine. On DODIL that is a config decision, not an auth library. Attach a dodil-appid pool to an Ignite app and the per-cluster gateway runs the whole browser login — PKCE S256, an AEAD-sealed host-only session cookie, single-flight refresh — then injects X-Dodil-User, X-Dodil-User-Jwt and X-Dodil-Auth-Source into your request. The app ships no auth code. Platform callers keep working alongside, because the model is additive. And when you are NOT behind that gateway, you verify the pool's EdDSA JWT yourself against its JWKS with iss AND aud mandatory.

Read the build →
App Auth
Who-Can-Do-What Without a Policy Server: App Authorization on DODIL with dodil-appid

Your app on DODIL knows who the user is — now it needs to know what they can do. A rep sees only their deals; an approver can approve invoices. The usual answers are a policy server (OPA, a permissions microservice) you call on every request, or authz logic smeared through the app. dodil-appid does RBAC in the token: a per-pool role catalog maps roles to resource:action permissions, a user's roles expand into a permissions claim on their JWT, and the app checks permissions locally with zero round-trips. Behind the Ignite gateway that token arrives already verified in X-Dodil-User-Jwt, so the app reads permissions off an injected header and verifies nothing. Tenants add per-subsidiary roles and tenant-pinned tokens — the ERP layer. And the two-plane rule holds: appid says who and what-role; the app filters rows by sub via its own service account, because bucket RBAC can't do per-row authz.

Read the build →

Engineering

View all →
Getting Started · Software & Dev Tools
A sales system in a day: what our own method produced, including the parts that went wrong

We wrote down how business software should be built on DODIL, then handed the method to agents that had never seen it and played the customer ourselves. One day: a signed-off design with 26 decisions, an app with 36 tests named after the requirements, ten screens, three change requests with impact statements, and three platform faults found by the tests. Here is the transcript-level account, including the two places the method itself failed and what we changed.

Read →
Getting Started · Software & Dev Tools
How business software gets built on DODIL: understand first, then generate

A customer says 'we need an app'. What follows decides whether they get their business or ours: the roles, the stories with their acceptance criteria, the records and who owns them, written down and signed off before any code — then generated, tested per story, and changed later without fear. This is the lifecycle an agent follows, why each phase exists, and what it produced when we ran it end to end with a customer who had never had a system.

Read →
CRM · Software & Dev Tools
Inside the reference CRM: what the package contains, and which parts you are meant to change

The build phase, once the design is signed off: what ships in the CRM package, which file answers which user story, the five rules that decide whether a customer can live with the result, and the parts that are configuration rather than code — stages, discount thresholds, quote validity, loss reasons. Read the module first; read this when you are ready to generate someone's system.

Read →

Product updates

View all →
© 2026 DODILHomeDocsConsole