Comparison
How OKE compares to Hono, Elysia, Encore.ts, and iii — and when to pick it.
OKE is the batteries-included TypeScript backend for the Bun era: contract-first APIs with end-to-end type safety, declarative infrastructure primitives, an OpenTelemetry-native Console, secure-by-default auth and ABAC — pure TypeScript, Web-Standards portable, MIT-licensed, self-hostable with zero cloud lock-in.
"Encore's batteries and dashboard, Elysia's speed and DX, Hono's portability — without the Rust lock-in, the cloud gravity, or the source-available license."
When to pick OKE
Choose OKE if you want:
- One mental model for HTTP, jobs, consumers, and durable work (
on(Trigger) → Effects) - Batteries included — store, signals, clock, gates, vault, channels, and AI as first-class elements
- A local Console derived from your code (not a separate SaaS product you must adopt)
- MIT + self-host with drivers named after protocols (
postgres,redis,s3), not vendors - Effects that power cache invalidation, live queries, and least privilege without hand annotations
Prefer a thinner router (Hono / Elysia alone) if you only need HTTP and will assemble queues, cron, and auth yourself.
Matrix
| Hono | Elysia | Encore.ts | iii | OKE | |
|---|---|---|---|---|---|
| Primary runtime | Multi (Web Std) | Bun-first | Node + Rust core | Rust engine, polyglot | Bun-first, Web-Std portable |
| License | MIT | MIT | MPL-2.0 | ELv2 engine | MIT |
| Typed client | hc RPC | Eden Treaty | generated | SDK | contract-first + live queries |
| DB · queue · cron · storage | ❌ | ❌ | ✅ | ✅ | ✅ (7 elements) |
| Durable workflows | ❌ | ❌ | ❌ | partial | ✅ (a flag) |
| Local Console | ❌ | ❌ | ✅ | ✅ | ✅ (dev + prod) |
| Auto cache invalidation | ❌ | ❌ | ❌ | ❌ | ✅ (from effects) |
| Least-privilege by compiler | ❌ | ❌ | ❌ | ❌ | ✅ |
| Human channels (email/SMS/WA) | ❌ | ❌ | ❌ | ❌ | ✅ (7th element) |
| AI in the application (models, prompts, agents) | ❌ | ❌ | ❌ | ❌ | ✅ (8th element) |
| Self-host, no lock-in | ✅ | ✅ | ✅ (Cloud optional) | ⚠️ | ✅ first-class |
vs Collections of libraries
Frameworks that ship a router plus a queue library plus a cron library plus websockets share one flaw: the concepts do not derive from one another. Documentation sprawls; each new fashion adds a concept that never gets removed.
OKE starts from one law so docs, traces, hooks, and agent surfaces stay one shape.
vs Cloud-gravity platforms
OKE is MIT, self-hostable, and names drivers after protocols — not vendors. Vendor choice lives in images keyed by role. There is no separate “deploy to our cloud” product you must adopt to get the Console.
vs Rolling your own effect system
Effects are inferred from what a Flow touches through fx. Cache invalidation, live queries, least privilege, deterministic tests, and Manifest Diff fall out of that one decision — without hand-written annotations for each capability.