{"name":"okengine","description":"A new programming model for backends. One law. Eight elements. One contract. Pure TypeScript, self-hostable with zero cloud lock-in.","origin":"https://oke.omqkhafi.dev","index":"https://oke.omqkhafi.dev/llms.txt","full":"https://oke.omqkhafi.dev/llms-full.txt","agents":"https://oke.omqkhafi.dev/llms/agents","pages":[{"slug":"","title":"Documentation","description":"A new programming model for backends. One law. Eight elements. One contract.","html":"https://oke.omqkhafi.dev/docs","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/index.md"},{"slug":"ai","title":"AI Resources","description":"Machine-facing surfaces — MCP on :6535/:6536, agent skills, /llms.txt, /llms.json, and /llms/agents.","html":"https://oke.omqkhafi.dev/docs/ai","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/ai.md"},{"slug":"ai/llms-txt","title":"llms.txt","description":"Machine-readable documentation — the index, the JSON catalogue, the full dump, per-page markdown, and the agent contract this site serves.","html":"https://oke.omqkhafi.dev/docs/ai/llms-txt","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/ai/llms-txt.md"},{"slug":"ai/mcp","title":"MCP","description":"OKE serves MCP on :6535 so agents can operate a running app, and apps consume external MCP servers as allowlisted tools on the same fx.call path.","html":"https://oke.omqkhafi.dev/docs/ai/mcp","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/ai/mcp.md"},{"slug":"ai/skills","title":"Skills","description":"What OKE ships to teach AI agents the system — the repo-level AGENTS.md contract and the installable skills under .agents/skills/.","html":"https://oke.omqkhafi.dev/docs/ai/skills","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/ai/skills.md"},{"slug":"client","title":"Overview","description":"Typed caller for your Flows — createClient from okengine/client, zero codegen, errors as values.","html":"https://oke.omqkhafi.dev/docs/client","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/client.md"},{"slug":"client/auth","title":"Auth","description":"createClient({ auth }) → api.auth — cookie-first, authorize/Can UI-only, Gate remains real authz.","html":"https://oke.omqkhafi.dev/docs/client/auth","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/client/auth.md"},{"slug":"client/calling","title":"Calling","description":"createClient forms, REST vs RPC, options, result envelopes, store resources, and remote types.","html":"https://oke.omqkhafi.dev/docs/client/calling","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/client/calling.md"},{"slug":"client/live","title":"Live","description":"api.live SSE subscribe, exposure matching, resume gaps, and live resource queries.","html":"https://oke.omqkhafi.dev/docs/client/live","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/client/live.md"},{"slug":"client/react","title":"React","description":"useSession, Can, useLive, and useLiveQuery from okengine/client-react — React helpers over createClient.","html":"https://oke.omqkhafi.dev/docs/client/react","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/client/react.md"},{"slug":"elements","title":"Elements","description":"The closed set of eight semantic primitives forming the entire OKEngine backend model.","html":"https://oke.omqkhafi.dev/docs/elements","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements.md"},{"slug":"elements/ai","title":"Overview","description":"Machine intelligence — bind models, ask versioned prompts, run bounded agents, embed into store.index, and connect MCP.","html":"https://oke.omqkhafi.dev/docs/elements/ai","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/ai.md"},{"slug":"elements/ai/agents","title":"Agents","description":"Bounded agents — tools are Flows, maxSteps and budget.maxCostPerRun cap the loop, invoke with fx.run.","html":"https://oke.omqkhafi.dev/docs/elements/ai/agents","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/ai/agents.md"},{"slug":"elements/ai/mcp","title":"MCP","description":"Two directions — expose Flows as gated mcp.tool endpoints on :6535, and consume external servers with ai.mcpServer allowlists.","html":"https://oke.omqkhafi.dev/docs/elements/ai/mcp","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/ai/mcp.md"},{"slug":"elements/ai/models","title":"Models","description":"Declare ai.model bindings — known providers auto-resolve baseUrl; Anthropic and Google OpenAI-compat have documented limits.","html":"https://oke.omqkhafi.dev/docs/elements/ai/models","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/ai/models.md"},{"slug":"elements/ai/prompts","title":"Prompts","description":"Versioned prompt artifacts on ai.model — out schemas, via recovery, budgets, timeouts, and fx.ask.","html":"https://oke.omqkhafi.dev/docs/elements/ai/prompts","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/ai/prompts.md"},{"slug":"elements/channel","title":"Overview","description":"Reaching humans — declare email, SMS, WhatsApp, and push templates, send through fx.send, track receipts and consent.","html":"https://oke.omqkhafi.dev/docs/elements/channel","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/channel.md"},{"slug":"elements/channel/email","title":"Email","description":"Transactional email — channel.email templates, {{field}} catalogs, SMTP/Mailpit, Resend, SNDR, and Taqnyat Mail.","html":"https://oke.omqkhafi.dev/docs/elements/channel/email","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/channel/email.md"},{"slug":"elements/channel/push","title":"Push","description":"Mobile and web push — channel.push templates, FCM device tokens, and Web Push (VAPID) drivers bound on boot.","html":"https://oke.omqkhafi.dev/docs/elements/channel/push","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/channel/push.md"},{"slug":"elements/channel/receipts","title":"Receipts","description":"Delivery ledger, seven-state outcomes, consent opt-out, and hard-bounce suppression — process-local by default.","html":"https://oke.omqkhafi.dev/docs/elements/channel/receipts","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/channel/receipts.md"},{"slug":"elements/channel/sms","title":"SMS","description":"SMS templates via channel.sms, transactional fx.send, and provider-managed OTP with fx.sendOtp / fx.verifyOtp.","html":"https://oke.omqkhafi.dev/docs/elements/channel/sms","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/channel/sms.md"},{"slug":"elements/channel/whatsapp","title":"WhatsApp","description":"WhatsApp medium — channel.whatsapp templates, wa-cloud and taqnyat-whatsapp drivers, app-mode OTP delivery.","html":"https://oke.omqkhafi.dev/docs/elements/channel/whatsapp","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/channel/whatsapp.md"},{"slug":"elements/clock","title":"Overview","description":"Time as an explicit element — named cron schedules, recurring intervals, and durable sleep through fx.clock.","html":"https://oke.omqkhafi.dev/docs/elements/clock","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/clock.md"},{"slug":"elements/clock/schedules","title":"Schedules","description":"Cron helpers, every-intervals, app timezones, per-tenant rows, leader locks, catch-up one, and Console overrides.","html":"https://oke.omqkhafi.dev/docs/elements/clock/schedules","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/clock/schedules.md"},{"slug":"elements/clock/sleep","title":"Durable Sleep","description":"Journaled pauses that resume across restarts — fx.clock.sleep(label, duration) on durable Flows.","html":"https://oke.omqkhafi.dev/docs/elements/clock/sleep","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/clock/sleep.md"},{"slug":"elements/flow","title":"Overview","description":"One Flow species for HTTP, Signal, Clock, CDC, and call-only work — contracts, fx, and options in one place.","html":"https://oke.omqkhafi.dev/docs/elements/flow","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/flow.md"},{"slug":"elements/flow/consumers","title":"Consumers","description":"Asynchronous Flows for Signal emissions, named Clock ticks, and SQL row changes.","html":"https://oke.omqkhafi.dev/docs/elements/flow/consumers","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/flow/consumers.md"},{"slug":"elements/flow/http","title":"HTTP","description":"Synchronous REST endpoints, RFC 10008 QUERY, CRUD mounts, live SSE streams, and gate chains on Flow.","html":"https://oke.omqkhafi.dev/docs/elements/flow/http","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/flow/http.md"},{"slug":"elements/flow/routing","title":"Routing","description":"File-tree stamps for HTTP paths, Flow names, and client units from on(http.*, flow) under src/flows.","html":"https://oke.omqkhafi.dev/docs/elements/flow/routing","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/flow/routing.md"},{"slug":"elements/flow/workflows","title":"Workflows","description":"Journaled multi-step Flows — fx.step replay, LIFO undo, durable sleep, and crash resume.","html":"https://oke.omqkhafi.dev/docs/elements/flow/workflows","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/flow/workflows.md"},{"slug":"elements/gate","title":"Overview","description":"Permission to act — policy and rate gates on the trigger, left to right, first denial wins.","html":"https://oke.omqkhafi.dev/docs/elements/gate","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/gate.md"},{"slug":"elements/gate/auth","title":"Authentication","description":"Enable gate.auth so sessions and API keys fill fx.auth — then protect Flows with policy gates.","html":"https://oke.omqkhafi.dev/docs/elements/gate/auth","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/gate/auth.md"},{"slug":"elements/gate/authorization","title":"Authorization","description":"gate.policy and gate.scope — reusable permission checks composed with gate.all and attached via .gate.","html":"https://oke.omqkhafi.dev/docs/elements/gate/authorization","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/gate/authorization.md"},{"slug":"elements/gate/rate-limits","title":"Rate Limits","description":"gate.rate — KV-backed throttles with max, per, and keyBy; five strategies, sliding-window-counter by default.","html":"https://oke.omqkhafi.dev/docs/elements/gate/rate-limits","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/gate/rate-limits.md"},{"slug":"elements/gate/rls","title":"RLS","description":"Row-level security — Gate identity stamped into SQL so store.schema.policy helpers filter every fx.store query.","html":"https://oke.omqkhafi.dev/docs/elements/gate/rls","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/gate/rls.md"},{"slug":"elements/gate/tenancy","title":"Tenancy","description":"Opt into gate.auth.tenant so requests resolve fx.tenant.id from claim, header, or subdomain.","html":"https://oke.omqkhafi.dev/docs/elements/gate/tenancy","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/gate/tenancy.md"},{"slug":"elements/signal","title":"Overview","description":"Data in motion — once, broadcast, and live SSE tapes under one typed declaration with HTTP-shaped delivery helpers.","html":"https://oke.omqkhafi.dev/docs/elements/signal","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/signal.md"},{"slug":"elements/signal/broadcast","title":"Broadcast","description":"Ephemeral fan-out — every active subscriber gets a copy; offline listeners miss the event.","html":"https://oke.omqkhafi.dev/docs/elements/signal/broadcast","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/signal/broadcast.md"},{"slug":"elements/signal/live","title":"Live","description":"Retained live event tapes streamed to clients over HTTP SSE with Last-Event-ID resume.","html":"https://oke.omqkhafi.dev/docs/elements/signal/live","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/signal/live.md"},{"slug":"elements/signal/once","title":"Once","description":"Competing workers, visibility leases, retries, dead letters, and per-key ordering for signal.once.","html":"https://oke.omqkhafi.dev/docs/elements/signal/once","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/signal/once.md"},{"slug":"elements/store","title":"Overview","description":"Data at rest — SQL, KV, files, and search indexes through one typed fx.store handle.","html":"https://oke.omqkhafi.dev/docs/elements/store","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/store.md"},{"slug":"elements/store/files","title":"Files","description":"Object storage buckets — put/get, putImage variants, LQIP placeholders, and chainable Bun.Image transforms.","html":"https://oke.omqkhafi.dev/docs/elements/store/files","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/store/files.md"},{"slug":"elements/store/kv","title":"KV","description":"Namespaced key-value storage with duration TTL — sessions, caches, and short-lived locks via fx.store.","html":"https://oke.omqkhafi.dev/docs/elements/store/kv","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/store/kv.md"},{"slug":"elements/store/search","title":"Search","description":"Built-in hybrid search on SQL tables — BM25 full-text, LSH vectors, RRF fusion — plus optional external index engines.","html":"https://oke.omqkhafi.dev/docs/elements/store/search","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/store/search.md"},{"slug":"elements/store/sql","title":"SQL","description":"Relational schemas, field classification, store.resource CRUD, RLS policies, and the fx.store session handle.","html":"https://oke.omqkhafi.dev/docs/elements/store/sql","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/store/sql.md"},{"slug":"elements/vault","title":"Overview","description":"Protected knowledge — declare secret and config contracts, resolve values at boot, read Redacted credentials through fx.vault.","html":"https://oke.omqkhafi.dev/docs/elements/vault","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/vault.md"},{"slug":"elements/vault/config","title":"Config","description":"vault.config cleartext settings, Console visibility, and vault.env helpers for plain process configuration.","html":"https://oke.omqkhafi.dev/docs/elements/vault/config","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/vault/config.md"},{"slug":"elements/vault/rotation","title":"Key Rotation","description":"Rotate secret versions under a fresh data key, rewrap the master key, and seal or unseal the builtin vault.","html":"https://oke.omqkhafi.dev/docs/elements/vault/rotation","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/vault/rotation.md"},{"slug":"elements/vault/secrets","title":"Secrets","description":"Typed vault.secret contracts, boot-time resolution, Redacted reads through fx.vault.get, and per-tenant paths.","html":"https://oke.omqkhafi.dev/docs/elements/vault/secrets","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/elements/vault/secrets.md"},{"slug":"plugins","title":"Plugins","description":"Official okengine/plugins extensions — authentication, OAuth, security, operations, and performance.","html":"https://oke.omqkhafi.dev/docs/plugins","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins.md"},{"slug":"plugins/anonymous","title":"Anonymous","description":"Official plugin — issue a user-plane session with a random id and no password.","html":"https://oke.omqkhafi.dev/docs/plugins/anonymous","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/anonymous.md"},{"slug":"plugins/apple","title":"Apple","description":"Official plugin — Sign in with Apple with form_post callbacks and an ES256 client-secret JWT.","html":"https://oke.omqkhafi.dev/docs/plugins/apple","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/apple.md"},{"slug":"plugins/compression","title":"Compression","description":"Official plugin — gzip response bodies for clients that send Accept-Encoding: gzip, with a size threshold and content-type matcher. Bun.serve does not compress on its own.","html":"https://oke.omqkhafi.dev/docs/plugins/compression","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/compression.md"},{"slug":"plugins/cors","title":"CORS","description":"Official plugin — cross-origin rules at the edge: preflight OPTIONS answered even for paths bound to other methods, plus CORS headers on matched responses. Closed by default.","html":"https://oke.omqkhafi.dev/docs/plugins/cors","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/cors.md"},{"slug":"plugins/csrf","title":"CSRF","description":"Official plugin — cross-site request forgery defense using fetch metadata (Sec-Fetch-Site) with an Origin fallback. Stateless: no tokens, no cookies, no session reads.","html":"https://oke.omqkhafi.dev/docs/plugins/csrf","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/csrf.md"},{"slug":"plugins/discord","title":"Discord","description":"Official plugin — Discord sign-in where email can be real, verified, or legitimately absent.","html":"https://oke.omqkhafi.dev/docs/plugins/discord","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/discord.md"},{"slug":"plugins/facebook","title":"Facebook","description":"Official plugin — Facebook Login via Graph API with conservative email handling.","html":"https://oke.omqkhafi.dev/docs/plugins/facebook","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/facebook.md"},{"slug":"plugins/figma","title":"Figma","description":"Official plugin — Figma sign-in with HTTP Basic client auth and no email verification signal.","html":"https://oke.omqkhafi.dev/docs/plugins/figma","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/figma.md"},{"slug":"plugins/github","title":"GitHub","description":"Official plugin — GitHub sign-in with primary-email lookup from the emails API.","html":"https://oke.omqkhafi.dev/docs/plugins/github","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/github.md"},{"slug":"plugins/google","title":"Google","description":"Official plugin — Google sign-in via OIDC discovery and JWKS-verified ID tokens.","html":"https://oke.omqkhafi.dev/docs/plugins/google","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/google.md"},{"slug":"plugins/headers","title":"Headers","description":"Official plugin — the complete secure-headers set on every HTTP response, failures included. Full helmet.js parity with API-first defaults, a CSP builder with report-only mode, and live DB-driven config.","html":"https://oke.omqkhafi.dev/docs/plugins/headers","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/headers.md"},{"slug":"plugins/ip-allowlist","title":"IP Allowlist","description":"Official plugin — allow/deny rules by client IP at the edge of the pipeline, with the same typed Forbidden denial the gate element produces.","html":"https://oke.omqkhafi.dev/docs/plugins/ip-allowlist","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/ip-allowlist.md"},{"slug":"plugins/magic-link","title":"Magic link","description":"Official plugin — request and verify a one-time email link to sign in under /auth.","html":"https://oke.omqkhafi.dev/docs/plugins/magic-link","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/magic-link.md"},{"slug":"plugins/maintenance-mode","title":"Maintenance Mode","description":"Official plugin — drain HTTP traffic with one flag: every flow returns a 503 ServiceUnavailable envelope with an optional Retry-After, while allow-listed paths and an operator bypass header stay alive.","html":"https://oke.omqkhafi.dev/docs/plugins/maintenance-mode","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/maintenance-mode.md"},{"slug":"plugins/microsoft","title":"Microsoft","description":"Official plugin — Entra ID sign-in across personal, work, and school accounts with tenant-aware issuer checks.","html":"https://oke.omqkhafi.dev/docs/plugins/microsoft","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/microsoft.md"},{"slug":"plugins/oauth","title":"OAuth","description":"Official plugin — social sign-in with eight providers under /auth, Authorization Code + PKCE only.","html":"https://oke.omqkhafi.dev/docs/plugins/oauth","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/oauth.md"},{"slug":"plugins/otp","title":"OTP","description":"Official plugin — one-time codes over SMS, WhatsApp, or email under /auth, with explicit provider or app mode.","html":"https://oke.omqkhafi.dev/docs/plugins/otp","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/otp.md"},{"slug":"plugins/passkey","title":"Passkey","description":"Official plugin — WebAuthn register and authenticate under /auth with UV, signCount, and ceremony session binding.","html":"https://oke.omqkhafi.dev/docs/plugins/passkey","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/passkey.md"},{"slug":"plugins/two-factor","title":"Two-factor","description":"Official plugin — method-locked TOTP or email OTP after first-factor sign-in, with step-up enrollment and method change.","html":"https://oke.omqkhafi.dev/docs/plugins/two-factor","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/two-factor.md"},{"slug":"plugins/username","title":"Username","description":"Official plugin — username + password sign-up and sign-in under /auth, plugged onto gate.auth.","html":"https://oke.omqkhafi.dev/docs/plugins/username","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/username.md"},{"slug":"plugins/x","title":"X","description":"Official plugin — X (Twitter) sign-in as a PKCE public client with confidential-client secrets left out.","html":"https://oke.omqkhafi.dev/docs/plugins/x","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/plugins/x.md"},{"slug":"providers","title":"Providers","description":"Managed cloud SQL and Redis providers behind oke's postgres and redis drivers — dashboard click-paths, pooling, and gotchas.","html":"https://oke.omqkhafi.dev/docs/providers","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/providers.md"},{"slug":"providers/azure-redis","title":"Azure Cache for Redis","description":"Azure-managed Redis — Access keys blade, TLS port 6380 vs 6379, Basic tier no SLA.","html":"https://oke.omqkhafi.dev/docs/providers/azure-redis","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/providers/azure-redis.md"},{"slug":"providers/cockroachdb","title":"CockroachDB","description":"Distributed SQL — Cloud Connect dialog, verify-full + CA cert, CSL license, port 26257.","html":"https://oke.omqkhafi.dev/docs/providers/cockroachdb","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/providers/cockroachdb.md"},{"slug":"providers/digitalocean-caching","title":"DigitalOcean Managed Caching","description":"Valkey-backed DO Databases — Overview Connection Details, trusted sources, TLS-required high port.","html":"https://oke.omqkhafi.dev/docs/providers/digitalocean-caching","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/providers/digitalocean-caching.md"},{"slug":"providers/dragonfly-cloud","title":"Dragonfly Cloud","description":"Managed Dragonfly — data store row drawer, Redis-compatible Connection URI, TLS passkey, private network prod.","html":"https://oke.omqkhafi.dev/docs/providers/dragonfly-cloud","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/providers/dragonfly-cloud.md"},{"slug":"providers/elasticache","title":"Amazon ElastiCache","description":"AWS-managed Redis OSS or Valkey — Primary Endpoint, AUTH token, Redis OSS capped at 7.1, VPC-only.","html":"https://oke.omqkhafi.dev/docs/providers/elasticache","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/providers/elasticache.md"},{"slug":"providers/memorystore","title":"Google Cloud Memorystore","description":"GCP-managed Redis/Valkey — Instance details Primary Endpoint, AUTH string, TLS on 6378, VPC-only.","html":"https://oke.omqkhafi.dev/docs/providers/memorystore","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/providers/memorystore.md"},{"slug":"providers/neon","title":"Neon","description":"Serverless Postgres — Connect widget, pooled vs direct, scale-to-zero cold start, neon_superuser for pgvector.","html":"https://oke.omqkhafi.dev/docs/providers/neon","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/providers/neon.md"},{"slug":"providers/redis-cloud","title":"Redis Cloud","description":"Redis Ltd. managed Redis — Configuration tab endpoints, Connect wizard, rediss://, dynamic vs static endpoints.","html":"https://oke.omqkhafi.dev/docs/providers/redis-cloud","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/providers/redis-cloud.md"},{"slug":"providers/supabase","title":"Supabase","description":"Managed Postgres — Connect button modes, transaction :6543 vs direct :5432, IPv6, free-tier pause.","html":"https://oke.omqkhafi.dev/docs/providers/supabase","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/providers/supabase.md"},{"slug":"providers/upstash","title":"Upstash","description":"Serverless Redis — Details tab TCP endpoint vs REST URL/token; oke needs rediss:// only.","html":"https://oke.omqkhafi.dev/docs/providers/upstash","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/providers/upstash.md"},{"slug":"providers/yugabytedb","title":"YugabyteDB","description":"Distributed SQL (YSQL) — Connect → Application, port 5433, CA cert, YSQL vs YCQL.","html":"https://oke.omqkhafi.dev/docs/providers/yugabytedb","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/providers/yugabytedb.md"},{"slug":"recipes","title":"Recipes","description":"Docker recipes already shipped in oke docker — SQL (including Cockroach, Yugabyte, Timescale), KV, proxy, and services.","html":"https://oke.omqkhafi.dev/docs/recipes","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/recipes.md"},{"slug":"recipes/caddy","title":"Caddy","description":"Automatic-HTTPS reverse proxy — OKE_PROXY_HOST, Caddyfile, /data certificate volume, single-instance compose.","html":"https://oke.omqkhafi.dev/docs/recipes/caddy","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/recipes/caddy.md"},{"slug":"recipes/cockroachdb","title":"CockroachDB","description":"Self-hosted single-node Cockroach — COCKROACH_* env, port 26257, DB Console on :8080, driver stays postgres.","html":"https://oke.omqkhafi.dev/docs/recipes/cockroachdb","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/recipes/cockroachdb.md"},{"slug":"recipes/dragonfly","title":"Dragonfly","description":"Multi-threaded Redis-wire runtime — OKE_STORE_KV_PASSWORD, memlock ulimit, no maxmemory-policy flag.","html":"https://oke.omqkhafi.dev/docs/recipes/dragonfly","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/recipes/dragonfly.md"},{"slug":"recipes/mailpit","title":"Mailpit","description":"Local SMTP catcher for channel.email — SMTP_URL on :1025, UI on :8025, MAILPIT_UI_URL.","html":"https://oke.omqkhafi.dev/docs/recipes/mailpit","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/recipes/mailpit.md"},{"slug":"recipes/meilisearch","title":"Meilisearch","description":"Full-text store.index image — OKE_STORE_INDEX_URL, OKE_STORE_INDEX_KEY / MEILI_MASTER_KEY, /meili_data volume.","html":"https://oke.omqkhafi.dev/docs/recipes/meilisearch","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/recipes/meilisearch.md"},{"slug":"recipes/nginx","title":"nginx","description":"Static reverse proxy via a generated nginx.conf — HTTP on :80 when you bring your own TLS edge.","html":"https://oke.omqkhafi.dev/docs/recipes/nginx","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/recipes/nginx.md"},{"slug":"recipes/openrouter","title":"OpenRouter","description":"Cloud path for fx.ask — provider openrouter auto-resolves base URL; router aliases pick free, auto, coding, fusion, and latest models.","html":"https://oke.omqkhafi.dev/docs/recipes/openrouter","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/recipes/openrouter.md"},{"slug":"recipes/pgdog","title":"PgDog","description":"Postgres wire-protocol pooler — transaction mode on :6432, generated pgdog/ configs, DATABASE_URL rewrite.","html":"https://oke.omqkhafi.dev/docs/recipes/pgdog","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/recipes/pgdog.md"},{"slug":"recipes/postgres","title":"Postgres","description":"Default store.sql image — POSTGRES_* env, PGDATA path, and when DATABASE_URL points at PgDog instead.","html":"https://oke.omqkhafi.dev/docs/recipes/postgres","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/recipes/postgres.md"},{"slug":"recipes/redis","title":"Redis","description":"Default store.kv image — OKE_STORE_KV_PASSWORD, maxmemory policy, ephemeral data, REDIS_URL.","html":"https://oke.omqkhafi.dev/docs/recipes/redis","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/recipes/redis.md"},{"slug":"recipes/rustfs","title":"RustFS","description":"S3-compatible object store — S3_ACCESS_KEY_ID / S3_SECRET_ACCESS_KEY, /data volume, console on :9001.","html":"https://oke.omqkhafi.dev/docs/recipes/rustfs","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/recipes/rustfs.md"},{"slug":"recipes/supabase-docker","title":"Supabase","description":"Pin supabase/postgres as store.sql — extension bundle (pgvector, …) without Auth, Storage, Realtime, or Studio.","html":"https://oke.omqkhafi.dev/docs/recipes/supabase-docker","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/recipes/supabase-docker.md"},{"slug":"recipes/timescale","title":"Timescale","description":"Self-hosted TimescaleDB — same POSTGRES_* contract as Postgres, hypertables included, driver stays postgres.","html":"https://oke.omqkhafi.dev/docs/recipes/timescale","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/recipes/timescale.md"},{"slug":"recipes/traefik","title":"Traefik","description":"Docker-label auto-discovery proxy — OKE_PROXY_HOST, OKE_PROXY_ACME_EMAIL, socket-proxy, ACME volume.","html":"https://oke.omqkhafi.dev/docs/recipes/traefik","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/recipes/traefik.md"},{"slug":"recipes/valkey","title":"Valkey","description":"BSD-licensed Redis-wire fork — same redis driver, OKE_STORE_KV_PASSWORD, valkey-server command.","html":"https://oke.omqkhafi.dev/docs/recipes/valkey","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/recipes/valkey.md"},{"slug":"recipes/yugabytedb","title":"YugabyteDB","description":"Self-hosted single-node YSQL — YSQL_* env, port 5433, driver stays postgres.","html":"https://oke.omqkhafi.dev/docs/recipes/yugabytedb","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/recipes/yugabytedb.md"},{"slug":"reference","title":"Reference","description":"Lookup pages — CLI, config, fx, errors, security, and plugins.","html":"https://oke.omqkhafi.dev/docs/reference","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/reference.md"},{"slug":"reference/cli","title":"CLI","description":"oke and create-oke commands — scaffold, develop, ship, and operate an okengine app.","html":"https://oke.omqkhafi.dev/docs/reference/cli","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/reference/cli.md"},{"slug":"reference/configuration","title":"Configuration","description":"Every option in oke.config.ts — three environments (dev · test · prod), drivers, images, i18n, tenancy, privacy, db sync, topology, ports, and console.","html":"https://oke.omqkhafi.dev/docs/reference/configuration","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/reference/configuration.md"},{"slug":"reference/environment-variables","title":"Environment Variables","description":"Every environment variable OKE reads — connection URLs, driver overrides, secrets, and CLI flags.","html":"https://oke.omqkhafi.dev/docs/reference/environment-variables","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/reference/environment-variables.md"},{"slug":"reference/errors","title":"Errors","description":"OKE codes, gate denials, and subsystem errors — stable numeric codes with causes and fixes.","html":"https://oke.omqkhafi.dev/docs/reference/errors","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/reference/errors.md"},{"slug":"reference/fx","title":"fx","description":"The complete fx surface — every call a Flow can make, its signature, and the effect it records.","html":"https://oke.omqkhafi.dev/docs/reference/fx","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/reference/fx.md"},{"slug":"reference/i18n","title":"i18n","description":"ICU message catalogs for fx.t, typed keys, request locale, and how failures and channels pick a language.","html":"https://oke.omqkhafi.dev/docs/reference/i18n","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/reference/i18n.md"},{"slug":"reference/okid","title":"OKID","description":"OKE's native id generator — compact, URL-safe, cryptographically random ids from okengine/okid, with opt-in prefix, time-sortable, and alphabet-controlled variants.","html":"https://oke.omqkhafi.dev/docs/reference/okid","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/reference/okid.md"},{"slug":"reference/plugins","title":"Plugins","description":"The plugin API reference — what a plugin may contribute, hook stages, whole-table schema contributions, and identity rules. First-party plugins live in the Plugins section.","html":"https://oke.omqkhafi.dev/docs/reference/plugins","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/reference/plugins.md"},{"slug":"reference/security","title":"Security","description":"Host and Origin allow-lists, user vs operator planes, Console and MCP posture.","html":"https://oke.omqkhafi.dev/docs/reference/security","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/reference/security.md"},{"slug":"understand/the-architecture","title":"The Architecture","description":"Why backends drift apart, the one rule that stops it, and the five pieces behind every Flow.","html":"https://oke.omqkhafi.dev/docs/understand/the-architecture","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/understand/the-architecture.md"},{"slug":"understand/try-it","title":"Try It","description":"From an empty folder to a Flow running in the Console — one sitting, minimal detour.","html":"https://oke.omqkhafi.dev/docs/understand/try-it","markdown":"https://oke.omqkhafi.dev/llms.mdx/docs/understand/try-it.md"}]}