Try It
From an empty folder to a Flow running in the Console — one sitting, minimal detour.
What you need
Bun ≥ 1.4.2, and Docker running. oke dev starts everything else — Postgres, Redis, mail — for you.
bun --version
docker infoScaffold and run
bunx create-oke@latest my-app
cd my-app
bun run devOpen the Console at the address printed in the terminal and claim it with the code shown there. The Flows listed weren't configured anywhere — they were derived from the code you just scaffolded.
Call it
The starter ships a health Flow. Call it from a typed client, the same way your frontend would:
import { createClient } from "okengine/client";
import type { App } from "./app";
const api = createClient<App>("http://localhost:6530");
const { data, error } = await api.main.health({});data and error are inferred straight from the Flow you just ran — not from a separate schema you maintain by hand.
Prove it, don't just believe it
test("boots — health flow", async () => {
const t = await createTestApp(app);
const { data } = await t.api.main.health({});
expect(data).toEqual({ ok: true });
});bun testNo mocked HTTP server, no real clock, no live mail provider. createTestApp swaps every driver behind fx for a deterministic one — because effects were never allowed to happen any other way.
Where this goes next
If this went smoothly, the next page is the honest one: what's solid today, what's still moving, and who this is actually ready for right now.