Reference

Configuration

Every option in oke.config.ts — drivers per environment, images, i18n, tenancy, privacy, db sync, topology, ports, and console.

Complete reference for oke.config.ts. Every option below is verified against defineConfig; the four environment keys everywhere are local · docker · test · prod.

oke.config.ts
import { defineConfig } from "okengine/config";

export default defineConfig({
  // options below
});

drivers

Which backend each element talks to, per environment. A value is either a driver id string or a rich object:

drivers: {
  store: {
    sql: { local: "sqlite", docker: "postgres", test: "memory", prod: "postgres" },
    kv: { local: "memory", docker: "redis", test: "memory", prod: "redis" },
    files: { local: "fs", docker: "s3", test: "memory", prod: "s3" },
  },
  signal: { local: "memory", docker: "postgres", test: "memory", prod: "postgres" },
  clock: { local: "memory", docker: "postgres", test: "frozen", prod: "postgres" },
  vault: { local: "dotenv", docker: "openbao", test: "memory", prod: "openbao" },
  channel: {
    email: { local: "console", docker: "smtp", test: "console", prod: "smtp" },
  },
},
KeyShapeDriver ids (verified)
store.sqlenv driver mapsqlite · postgres · memory
store.kvenv driver mapmemory · redis
store.filesenv driver mapmemory · fs · s3
store.indexenv driver mapmemory · pgvector
signalenv driver mapmemory · postgres · redis · nats
clockenv driver mapmemory · postgres · frozen
vaultenv driver mapdotenv · openbao · memory
channel.emailenv driver mapconsole · smtp · resend
channel.smsenv driver mapconsole · unifonic
channel.whatsappenv driver mapmedium declared; drivers added per provider
channel.pushenv driver mapmedium declared; drivers added per provider
aienv driver mapmock · anthropic · openai-compatible · bedrock · vertex · ollama
runsenv driver mapruns-store driver (distinct from top-level runs)
prodstring[]flat protocol list for the Manifest — nested maps are preferred

When docker is omitted it inherits the prod driver. The rich object form adds connection detail:

sql: {
  prod: { driver: "postgres", pool: { max: 20 }, replicas: ["postgres://ro-1/db"] },
},
FieldTypeMeaning
urlconnection stringOverrides the env-var resolution
pool{ max?, min? }SQL pool sizing
replicasstring[]Read-only routing targets (read flows only)

images

Container image pins keyed by element role — vendor choice lives here, never in driver ids:

images: {
  "store.sql": "postgres:18",
  "store.kv": "redis:8",
  "store.files": "rustfs/rustfs:1.0.0-beta.11",
  "channel.email": "axllent/mailpit:v1.22.3",
  vault: "openbao/openbao:2.6.1",
},

i18n

OptionTypeDefaultMeaning
localesstring[]Supported locales
defaultstringFallback locale (channel templates, fx.t)
dirrecordPer-locale direction: "ltr" | "rtl"
i18n: { locales: ["en", "ar"], default: "en", dir: { ar: "rtl" } },

tenancy

Multi-tenant isolation policy.

OptionTypeMeaning
isolation"row" | "schema" | "database"How tenants are separated in the store
resolvestring | functionTenant resolver — reads ctx.auth.orgId

privacy

Presence of this block turns the CORE privacy tooling on in the Console — masking, classification surfaces. It is not a .plug() call.

privacy: {},

runs

Runs retention and redaction at the config surface — not the same key as drivers.runs.

OptionTypeMeaning
redactRecord<string, string>Field → retention duration; presence turns privacy on

db

Domain schema sync for oke db push | generate | migrate (Drizzle). Unrelated to oke schema generate.

OptionDefaultMeaning
autoPushtrue (local only)Auto-run db push on schema change in oke dev; forced off in docker/prod
config"drizzle.config.ts"Path to the drizzle-kit config
declare"src/schema.decl.ts"Abstract schema module (store.schema.table exports)
generated"src/schema.generated.ts"Where oke db emits dialect Drizzle
entrysrc/app.tsApp entry for collecting plugin table contributions

topology

ValueMeaning
"monolith"One process serves everything (default posture)
"services"Split deployment units derived from the Manifest

ports

OptionDefaultSurface
app6530App
console6533Console
mcp6535MCP

console

Production Console exposure.

OptionTypeDefaultMeaning
prod.enabledbooleanServe the Console in prod
prod.auth"required" | "optional" | "none"Access requirement

Learn more

On this page