okengine 0.10.2 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +76 -10
- package/site/content/docs/ai/mcp.mdx +0 -1
- package/site/content/docs/deployment/docker-swarm.mdx +48 -111
- package/site/content/docs/deployment/docker.mdx +43 -36
- package/site/content/docs/deployment/index.mdx +9 -9
- package/site/content/docs/deployment/kubernetes.mdx +4 -4
- package/site/content/docs/elements/ai.mdx +7 -13
- package/site/content/docs/elements/channel.mdx +9 -13
- package/site/content/docs/elements/clock.mdx +8 -14
- package/site/content/docs/elements/flow.mdx +46 -54
- package/site/content/docs/elements/gate.mdx +6 -11
- package/site/content/docs/elements/signal.mdx +2 -8
- package/site/content/docs/elements/store.mdx +79 -93
- package/site/content/docs/elements/vault.mdx +89 -76
- package/site/content/docs/get-started/basic-usage.mdx +8 -14
- package/site/content/docs/get-started/installation.mdx +36 -36
- package/site/content/docs/get-started/introduction.mdx +11 -0
- package/site/content/docs/get-started/why.mdx +3 -4
- package/site/content/docs/index.mdx +0 -1
- package/site/content/docs/meta.json +0 -1
- package/site/content/docs/plugins/anonymous.mdx +1 -1
- package/site/content/docs/plugins/magic-link.mdx +11 -11
- package/site/content/docs/plugins/otp.mdx +2 -2
- package/site/content/docs/plugins/passkey.mdx +1 -1
- package/site/content/docs/plugins/two-factor.mdx +1 -1
- package/site/content/docs/plugins/username.mdx +1 -1
- package/site/content/docs/recipes/caddy.mdx +1 -1
- package/site/content/docs/recipes/cockroachdb.mdx +2 -2
- package/site/content/docs/recipes/dragonfly.mdx +1 -1
- package/site/content/docs/recipes/index.mdx +1 -2
- package/site/content/docs/recipes/llama-cpp.mdx +21 -23
- package/site/content/docs/recipes/mailpit.mdx +11 -11
- package/site/content/docs/recipes/meilisearch.mdx +10 -10
- package/site/content/docs/recipes/meta.json +0 -1
- package/site/content/docs/recipes/ollama.mdx +1 -1
- package/site/content/docs/recipes/pgdog.mdx +12 -9
- package/site/content/docs/recipes/postgres.mdx +3 -3
- package/site/content/docs/recipes/redis.mdx +2 -2
- package/site/content/docs/recipes/rustfs.mdx +10 -7
- package/site/content/docs/recipes/sglang.mdx +1 -1
- package/site/content/docs/recipes/supabase-docker.mdx +1 -1
- package/site/content/docs/recipes/timescale.mdx +2 -2
- package/site/content/docs/recipes/valkey.mdx +1 -1
- package/site/content/docs/recipes/vllm.mdx +1 -1
- package/site/content/docs/recipes/yugabytedb.mdx +2 -2
- package/site/content/docs/reference/cli.md +61 -38
- package/site/content/docs/reference/configuration.mdx +145 -70
- package/site/content/docs/reference/environment-variables.mdx +36 -28
- package/site/content/docs/reference/errors.mdx +28 -29
- package/site/content/docs/reference/fx.mdx +14 -7
- package/site/content/docs/reference/i18n.mdx +17 -6
- package/site/content/docs/reference/index.mdx +5 -0
- package/site/content/docs/reference/meta.json +1 -0
- package/site/content/docs/reference/migrating-environments.mdx +158 -0
- package/site/content/docs/reference/plugins.mdx +2 -2
- package/src/auth/gate-auth.test.ts +12 -10
- package/src/cli/ai-setup/ai-setup.test.ts +30 -16
- package/src/cli/ai-setup/apply.ts +111 -15
- package/src/cli/ai-setup/catalog.ts +3 -3
- package/src/cli/ai-setup/index.ts +1 -1
- package/src/cli/ai-setup/prompts.ts +1 -1
- package/src/cli/ai-setup/recommend.test.ts +1 -1
- package/src/cli/ask-seed.test.ts +3 -3
- package/src/cli/build.ts +8 -9
- package/src/cli/db-auto-push.test.ts +6 -3
- package/src/cli/db-auto-push.ts +7 -5
- package/src/cli/db-seed.ts +7 -8
- package/src/cli/db.test.ts +70 -71
- package/src/cli/db.ts +86 -12
- package/src/cli/dev-controller.test.ts +35 -0
- package/src/cli/dev-controller.ts +298 -0
- package/src/cli/dev-controls.ts +11 -65
- package/src/cli/dev-db-push.test.ts +47 -15
- package/src/cli/dev-schema-sync.test.ts +11 -11
- package/src/cli/dev-schema-sync.ts +10 -10
- package/src/cli/dev-session-lock.test.ts +106 -0
- package/src/cli/dev-session-lock.ts +209 -0
- package/src/cli/dev.test.ts +246 -114
- package/src/cli/dev.ts +153 -205
- package/src/cli/doc-staleness.test.ts +3 -6
- package/src/cli/docker-clean.test.ts +33 -1
- package/src/cli/docker-clean.ts +28 -33
- package/src/cli/docker-cli.test.ts +12 -11
- package/src/cli/docker.ts +95 -20
- package/src/cli/doctor.test.ts +40 -0
- package/src/cli/doctor.ts +142 -9
- package/src/cli/drizzle-env.test.ts +11 -13
- package/src/cli/drizzle-env.ts +18 -11
- package/src/cli/ensure-drizzle-config.ts +11 -14
- package/src/cli/hero-meta.test.ts +15 -15
- package/src/cli/hero-meta.ts +10 -9
- package/src/cli/index.ts +36 -6
- package/src/cli/load-config.images.test.ts +44 -10
- package/src/cli/load-config.source.test.ts +50 -0
- package/src/cli/load-config.ts +35 -29
- package/src/cli/meilisearch-local.ts +1 -2
- package/src/cli/mode.ts +7 -58
- package/src/cli/registry.ts +175 -19
- package/src/cli/resolve-dev-sql-env.test.ts +8 -16
- package/src/cli/resolve-dev-sql-env.ts +13 -15
- package/src/cli/safe-defaults.test.ts +29 -11
- package/src/cli/schema.ts +65 -16
- package/src/cli/test.ts +58 -0
- package/src/cli/tui/App.tsx +252 -0
- package/src/cli/tui/DevLive.tsx +116 -0
- package/src/cli/tui/components/ConfirmDialog.tsx +48 -0
- package/src/cli/tui/components/HeaderBar.tsx +67 -0
- package/src/cli/tui/components/LogStream.tsx +47 -0
- package/src/cli/tui/components/PanelCard.tsx +39 -0
- package/src/cli/tui/components/SelectRow.tsx +37 -0
- package/src/cli/tui/components/SlashPalette.tsx +172 -0
- package/src/cli/tui/components/Spinner.tsx +32 -0
- package/src/cli/tui/components/StatusBar.tsx +51 -0
- package/src/cli/tui/components/StatusDot.tsx +37 -0
- package/src/cli/tui/components/TabBar.tsx +49 -0
- package/src/cli/tui/components/Wordmark.tsx +43 -0
- package/src/cli/tui/format.ts +38 -0
- package/src/cli/tui/keys.test.ts +18 -0
- package/src/cli/tui/keys.ts +26 -0
- package/src/cli/tui/launch.test.ts +18 -0
- package/src/cli/tui/launch.ts +57 -0
- package/src/cli/tui/panels/Dashboard.tsx +201 -0
- package/src/cli/tui/panels/Database.tsx +198 -0
- package/src/cli/tui/panels/Dev.tsx +257 -0
- package/src/cli/tui/panels/Docker.tsx +357 -0
- package/src/cli/tui/panels/Navigator.test.ts +22 -0
- package/src/cli/tui/panels/Navigator.tsx +213 -0
- package/src/cli/tui/slash-catalog.test.ts +31 -0
- package/src/cli/tui/slash-catalog.ts +184 -0
- package/src/cli/tui/slash-run.ts +54 -0
- package/src/cli/tui/state/ports.ts +95 -0
- package/src/cli/tui/theme.ts +24 -0
- package/src/cli/vault-cmd.test.ts +402 -0
- package/src/cli/vault-cmd.ts +727 -69
- package/src/cli/vault-secure-input.test.ts +56 -0
- package/src/cli/vault-secure-input.ts +124 -0
- package/src/compiler/effects-infer.ts +7 -0
- package/src/compiler/extract.ts +12 -0
- package/src/compiler/fixtures/skyport/oke.config.ts +7 -5
- package/src/compiler/fixtures/skyport/src/flows/payments/index.ts +1 -1
- package/src/compiler/fixtures/skyport.expected.json +1 -1
- package/src/compiler/generate-adopt.ts +27 -1
- package/src/compiler-entry.ts +7 -0
- package/src/config/define-config.test.ts +111 -47
- package/src/config/driver-defaults.test.ts +115 -0
- package/src/config/driver-defaults.ts +156 -0
- package/src/config/index.ts +246 -131
- package/src/config/resolve-driver.test.ts +14 -19
- package/src/console/server/app.ts +4 -2
- package/src/console/server/console.test.ts +58 -1
- package/src/console/server/flows.ts +22 -2
- package/src/console/server/index.ts +3 -0
- package/src/console/server/operator-db.test.ts +55 -13
- package/src/console/server/operator-db.ts +305 -263
- package/src/console/server/serve.ts +16 -7
- package/src/console/server/state.ts +31 -9
- package/src/console/server/vault.test.ts +120 -5
- package/src/console/server/vault.ts +208 -12
- package/src/console/ui/dist/assets/{index-D-9KFce5.js → index--Y0Uaz-m.js} +2 -2
- package/src/console/ui/dist/assets/panel-vault-BkZdJPX8.js +1 -0
- package/src/console/ui/dist/assets/style-C3L349iZ.css +3 -0
- package/src/console/ui/dist/index.html +2 -2
- package/src/console/ui/shell/client.ts +16 -0
- package/src/console/ui/shell/panels/vault/VaultPanel.tsx +54 -1
- package/src/console/ui/vault/VaultA11yView.tsx +33 -1
- package/src/console/ui/vault/backend.test.ts +75 -0
- package/src/console/ui/vault/backend.ts +117 -0
- package/src/console/ui/vault/fixture.ts +21 -2
- package/src/console/ui/vault/index.ts +11 -1
- package/src/console/ui/vault/types.ts +26 -0
- package/src/docker/compose.ts +164 -61
- package/src/docker/derive.ts +106 -12
- package/src/docker/docker.test.ts +156 -110
- package/src/docker/helpers.ts +98 -0
- package/src/docker/images-config.test.ts +163 -0
- package/src/docker/index.ts +30 -5
- package/src/docker/recipes/index.ts +0 -3
- package/src/docker/recipes/llama-cpp.ts +4 -4
- package/src/docker/recipes/pgdog.ts +9 -2
- package/src/docker/resources.test.ts +71 -0
- package/src/docker/resources.ts +176 -0
- package/src/docker/stack-id.test.ts +11 -4
- package/src/docker/stack-id.ts +42 -32
- package/src/docker/stack.integration.test.ts +4 -15
- package/src/docker/types.ts +35 -3
- package/src/drivers/ai-ollama.integration.test.ts +2 -2
- package/src/drivers/conformance.test.ts +11 -12
- package/src/drivers/drizzle-dialect.test.ts +0 -4
- package/src/drivers/drizzle-dialect.ts +7 -13
- package/src/drivers/index.ts +24 -7
- package/src/drivers/journal-postgres.test.ts +3 -1
- package/src/drivers/journal-postgres.ts +4 -2
- package/src/drivers/meilisearch.ts +1 -1
- package/src/drivers/pglite.ts +28 -5
- package/src/drivers/types.ts +9 -11
- package/src/drivers/vault-aws-secrets-manager.test.ts +159 -0
- package/src/drivers/vault-aws-secrets-manager.ts +333 -0
- package/src/drivers/vault-builtin.test.ts +110 -0
- package/src/drivers/vault-builtin.ts +184 -0
- package/src/drivers/vault-driver-removal.test.ts +13 -0
- package/src/drivers/vault-managed.test.ts +95 -0
- package/src/drivers/vault-managed.ts +101 -25
- package/src/drivers/vault-types.ts +25 -5
- package/src/elements/ai/runtime.ts +1 -1
- package/src/elements/clock/chaos.test.ts +4 -1
- package/src/elements/clock/durable.ts +57 -4
- package/src/elements/clock.test.ts +13 -14
- package/src/elements/gate/constants.ts +18 -0
- package/src/elements/gate.test.ts +1 -1
- package/src/elements/gate.ts +2 -2
- package/src/elements/store/domain-ddl.test.ts +5 -12
- package/src/elements/store/emit-drizzle.ts +44 -19
- package/src/elements/store/index-boot.test.ts +15 -116
- package/src/elements/store/load-plugin-tables.ts +1 -1
- package/src/elements/store/resource-list-docs.fixture.ts +12 -6
- package/src/elements/store/resource-list-docs.test.ts +64 -44
- package/src/elements/store/resource.test.ts +17 -10
- package/src/elements/store/runtime.ts +9 -12
- package/src/elements/store/schema-decl.test.ts +16 -32
- package/src/elements/store/seed.test.ts +1 -2
- package/src/elements/store/seed.ts +7 -8
- package/src/elements/store/sql-condition.test.ts +2 -2
- package/src/elements/store/sql-session.test.ts +8 -10
- package/src/elements/store/sql-session.ts +10 -2
- package/src/elements/store.test.ts +13 -13
- package/src/elements/vault/audit.ts +233 -0
- package/src/elements/vault/boot-chain.test.ts +78 -0
- package/src/elements/vault/boot-chain.ts +43 -39
- package/src/elements/vault/builtin-adapter.test.ts +479 -0
- package/src/elements/vault/builtin-adapter.ts +1184 -0
- package/src/elements/vault/crypto.test.ts +237 -0
- package/src/elements/vault/crypto.ts +431 -0
- package/src/elements/vault/declare.ts +164 -3
- package/src/elements/vault/errors.ts +56 -0
- package/src/elements/vault/kms-unseal.test.ts +76 -0
- package/src/elements/vault/kms-unseal.ts +181 -0
- package/src/elements/vault/path.ts +90 -0
- package/src/elements/vault/resilience.test.ts +102 -0
- package/src/elements/vault/resilience.ts +107 -0
- package/src/elements/vault/runtime.ts +36 -4
- package/src/elements/vault/security-checklist.test.ts +130 -0
- package/src/elements/vault/storage.ts +448 -0
- package/src/elements/vault/types.ts +288 -0
- package/src/elements/vault/unseal.ts +150 -0
- package/src/elements/vault.test.ts +72 -4
- package/src/elements/vault.ts +91 -2
- package/src/full.ts +248 -0
- package/src/http.ts +41 -0
- package/src/i18n/interpolate-simple.ts +37 -0
- package/src/i18n/messages.ts +51 -4
- package/src/i18n-entry.ts +7 -0
- package/src/index.ts +35 -145
- package/src/journal-entry.ts +20 -0
- package/src/kernel/adopt-barrel-fresh.test.ts +25 -10
- package/src/kernel/app.ts +40 -42
- package/src/kernel/auto-registry.test.ts +2 -2
- package/src/kernel/boot-bind/ai.test.ts +5 -5
- package/src/kernel/boot-bind/ai.ts +2 -1
- package/src/kernel/boot-bind/channel.test.ts +6 -6
- package/src/kernel/boot-bind/channel.ts +5 -4
- package/src/kernel/boot-bind/clock.ts +5 -5
- package/src/kernel/boot-bind/gate.ts +6 -7
- package/src/kernel/boot-bind/honor-config.test.ts +42 -42
- package/src/kernel/boot-bind/journal.ts +5 -5
- package/src/kernel/boot-bind/signal.ts +3 -1
- package/src/kernel/boot-bind/store.test.ts +55 -37
- package/src/kernel/boot-bind/store.ts +24 -34
- package/src/kernel/boot-bind/vault.ts +19 -4
- package/src/kernel/boot.test.ts +12 -4
- package/src/kernel/boot.ts +31 -19
- package/src/kernel/budget-entry.ts +1 -1
- package/src/kernel/compensate.test.ts +288 -1
- package/src/kernel/compensate.ts +126 -0
- package/src/kernel/concurrency.test.ts +10 -9
- package/src/kernel/effects-stamping.test.ts +27 -2
- package/src/kernel/element-registries.ts +5 -3
- package/src/kernel/flow.ts +4 -2
- package/src/kernel/fx.test.ts +119 -3
- package/src/kernel/fx.ts +215 -40
- package/src/kernel/index.ts +14 -0
- package/src/kernel/journal.ts +130 -7
- package/src/kernel/pipeline.test.ts +20 -6
- package/src/kernel/redacted.test.ts +35 -0
- package/src/kernel/redacted.ts +24 -2
- package/src/kernel/router/create-default.ts +16 -0
- package/src/kernel/router/create-edge.ts +18 -0
- package/src/kernel/router/create.ts +23 -0
- package/src/kernel/router/index.ts +23 -0
- package/src/kernel/router/linear.ts +88 -0
- package/src/kernel/router/regexp.ts +188 -0
- package/src/kernel/router/smart.ts +120 -0
- package/src/kernel/router/trie.ts +108 -0
- package/src/kernel/router/types.ts +56 -0
- package/src/kernel/router.ts +18 -532
- package/src/kernel-entry.ts +43 -0
- package/src/manifest/fixtures/skyport.excerpt.json +1 -1
- package/src/manifest/fixtures/skyport.manifest.json +1 -1
- package/src/plugins/config-source.test.ts +7 -7
- package/src/release/build-lib.ts +58 -0
- package/src/release/exports.test.ts +4 -2
- package/src/release/exports.ts +30 -4
- package/src/release/measure.ts +101 -22
- package/src/runs/duckdb.ts +7 -2
- package/src/shared/optional-peer.ts +41 -0
- package/src/term.test.ts +3 -44
- package/src/test/create-test-app.ts +12 -0
- package/src/test/provisions.integration.test.ts +1 -1
- package/src/test/reset-element-registries.ts +2 -0
- package/src/upgrade/codemods.test.ts +7 -20
- package/src/upgrade/codemods.ts +93 -60
- package/site/content/docs/console/access.mdx +0 -29
- package/site/content/docs/console/ai.mdx +0 -35
- package/site/content/docs/console/architecture.mdx +0 -35
- package/site/content/docs/console/channels.mdx +0 -37
- package/site/content/docs/console/clock.mdx +0 -51
- package/site/content/docs/console/flows.mdx +0 -31
- package/site/content/docs/console/gates.mdx +0 -73
- package/site/content/docs/console/index.mdx +0 -54
- package/site/content/docs/console/manifest-diff.mdx +0 -34
- package/site/content/docs/console/meta.json +0 -24
- package/site/content/docs/console/overview.mdx +0 -40
- package/site/content/docs/console/plugins.mdx +0 -41
- package/site/content/docs/console/privacy.mdx +0 -32
- package/site/content/docs/console/runs.mdx +0 -50
- package/site/content/docs/console/signals.mdx +0 -40
- package/site/content/docs/console/store.mdx +0 -32
- package/site/content/docs/console/tenancy.mdx +0 -32
- package/site/content/docs/console/traces.mdx +0 -38
- package/site/content/docs/console/vault.mdx +0 -41
- package/site/content/docs/recipes/openbao.mdx +0 -141
- package/src/cli/ask-dev-mode.ts +0 -40
- package/src/cli/dev-mode.test.ts +0 -45
- package/src/cli/dev-mode.ts +0 -78
- package/src/cli/openbao-bootstrap.test.ts +0 -150
- package/src/cli/openbao-bootstrap.ts +0 -321
- package/src/cli/openbao-restart.integration.test.ts +0 -145
- package/src/console/ui/dist/assets/panel-vault-Za1GyJfM.js +0 -1
- package/src/console/ui/dist/assets/style-C8MxEWPd.css +0 -3
- package/src/docker/recipes/openbao.ts +0 -47
- package/src/drivers/libsql.ts +0 -179
- package/src/drivers/sqlite.ts +0 -44
- package/src/drivers/vault-openbao.test.ts +0 -97
- package/src/drivers/vault-openbao.ts +0 -143
|
@@ -11,34 +11,41 @@ source: "docs/cli.md"
|
|
|
11
11
|
bun add okengine # ONE package (project)
|
|
12
12
|
bun install -g okengine # global `oke` on PATH
|
|
13
13
|
|
|
14
|
+
oke # interactive TUI (TTY) — Dashboard · Dev · Database · Docker · Navigator
|
|
15
|
+
oke --tui # force TUI even when other args were passed
|
|
16
|
+
oke --help # command list (also what bare `oke` prints when non-TTY / CI)
|
|
17
|
+
|
|
14
18
|
oke dev # watch · hot reload · Console :6533 · app :6530 · MCP :6535 · docs MCP :6536
|
|
15
|
-
# →
|
|
16
|
-
|
|
19
|
+
# → always Docker Compose under docker/ + host Bun
|
|
20
|
+
# → client types + domain schema push on save
|
|
17
21
|
oke dev --no-db-push # opt out of auto oke db push on schema input save
|
|
18
|
-
oke dev
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
oke mode
|
|
22
|
+
oke dev -d store.sql,signal # optional role filter (still Compose; requires Docker)
|
|
23
|
+
oke test # bun test with PGLite posture (NODE_ENV=test, OKE_PGLITE_URL=memory://)
|
|
24
|
+
# → does not start Docker Compose
|
|
25
|
+
oke mode # removed — prints error; use oke dev (Compose) / oke test (PGLite)
|
|
22
26
|
|
|
23
27
|
oke start # runs exactly what production runs (this is the Docker CMD)
|
|
24
28
|
oke doctor # verify secrets, ports, drivers, tenancy, schema drift
|
|
25
29
|
oke stack # preview resolved images/tags/ports — writes nothing
|
|
26
30
|
|
|
27
|
-
oke schema generate # core + plugin stubs → schema/oke.ts
|
|
28
|
-
oke db push # domain schema.ts → live
|
|
31
|
+
oke schema generate # core + plugin stubs → .oke/schema/oke.ts (--check in CI)
|
|
32
|
+
oke db push # domain schema.ts → live DB (dev; drizzle-kit)
|
|
29
33
|
oke db generate # versioned SQL under drizzle/ (review)
|
|
30
34
|
oke db migrate # apply migrations (explicit; never auto in prod)
|
|
31
35
|
oke db seed # defineSeed (essential + env category); never at boot
|
|
32
|
-
oke db seed --env prod --force # CI: skip
|
|
36
|
+
oke db seed --env prod --force # CI: skip prod confirmation prompt
|
|
37
|
+
oke db studio # drizzle-kit Studio (long-running)
|
|
33
38
|
oke vault set STRIPE_KEY # also: list · import .env · key rotate
|
|
34
39
|
oke client add <url> # types for a separate frontend repo
|
|
35
40
|
|
|
36
|
-
oke docker # docker/Dockerfile + compose.yml
|
|
37
|
-
|
|
38
|
-
oke docker --
|
|
39
|
-
oke docker
|
|
40
|
-
oke docker
|
|
41
|
-
oke docker clean
|
|
41
|
+
oke docker # docker/Dockerfile + docker-compose.yml (prod-grade; 4 CPU / 8 GiB budget)
|
|
42
|
+
oke docker --split # layered compose.yml + compose.<role>.yml + compose.prod.yml
|
|
43
|
+
oke docker --stack # docker-stack.yml for docker stack deploy
|
|
44
|
+
oke docker --cpus 8 --memory 16 # override host budget used for deploy.resources
|
|
45
|
+
oke docker --no-prod # skip readiness / deploy / resource budget
|
|
46
|
+
oke docker clean # TTY: pick oke-dev-* projects → down -v (containers, networks, volumes)
|
|
47
|
+
oke docker clean --yes # non-TTY: current project only
|
|
48
|
+
oke docker clean --all --yes # non-TTY: every oke-dev-* project on this machine
|
|
42
49
|
oke images pin # tags → digests in oke.images.lock
|
|
43
50
|
|
|
44
51
|
oke build --target edge # < 15 kB kernel profile
|
|
@@ -58,20 +65,31 @@ In development, app, Console, MCP, and docs MCP prefer the canonical ports and m
|
|
|
58
65
|
when occupied. Docker infrastructure uses stable per-project offsets in disjoint ranges for
|
|
59
66
|
each built-in service, preventing one service's offset port from overlapping another's.
|
|
60
67
|
|
|
61
|
-
`oke
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
68
|
+
Bare `oke` on a TTY opens an Ink interactive shell (optional deps `ink` +
|
|
69
|
+
`react`). The viewport is cleared before render so boot logs never sit above the
|
|
70
|
+
frame. Chrome matches `oke dev`: green OKE wordmark on Dashboard, green active
|
|
71
|
+
tabs, cyan focus rows. Panels cover live ports (App / Console / MCP / Docs MCP),
|
|
72
|
+
Dev start/stop/attach with live logs, Database action cards (including Studio),
|
|
73
|
+
Docker compose status, and a Manifest navigator. **Tab** / **←→** (on the tab
|
|
74
|
+
strip) switch panels; **↑↓** navigate inside a panel; **Esc** returns to the tab
|
|
75
|
+
strip, then confirms quit when a managed `oke dev` is running; **1–5** jump
|
|
76
|
+
panels from any focus. Press `/` for the **command palette** (Tab autofill,
|
|
77
|
+
Enter runs `oke …`; status shows in the global footer). If `oke dev` is already
|
|
78
|
+
running, the TUI shows **Connected** via `.oke/dev.json` + port probes and will
|
|
79
|
+
not spawn a second stack. Non-TTY / CI keeps the classic help listing
|
|
80
|
+
(`EXIT_USAGE`).
|
|
81
|
+
|
|
82
|
+
`oke dev` always starts Compose (requires a running Docker daemon). Boot chrome
|
|
83
|
+
prints immediately (wordmark + Starting + profile), then streams background work
|
|
84
|
+
(compose up, vault, per-service health, AI probe). Status ● is green ready ·
|
|
85
|
+
yellow pending/loading · red error · dim idle. Compose health keeps polling
|
|
86
|
+
(`docker compose ps -a`); AI ● tracks model phase while the AI container is up.
|
|
87
|
+
Boot does not wait for the model to become ready. A successful session writes
|
|
88
|
+
`.oke/dev.json` (pid · ports · startedAt) and clears it on stop.
|
|
89
|
+
|
|
90
|
+
On a TTY, Ink keyboard controls stay active after boot (`useInput` — same
|
|
91
|
+
shortcuts as before). Press `r` to clear the log pane and reprint the latest
|
|
92
|
+
board.
|
|
75
93
|
|
|
76
94
|
| Key | Action |
|
|
77
95
|
| --------- | ----------------------------------- |
|
|
@@ -83,6 +101,12 @@ request logs.
|
|
|
83
101
|
Compose stays quiet unless it fails. Process-local boot notices print once under
|
|
84
102
|
the hero (not once per process).
|
|
85
103
|
|
|
104
|
+
`oke test` sets `NODE_ENV=test` and `OKE_PGLITE_URL=memory://` when unset, checks
|
|
105
|
+
that `@electric-sql/pglite` resolves, then forwards argv to `bun test`.
|
|
106
|
+
|
|
107
|
+
`oke mode` and `oke dev --local` / `-l` are removed — they exit with an error.
|
|
108
|
+
See [Migrating environments](/docs/reference/migrating-environments).
|
|
109
|
+
|
|
86
110
|
### create-oke
|
|
87
111
|
|
|
88
112
|
```bash
|
|
@@ -95,13 +119,10 @@ bunx create-oke@latest my-app --no-ai
|
|
|
95
119
|
```
|
|
96
120
|
|
|
97
121
|
On a TTY: pick **standard** or **advanced**, then recommended defaults or
|
|
98
|
-
customize. Customize
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
`~/.oke/create-defaults.json` (reuse only when `template` matches). Scaffold
|
|
103
|
-
writes `.oke/mode` from the primary side. Non-TTY / `--yes` / explicit
|
|
104
|
-
`--template` never prompt.
|
|
122
|
+
customize. Customize walks **Docker-first** facets once (including `store.index`
|
|
123
|
+
with a `none` opt-out), then **AI setup**: Recommended (llama.cpp) · Customize ·
|
|
124
|
+
Off. Writes user-global `~/.oke/create-defaults.json` (reuse only when `template`
|
|
125
|
+
matches). Non-TTY / `--yes` / explicit `--template` never prompt.
|
|
105
126
|
|
|
106
127
|
### Additional commands
|
|
107
128
|
|
|
@@ -132,8 +153,7 @@ Long form is canonical in docs; short form is convenience only. Shared letters f
|
|
|
132
153
|
|
|
133
154
|
| Long | Short | Where |
|
|
134
155
|
| -------------------- | ----- | ---------------------------------------------- |
|
|
135
|
-
| `--
|
|
136
|
-
| `--docker` | `-d` | `dev` |
|
|
156
|
+
| `--docker` | `-d` | `dev` (optional Compose **role filter**) |
|
|
137
157
|
| `--no-db-push` | | `dev` |
|
|
138
158
|
| `--prod` | `-p` | `docker` |
|
|
139
159
|
| `--yes` | `-y` | `docker clean` |
|
|
@@ -156,6 +176,9 @@ Long form is canonical in docs; short form is convenience only. Shared letters f
|
|
|
156
176
|
| `--subject` | `-s` | `privacy erase` |
|
|
157
177
|
| `--before` | `-b` | `doctor --diff` |
|
|
158
178
|
| `--base` | `-B` | `doctor --diff` |
|
|
179
|
+
| `--env` | | `db *` (`dev` \| `test` \| `prod`) |
|
|
180
|
+
| `--force` | | `db seed` |
|
|
181
|
+
| `--local` / `-l` | | **removed** on `dev` (use `oke test`) |
|
|
159
182
|
|
|
160
183
|
### Exit codes
|
|
161
184
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Configuration"
|
|
3
|
-
description: "Every option in oke.config.ts —
|
|
3
|
+
description: "Every option in oke.config.ts — three environments (dev · test · prod), drivers, images, i18n, tenancy, privacy, db sync, topology, ports, and console."
|
|
4
4
|
icon: "Settings2"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Complete reference for `oke.config.ts`.
|
|
7
|
+
Complete reference for `oke.config.ts`. Options below match `defineConfig`. Driver maps use three keys: **dev** · **test** · **prod**.
|
|
8
8
|
|
|
9
9
|
```typescript title="oke.config.ts"
|
|
10
10
|
import { defineConfig } from "okengine/config";
|
|
@@ -14,38 +14,104 @@ export default defineConfig({
|
|
|
14
14
|
});
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
<Callout title="Philosophy">
|
|
18
|
+
We test on what we deploy. Local development runs the same stack as production via Docker. Tests
|
|
19
|
+
use PGLite for speed without sacrificing Postgres correctness.
|
|
20
|
+
</Callout>
|
|
18
21
|
|
|
19
|
-
|
|
22
|
+
## Environments
|
|
23
|
+
|
|
24
|
+
| Key | When | Typical backends |
|
|
25
|
+
| ------ | -------------------------- | ----------------------------------------------------- |
|
|
26
|
+
| `dev` | `oke dev` (Docker Compose) | Same protocols as prod (Postgres, Redis, S3, SMTP, …) |
|
|
27
|
+
| `test` | `oke test` / `bun test` | PGLite for SQL; memory / frozen / console elsewhere |
|
|
28
|
+
| `prod` | Production deploy | Shared durable backends |
|
|
29
|
+
|
|
30
|
+
Missing `dev` pins fill from `prod` (`fillDevFromProd`). Only `dev` / `test` / `prod` keys are
|
|
31
|
+
valid — see [Migrating environments](/docs/reference/migrating-environments) if you still have
|
|
32
|
+
`local` / `docker` maps.
|
|
33
|
+
|
|
34
|
+
## Quick start
|
|
35
|
+
|
|
36
|
+
<Steps>
|
|
37
|
+
|
|
38
|
+
<Step>
|
|
39
|
+
### Pin drivers for three envs
|
|
40
|
+
|
|
41
|
+
Pin **only the env keys that differ** from the built-in defaults — omitted keys
|
|
42
|
+
keep `DRIVER_DEFAULTS`. create-oke templates ship that sparse shape:
|
|
43
|
+
|
|
44
|
+
```typescript title="oke.config.ts"
|
|
45
|
+
import { defineConfig } from "okengine/config";
|
|
46
|
+
|
|
47
|
+
export default defineConfig({
|
|
48
|
+
drivers: {
|
|
49
|
+
// Default vault.dev is "env"; pin the built-in store for Docker-first apps.
|
|
50
|
+
vault: { dev: "vault" },
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
</Step>
|
|
56
|
+
|
|
57
|
+
<Step>
|
|
58
|
+
### Or use a string shorthand
|
|
59
|
+
|
|
60
|
+
A bare string (or `{ driver, … }` object) expands to all three envs:
|
|
20
61
|
|
|
21
62
|
```typescript
|
|
22
63
|
drivers: {
|
|
23
|
-
|
|
24
|
-
sql: { local: "sqlite", docker: "postgres", test: "memory", prod: "postgres" },
|
|
25
|
-
kv: { local: "memory", docker: "redis", test: "memory", prod: "redis" },
|
|
26
|
-
files: { local: "fs", docker: "s3", test: "memory", prod: "s3" },
|
|
27
|
-
},
|
|
28
|
-
signal: { local: "memory", docker: "redis", test: "memory", prod: "redis" },
|
|
29
|
-
clock: { local: "memory", docker: "postgres", test: "frozen", prod: "postgres" },
|
|
30
|
-
journal: { local: "memory", docker: "postgres", test: "memory", prod: "postgres" },
|
|
31
|
-
vault: { local: "env", docker: "openbao", test: "memory", prod: "openbao" },
|
|
32
|
-
channel: {
|
|
33
|
-
email: { local: "console", docker: "smtp", test: "console", prod: "smtp" },
|
|
34
|
-
sms: { local: "console", docker: "taqnyat", test: "console", prod: "taqnyat" },
|
|
35
|
-
},
|
|
64
|
+
signal: "redis", // → { dev: "redis", test: "redis", prod: "redis" }
|
|
36
65
|
},
|
|
37
66
|
```
|
|
38
67
|
|
|
39
|
-
|
|
68
|
+
Prefer an explicit `{ dev, test, prod }` map (or a partial override) when test
|
|
69
|
+
should differ from the default for that driver.
|
|
70
|
+
|
|
71
|
+
</Step>
|
|
72
|
+
|
|
73
|
+
<Step>
|
|
74
|
+
### Run and test
|
|
75
|
+
|
|
76
|
+
```bash title="Terminal"
|
|
77
|
+
oke dev # Docker Compose + host Bun · drivers.dev
|
|
78
|
+
oke test # bun test · NODE_ENV=test · OKE_PGLITE_URL=memory://
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
</Step>
|
|
82
|
+
|
|
83
|
+
</Steps>
|
|
84
|
+
|
|
85
|
+
## Default driver maps
|
|
86
|
+
|
|
87
|
+
Built-in defaults (`DRIVER_DEFAULTS`) when a key is omitted:
|
|
88
|
+
|
|
89
|
+
| Map | `dev` | `test` | `prod` |
|
|
90
|
+
| --------------- | ---------- | --------- | ---------- |
|
|
91
|
+
| `store.sql` | `postgres` | `pglite` | `postgres` |
|
|
92
|
+
| `store.kv` | `redis` | `memory` | `redis` |
|
|
93
|
+
| `store.files` | `s3` | `memory` | `s3` |
|
|
94
|
+
| `signal` | `redis` | `memory` | `redis` |
|
|
95
|
+
| `clock` | `postgres` | `frozen` | `postgres` |
|
|
96
|
+
| `journal` | `postgres` | `memory` | `postgres` |
|
|
97
|
+
| `vault` | `env` | `memory` | `vault` |
|
|
98
|
+
| `channel.email` | `smtp` | `console` | `smtp` |
|
|
99
|
+
| `channel.sms` | — (opt-in) | — | — |
|
|
100
|
+
|
|
101
|
+
`store.index`, `channel.whatsapp` / `push`, and `ai` have no single three-env default table — set them explicitly when you need them. create-oke templates pin `vault.dev: "vault"` (built-in) because the default `dev` driver is `env`.
|
|
102
|
+
|
|
103
|
+
## Driver keys and ids
|
|
104
|
+
|
|
105
|
+
| Key | Shape | Driver ids |
|
|
40
106
|
| ------------------ | -------------- | ---------------------------------------------------------------------------- |
|
|
41
|
-
| `store.sql` | env driver map | `
|
|
107
|
+
| `store.sql` | env driver map | `postgres` · `pglite` · `memory` |
|
|
42
108
|
| `store.kv` | env driver map | `memory` · `redis` |
|
|
43
109
|
| `store.files` | env driver map | `memory` · `fs` · `s3` |
|
|
44
|
-
| `store.index` | env driver map | `memory` · `pgvector` · `
|
|
110
|
+
| `store.index` | env driver map | `memory` · `pgvector` · `meilisearch` |
|
|
45
111
|
| `signal` | env driver map | `memory` · `redis` (boot); `postgres` · `nats` fail loud until clients bind |
|
|
46
112
|
| `clock` | env driver map | `memory` · `postgres` · `file` · `frozen` |
|
|
47
113
|
| `journal` | env driver map | `memory` · `file` · `postgres` |
|
|
48
|
-
| `vault` | env driver map | `env` · `
|
|
114
|
+
| `vault` | env driver map | `env` · `vault` · `memory` · `managed` |
|
|
49
115
|
| `channel.email` | env driver map | `console` · `smtp` · `resend` · `sndr` · `taqnyat-mail` |
|
|
50
116
|
| `channel.sms` | env driver map | `console` · `taqnyat` · `msegat` · `unifonic` |
|
|
51
117
|
| `channel.whatsapp` | env driver map | `console` · `wa-cloud` |
|
|
@@ -54,7 +120,14 @@ drivers: {
|
|
|
54
120
|
| `runs` | env driver map | runs-store driver (distinct from top-level `runs`) |
|
|
55
121
|
| `prod` | `string[]` | flat protocol list for the Manifest — nested maps are preferred |
|
|
56
122
|
|
|
57
|
-
|
|
123
|
+
### Safety rules
|
|
124
|
+
|
|
125
|
+
`defineConfig` rejects unsafe pins:
|
|
126
|
+
|
|
127
|
+
- **`sqlite` is removed** — use `postgres` (dev/prod) or `pglite` (test).
|
|
128
|
+
- **`drivers.store.sql.test` must be `pglite`** when set — real Postgres semantics in tests.
|
|
129
|
+
|
|
130
|
+
### Rich driver objects
|
|
58
131
|
|
|
59
132
|
```typescript
|
|
60
133
|
sql: {
|
|
@@ -70,59 +143,41 @@ sql: {
|
|
|
70
143
|
|
|
71
144
|
## images
|
|
72
145
|
|
|
73
|
-
|
|
146
|
+
Nested pins by element role — vendor choice lives here, never in driver ids:
|
|
74
147
|
|
|
75
148
|
```typescript
|
|
76
149
|
images: {
|
|
77
|
-
|
|
150
|
+
store: {
|
|
151
|
+
sql: "postgres:18-alpine",
|
|
152
|
+
kv: "redis:8-alpine",
|
|
153
|
+
files: "rustfs/rustfs:1.0.0-beta.11",
|
|
154
|
+
},
|
|
155
|
+
channel: { email: "axllent/mailpit:v1.22.3" },
|
|
78
156
|
pgdog: "ghcr.io/pgdogdev/pgdog:v0.1.51",
|
|
79
|
-
|
|
80
|
-
//
|
|
81
|
-
// or: "docker.dragonflydb.io/dragonflydb/dragonfly"
|
|
82
|
-
"store.files": "rustfs/rustfs:1.0.0-beta.11",
|
|
83
|
-
"channel.email": "axllent/mailpit:v1.22.3",
|
|
84
|
-
vault: "openbao/openbao:2.6.1",
|
|
85
|
-
ai: "ghcr.io/ggml-org/llama.cpp:server-b10290", // default; or ollama/ollama:0.32.6
|
|
86
|
-
// opt-in TLS edge — omit for the default (app publishes 6530):
|
|
87
|
-
// proxy: "caddy:2-alpine", // simplest automatic HTTPS
|
|
88
|
-
// proxy: "traefik:v3.3", // label auto-discovery for --scale app=N
|
|
157
|
+
// ai: "ghcr.io/ggml-org/llama.cpp:server-b10290",
|
|
158
|
+
// proxy: "caddy:2-alpine",
|
|
89
159
|
},
|
|
90
160
|
```
|
|
91
161
|
|
|
92
|
-
When both `store.sql` and `pgdog` are pinned, `DATABASE_URL` points at PgDog
|
|
93
|
-
(`6432`) — wire-protocol transparent to Bun.SQL / Drizzle. See
|
|
94
|
-
[Store · Multiple environments](/docs/elements/store#multiple-environments).
|
|
95
|
-
|
|
96
|
-
For `store.kv`, pin Redis (default), Valkey, or Dragonfly — driver id stays
|
|
97
|
-
`redis`, same `REDIS_URL`. Image table + licenses: [Store · KV](/docs/elements/store#kv).
|
|
98
|
-
|
|
99
|
-
For `ai`, default is [llama.cpp](/docs/recipes/llama-cpp) (`OKE_AI_URL` →
|
|
100
|
-
`/v1`, curated Docker Hub `ai/` model). Ollama / vLLM / SGLang are explicit
|
|
101
|
-
alternatives — see [Recipes · AI](/docs/recipes#ai-local--self-hosted).
|
|
162
|
+
Omitted image keys mean no container for that role. When both `store.sql` and `pgdog` are pinned, `DATABASE_URL` points at PgDog — see [Store](/docs/elements/store#multiple-environments).
|
|
102
163
|
|
|
103
|
-
For `
|
|
104
|
-
[Reverse proxy](/docs/deployment/reverse-proxy).
|
|
164
|
+
For `store.kv`, pin Redis (default), Valkey, or Dragonfly — driver id stays `redis`. For `ai`, see [Recipes · AI](/docs/recipes#ai-local--self-hosted). For `proxy`, see [Reverse proxy](/docs/deployment/reverse-proxy).
|
|
105
165
|
|
|
106
166
|
## i18n
|
|
107
167
|
|
|
108
|
-
| Option | Type | Default
|
|
109
|
-
| --------- | ---------- |
|
|
110
|
-
| `locales` | `string[]` |
|
|
111
|
-
| `default` | string |
|
|
112
|
-
| `dir` | record | —
|
|
168
|
+
| Option | Type | Default | Meaning |
|
|
169
|
+
| --------- | ---------- | --------------------- | ------------------------------------------- |
|
|
170
|
+
| `locales` | `string[]` | `["en"]` when omitted | Supported locales |
|
|
171
|
+
| `default` | string | `"en"` when omitted | Fallback locale (channel templates, `fx.t`) |
|
|
172
|
+
| `dir` | record | — | Per-locale direction: `"ltr"` \| `"rtl"` |
|
|
113
173
|
|
|
114
174
|
```typescript
|
|
115
|
-
i18n: { locales: ["en"
|
|
175
|
+
i18n: { locales: ["en"], default: "en" },
|
|
176
|
+
// or with Arabic: { locales: ["en", "ar"], default: "en", dir: { ar: "rtl" } }
|
|
116
177
|
```
|
|
117
178
|
|
|
118
|
-
`fx.t` catalogs are ICU strings from `defineLocale` / `defineMessages` — see
|
|
119
|
-
[i18n](/docs/reference/i18n). Built-ins also cover failure `error.message` and
|
|
120
|
-
OKE cause/fix; Channel templates keep separate `locales` + `{{field}}` bodies.
|
|
121
|
-
|
|
122
179
|
## tenancy
|
|
123
180
|
|
|
124
|
-
Multi-tenant isolation policy.
|
|
125
|
-
|
|
126
181
|
| Option | Type | Meaning |
|
|
127
182
|
| ----------- | --------------------------------- | ---------------------------------------- |
|
|
128
183
|
| `isolation` | `"row" \| "schema" \| "database"` | How tenants are separated in the store |
|
|
@@ -130,7 +185,7 @@ Multi-tenant isolation policy.
|
|
|
130
185
|
|
|
131
186
|
## privacy
|
|
132
187
|
|
|
133
|
-
Presence of this block turns
|
|
188
|
+
Presence of this block turns CORE privacy tooling on in the Console — not a `.plug()` call.
|
|
134
189
|
|
|
135
190
|
```typescript
|
|
136
191
|
privacy: {},
|
|
@@ -138,7 +193,7 @@ privacy: {},
|
|
|
138
193
|
|
|
139
194
|
## runs
|
|
140
195
|
|
|
141
|
-
Runs retention and redaction
|
|
196
|
+
Runs retention and redaction — **not** the same key as `drivers.runs`.
|
|
142
197
|
|
|
143
198
|
| Option | Type | Meaning |
|
|
144
199
|
| -------- | ------------------------ | ----------------------------------------------------- |
|
|
@@ -148,13 +203,13 @@ Runs retention and redaction at the config surface — **not** the same key as `
|
|
|
148
203
|
|
|
149
204
|
Domain schema sync for `oke db push | generate | migrate` (Drizzle). Unrelated to `oke schema generate`.
|
|
150
205
|
|
|
151
|
-
| Option | Default
|
|
152
|
-
| ----------- |
|
|
153
|
-
| `autoPush` | `true`
|
|
154
|
-
| `config` | `"drizzle.config.ts"`
|
|
155
|
-
| `declare` | `"src/schema.decl.ts"`
|
|
156
|
-
| `generated` | `"src/schema.
|
|
157
|
-
| `entry` | `src/app.ts`
|
|
206
|
+
| Option | Default | Meaning |
|
|
207
|
+
| ----------- | ---------------------------- | ------------------------------------------------------------------------- |
|
|
208
|
+
| `autoPush` | `true` | Auto-run `db push` on schema change under `oke dev`; forced off in `prod` |
|
|
209
|
+
| `config` | `"drizzle.config.ts"` | Path to the drizzle-kit config |
|
|
210
|
+
| `declare` | `"src/db/schema.decl.ts"` | Abstract schema module (`store.schema.table` exports) |
|
|
211
|
+
| `generated` | `"src/db/schema.drizzle.ts"` | Where `oke db` emits dialect Drizzle |
|
|
212
|
+
| `entry` | `src/app.ts` | App entry for collecting plugin table contributions |
|
|
158
213
|
|
|
159
214
|
## topology
|
|
160
215
|
|
|
@@ -173,15 +228,35 @@ Domain schema sync for `oke db push | generate | migrate` (Drizzle). Unrelated t
|
|
|
173
228
|
|
|
174
229
|
## console
|
|
175
230
|
|
|
176
|
-
Production Console exposure.
|
|
177
|
-
|
|
178
231
|
| Option | Type | Default | Meaning |
|
|
179
232
|
| -------------- | ------------------------------------ | ------- | ------------------------- |
|
|
180
233
|
| `prod.enabled` | boolean | — | Serve the Console in prod |
|
|
181
234
|
| `prod.auth` | `"required" \| "optional" \| "none"` | — | Access requirement |
|
|
182
235
|
|
|
236
|
+
## Troubleshooting
|
|
237
|
+
|
|
238
|
+
<Accordions>
|
|
239
|
+
|
|
240
|
+
<Accordion title='oke.config: … uses removed driver "sqlite"'>
|
|
241
|
+
The `sqlite` driver is gone. Pin `postgres` for `dev`/`prod` and `pglite` for `test`. Edit the
|
|
242
|
+
file by hand — see [Migrating environments](/docs/reference/migrating-environments).
|
|
243
|
+
</Accordion>
|
|
244
|
+
|
|
245
|
+
<Accordion title='drivers.store.sql.test must be "pglite"'>
|
|
246
|
+
Tests use PGLite so SQL semantics match Postgres. Set `test: "pglite"` (or omit the key and keep
|
|
247
|
+
the default). Do not use `memory` or `postgres` for `store.sql.test`.
|
|
248
|
+
</Accordion>
|
|
249
|
+
|
|
250
|
+
<Accordion title='CLI error: "local" / "sqlite" is no longer valid'>
|
|
251
|
+
There is no soft-compat. Rename env keys to `dev` / `test` / `prod` and replace `sqlite` with
|
|
252
|
+
`postgres` / `pglite`. `oke mode` was removed — `oke dev` always starts Docker Compose.
|
|
253
|
+
</Accordion>
|
|
254
|
+
|
|
255
|
+
</Accordions>
|
|
256
|
+
|
|
183
257
|
## Learn more
|
|
184
258
|
|
|
185
|
-
- [
|
|
259
|
+
- [Migrating environments](/docs/reference/migrating-environments) — four-key maps → `dev`/`test`/`prod`
|
|
260
|
+
- [CLI Reference](/docs/reference/cli) — `oke dev` · `oke test` · `oke db`
|
|
186
261
|
- [Environment Variables](/docs/reference/environment-variables) — URL and secret resolution
|
|
187
262
|
- [Store](/docs/elements/store) — what the store drivers back
|
|
@@ -4,7 +4,7 @@ description: "Every environment variable OKE reads — connection URLs, driver o
|
|
|
4
4
|
icon: "Terminal"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
OKE reads environment variables at boot for connection detail and secrets — never for behavior you could declare in `oke.config.ts`.
|
|
7
|
+
OKE reads environment variables at boot for connection detail and secrets — never for behavior you could declare in `oke.config.ts`. Under `oke dev`, Compose writes these into `docker/.env.docker`; this page is the full map.
|
|
8
8
|
|
|
9
9
|
<Callout title="Precedence">
|
|
10
10
|
For anything with both an `OKE_*` variable and a conventional one (like `DATABASE_URL`), the
|
|
@@ -13,15 +13,15 @@ OKE reads environment variables at boot for connection detail and secrets — ne
|
|
|
13
13
|
|
|
14
14
|
## SQL store
|
|
15
15
|
|
|
16
|
-
| Variable | Used for
|
|
17
|
-
| ------------------- |
|
|
18
|
-
| `DATABASE_URL` | Postgres connection (`postgres` store / clock / journal
|
|
19
|
-
| `OKE_STORE_SQL_URL` | Direct SQL URL (Postgres host, even when PgDog fronts the app)
|
|
20
|
-
| `OKE_PGDOG_URL` | PgDog pooler URL (same value as `DATABASE_URL` when both are present)
|
|
21
|
-
| `
|
|
22
|
-
| `
|
|
23
|
-
|
|
24
|
-
|
|
16
|
+
| Variable | Used for | Default when unset |
|
|
17
|
+
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- |
|
|
18
|
+
| `DATABASE_URL` | Postgres connection (`postgres` store / clock / journal / Console operator plane, drizzle-kit). App tables stay in `public`; Console operators/sessions use schema `oke_console` on the same database. When PgDog is pinned, this points at the pooler (`:6432`). | `postgres://localhost:5432/oke` |
|
|
19
|
+
| `OKE_STORE_SQL_URL` | Direct SQL URL (Postgres host, even when PgDog fronts the app). Also used by Console when `DATABASE_URL` is unset. | — |
|
|
20
|
+
| `OKE_PGDOG_URL` | PgDog pooler URL (same value as `DATABASE_URL` when both are present) | — |
|
|
21
|
+
| `OKE_PGLITE_URL` | PGlite data dir or `memory://` (`pglite` driver; required for `store.sql.test`) | `memory://` in `test`; else `.oke/pgdata` |
|
|
22
|
+
| `OKE_SQL_DRIVER` | Force the sql driver id at boot | config map |
|
|
23
|
+
|
|
24
|
+
`oke test` sets `OKE_PGLITE_URL=memory://` when unset. The `sqlite` driver and `OKE_SQLITE_URL` are removed.
|
|
25
25
|
|
|
26
26
|
## Index store
|
|
27
27
|
|
|
@@ -52,15 +52,19 @@ OKE reads environment variables at boot for connection detail and secrets — ne
|
|
|
52
52
|
| `OKE_STORE_FILES_DB` | Explicit files location override | — |
|
|
53
53
|
| `OKE_FILES_DRIVER` | Force the files driver id | config map |
|
|
54
54
|
|
|
55
|
-
## Vault
|
|
55
|
+
## Vault
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
Built-in store uses `OKE_VAULT_MASTER_KEY` (or `--key` / stdin on CLI). Managed AWS Secrets Manager
|
|
58
|
+
uses the provider + region vars below.
|
|
58
59
|
|
|
59
|
-
| Variable
|
|
60
|
-
|
|
|
61
|
-
| `
|
|
62
|
-
| `
|
|
63
|
-
| `OKE_VAULT_MOUNT`
|
|
60
|
+
| Variable | Used for | Default when unset |
|
|
61
|
+
| ---------------------- | -------------------------------------------- | --------------------- |
|
|
62
|
+
| `OKE_VAULT_PROVIDER` | Managed backend (`aws-secrets-manager`) | — (platform-injected) |
|
|
63
|
+
| `OKE_VAULT_REGION` | Cloud region for AWS Secrets Manager | — |
|
|
64
|
+
| `OKE_VAULT_MOUNT` | Secret-name prefix for AWS SM (`oke/prod/`) | — |
|
|
65
|
+
| `OKE_VAULT_MASTER_KEY` | Built-in vault master key (base64) | — |
|
|
66
|
+
| `OKE_VAULT_URL` | Optional remote URL for community adapters | — |
|
|
67
|
+
| `OKE_VAULT_TOKEN` | Optional remote token for community adapters | — |
|
|
64
68
|
|
|
65
69
|
## Channel (email) — boot binder
|
|
66
70
|
|
|
@@ -115,24 +119,28 @@ provider's real credentials — credentials alone never send.
|
|
|
115
119
|
| `ANTHROPIC_MODEL` | Model override for the anthropic driver | — |
|
|
116
120
|
| `OPENAI_API_KEY` | `openai-compatible` driver credential | — |
|
|
117
121
|
| `OPENAI_BASE_URL` | `openai-compatible` base URL | OpenAI cloud |
|
|
118
|
-
| `OKE_AI_DRIVER` | Force the AI driver id (honoured
|
|
122
|
+
| `OKE_AI_DRIVER` | Force the AI driver id (honoured under Compose / `oke dev`) | config map |
|
|
119
123
|
| `OKE_AI_URL` | Local / openai-compatible base URL | `http://127.0.0.1:8080/v1` (llama.cpp) · `http://127.0.0.1:11434` (ollama) |
|
|
120
|
-
| `OKE_AI_MODEL` | Default model id — Docker Hub `ai/` for llama.cpp; Ollama library tag for ollama; HF id for vLLM/SGLang | `
|
|
124
|
+
| `OKE_AI_MODEL` | Default model id — Docker Hub `ai/` for llama.cpp; Ollama library tag for ollama; HF id for vLLM/SGLang | `granite3.3:2b` (llama.cpp) / `qwen3.5:9b` (ollama) |
|
|
121
125
|
| `OKE_AI_VISION_MODEL` | Vision model id written by `oke ai setup` (logical `ai.model("vision")`) | — |
|
|
122
126
|
| `OKE_AI_EMBED_MODEL` | Embedding model id written by `oke ai setup` | — |
|
|
123
127
|
| `OLLAMA_HOST` | Alternate Ollama host (`host:port` or URL) when `OKE_AI_URL` is unset | — |
|
|
124
128
|
|
|
125
129
|
## Framework behavior
|
|
126
130
|
|
|
127
|
-
| Variable | Used for
|
|
128
|
-
| --------------------- |
|
|
129
|
-
| `OKE_DOCKER` | `"1"` marks
|
|
130
|
-
| `OKE_DB_AUTO_PUSH` | Overrides `db.autoPush` at boot
|
|
131
|
-
| `OKE_DRIZZLE_DIALECT` | `"
|
|
132
|
-
| `OKE_DEV_REQUEST_LOG` | `"1"` logs requests during `oke dev` (set by the CLI)
|
|
133
|
-
| `OKE_CONSOLE_SECRET` | Console session secret — set explicitly in production
|
|
134
|
-
| `PORT` | App port in production containers (default `6530`)
|
|
135
|
-
| `NODE_ENV` | `"production"` switches the Console to its production posture
|
|
131
|
+
| Variable | Used for |
|
|
132
|
+
| --------------------- | ------------------------------------------------------------------------------------------ |
|
|
133
|
+
| `OKE_DOCKER` | `"1"` marks Compose / `oke dev` posture (set by the CLI) |
|
|
134
|
+
| `OKE_DB_AUTO_PUSH` | Overrides `db.autoPush` at boot |
|
|
135
|
+
| `OKE_DRIZZLE_DIALECT` | `"postgresql"` for drizzle-kit overlays (templates hardcode it) |
|
|
136
|
+
| `OKE_DEV_REQUEST_LOG` | `"1"` logs requests during `oke dev` (set by the CLI) |
|
|
137
|
+
| `OKE_CONSOLE_SECRET` | Console session signing secret — set explicitly in production (else `.oke/console.secret`) |
|
|
138
|
+
| `PORT` | App port in production containers (default `6530`) |
|
|
139
|
+
| `NODE_ENV` | `"production"` switches the Console to its production posture |
|
|
140
|
+
|
|
141
|
+
Console operator rows are **not** stored in `.oke/console.sqlite`. With `DATABASE_URL` (or
|
|
142
|
+
`OKE_STORE_SQL_URL`) they live in Postgres schema `oke_console`. Without a Postgres URL,
|
|
143
|
+
Console uses PGlite under `.oke/console-pg` for local reopen durability.
|
|
136
144
|
|
|
137
145
|
## Learn more
|
|
138
146
|
|