CAFE names the Cloudflare, Alchemy, Foldkit and Effect stack
CAFE is a named stack. Each letter has one job.¶
Read the CAFE news and browse the project directory.¶
Maxwell Brown coined the name; Justin Bennett spread it with his template on 8 October 2026. That day, Devin Jameson, Maxwell and Sam Goodwin streamed a CAFE build, and Sebastian Lorenz wrote the explainer people share.¶
| Letter | Part | Job |
|---|---|---|
| C | Cloudflare | Runs the app: Workers, Durable Objects, storage, static assets. |
| A | Alchemy | Declares the cloud resources as an Effect program. |
| F | Foldkit | Draws the UI with the Elm Architecture on Effect. |
| E | Effect | Does the typed work between the UI and the cloud. |
A request follows one path. The Alchemy Stack declares every box on it.¶
┌─ Alchemy Stack ──────────────────────────────────┐
│ │
│ Foldkit app (browser) │
│ │ HTTP or RPC, typed by a shared schema │
│ ▼ │
│ Worker (Effect) │
│ │ │
│ ▼ │
│ Durable Object or storage │
│ │
└──────────────────────────────────────────────────┘ The browser and the Worker import the same schemas. Alchemy reads the same program to deploy and to test.¶
The canonical example
Effect-TS/cafe is a chat app from the Effect organization. Its README defines CAFE. Sam Goodwin7, who wrote Alchemy, built it. Maxwell Brown also commits to it.¶
It shows these patterns:¶
@cafe/apiholds the HTTP and RPC schemas. It may import onlyeffect, so the browser can import it safely. A lint rule enforces this.¶- The Worker serves an Effect
HttpApi. PR #6 moves chat events to Effect RPC over aCloudflare.RpcDurableObject, one per chat.¶ - The frontend is a Foldkit single-page app. Side effects are
Command.definedefinitions. PR #2 streamed socket frames withSubscription.fromEvent; PR #6 later replaced the socket with RPC.¶ - Story tests check update, Messages, and Commands. Scene tests drive the rendered view. Both are pure.¶
- Live tests deploy the Stack with
Test.makefromalchemy/Test/Vitest. The end-to-end test drives Chromium through Playwright.¶ - CI deploys one stage per pull request and destroys it when the pull request closes.¶
stacks/github.tsis an Alchemy Stack that writes the CI Cloudflare credentials as repository secrets.¶- Configuration comes from
effect/Config. ItsAGENTS.mdforbidsprocess.env.¶ - The repository carries the Foldkit agent skills.¶
Other CAFE apps
| App | What it shows |
|---|---|
| just-be-dev/effect-cloudflare-foldkit-template | A template with tooling and guardrails for Effect 4, Foldkit, and Alchemy 2 on Cloudflare. |
| NigelThorne/foldkit-demo | Live shared sessions on Durable Objects with SQLite and hibernatable WebSockets. |
| mwarger/corefour | A poster app with an Effect HttpApi Worker, Foldkit server rendering, and KV and R2 storage. |
| Manzanita-Research/foldkit-dials | Live tuning controls for Foldkit apps. See the next section. |
| Manzanita-Research/pleat | Typed styles for Foldkit and Effect 4. MIT. |
| Effect-TS/slopcop | Several Effect Workers with D1 and Queues, declared in one Alchemy Stack. |
Pleat treats a style as a value:¶
- Styles merge by fixed laws.¶
- Every rule compiles to atomic CSS when its module loads.¶
- Recipe variants are typed by Effect Schema17.¶
- A model that generates UI can choose styles, but it can never write CSS.¶
Jem at Manzanita Research builds actively in the CAFE space: Pleat, foldkit-dials, and foldkit-native.¶
foldkit-dials
Manzanita-Research/foldkit-dials gives a Foldkit app live tuning controls, after DialKit. It is MIT licensed, at version 0.1.0.¶
- The dials are an Effect Schema.¶
- Every dial edit is a Message.¶
- Foldkit DevTools records each edit.¶
- Time travel replays it.¶
- Story and Scene tests can drive it.¶
Its demo deploys with Alchemy. A stacks/github.ts Stack bootstraps its CI credentials, as in cafe.¶
foldkit-dials is a clear example of the Foldkit rule that every change is a Message. A tool that follows the rule gets recording, replay, and tests from the runtime.¶
Where rat-stack sits
rat-stack is a CAFE stack with the fence39 around it. The table compares it with cafe at rat-stack commit 3fb103b.¶
| Area | rat-stack | cafe |
|---|---|---|
| Alchemy Worker shape | Class form: Cloudflare.Worker<Mischief>(), Cloudflare.Workers.RpcWorker, Cloudflare.Website.Foldkit | Cloudflare.Worker, Cloudflare.RpcDurableObject, Cloudflare.Website.Foldkit |
| Runtime tests | alchemy/Test/Vitest with fixture Workers in apps/site/test/*-runtime.test.ts | Test.make deploys the whole Stack; Playwright drives Chromium |
| API surface | One contract projected to RPC, HTTP, MCP, and CLI by packages/capability | Hand-written HttpApi and RpcGroup |
| Foldkit | Runtime.makeApplication, Command.define, @foldkit/oxlint-plugin, Story and Scene tests | The same, plus the Foldkit agent skills |
| Config | varlock .env.schema into Effect Config; no process.env in source | effect/Config; no process.env |
| Pull request stages | scripts/deploy-preview.sh deploys a Website and RpcBackend preview by hand; no live end-to-end test | CI deploys one stage per pull request, runs live tests, and destroys it on close |
| Tracing | Cloudflare.Telemetry, opt-in, off by default | Not enabled |
The largest difference is the API surface23. See one capability, every surface18 and infrastructure as effects10.¶
Sources
- Effect-TS/cafe¶
- foldhub/awesome-foldkit, Foldhub’s community list for Foldkit, announced by Taras Kornichuk¶
- Foldkit¶
- Alchemy¶
- Effect¶
Sources
- Effect-TS/cafe · GitHub. GitHub Effect-TS. README, AGENTS.md, package layout, CI workflows, and commit history; used for the canonical example. Accessed 2026-10-09.
- refactor: stream socket frames with Subscription.fromEvent · Effect-TS/cafe#2. GitHub Effect-TS. Used for the Subscription.fromEvent step. Accessed 2026-10-09.
- refactor: stream chat events over Effect RPC · Effect-TS/cafe#6. GitHub Effect-TS. Used for the move to Effect RPC over a Durable Object. Accessed 2026-10-09.
- Manzanita-Research/foldkit-dials · GitHub. GitHub Manzanita-Research. README and package manifest; used for the foldkit-dials section. Accessed 2026-10-09.
- Manzanita-Research/pleat · GitHub. GitHub Manzanita-Research. README; used for the Pleat row. Accessed 2026-10-09.
- Manzanita-Research/foldkit-native · GitHub. GitHub Manzanita-Research. Repository description; used for the Manzanita Research credit. Accessed 2026-10-09.
- just-be-dev/effect-cloudflare-foldkit-template · GitHub. GitHub just-be-dev. Repository description; used for the other CAFE apps table. Accessed 2026-10-09.
- NigelThorne/foldkit-demo · GitHub. GitHub NigelThorne. Repository description; used for the other CAFE apps table. Accessed 2026-10-09.
- mwarger/corefour · GitHub. GitHub mwarger. README; used for the other CAFE apps table. Accessed 2026-10-09.
- Effect-TS/slopcop · GitHub. GitHub Effect-TS. alchemy.run.ts; used for the other CAFE apps table. Accessed 2026-10-09.
- foldhub/awesome-foldkit · GitHub. GitHub foldhub. Community list for Foldkit libraries and apps. Accessed 2026-10-09.
Last changed 2026-10-10 in 978dccc. Source on GitHub. Change log.
Linked from
- Agent guide. An Effect stack so pure (aspirational) Kit Langton will blush.
CAFE news: reviewed Cloudflare, Alchemy, Foldkit and Effect news, ranked by engagement and freshness; also an Atom feed and the listCafeNews tool
- Agent rules for rat-stack (AGENTS.md). What you may change, which commands to run, and which changes need approval.
Hold the runtime family here until Foldkit publishes against a newer Effect; its exact peer and platform dependency must share one runtime.
- Change log. What changed in the files served here, newest first.
CAFE names the Cloudflare, Alchemy, Foldkit and Effect stack — edited: docs: point live docs, skills and Brain pages at apps/site
- Effect + Alchemy peer patterns. Source-grounded patterns from repos on nearby Effect and Alchemy pins.
0 to satisfy Foldkit’s exact peers.
- Effect + Alchemy peers. Public repositories that share rat-stack's prerelease lines.
- Effect 4 study: September 2026. Dated Effect 4 source studies from September 2026; current versions live in pins.md.
Foldkit’s exact Effect peers and platform dependencies must share one runtime.
- Full agent guide. An Effect stack so pure (aspirational) Kit Langton will blush.
- Infrastructure as effects. Sam Goodwin relates application operations to infrastructure requirements in one typed program.
Sam relates runtime clients, business logic, infrastructure policies, and deployed resources in one typed program.
- Lint and type escape ledger (debt.md). A source-linked count of repo-owned lint and type escapes.
- One prompt serves people and agents. Source-owned agent prompts with typed discovery and copyable browser pages.
Foldkit Messages and Commands own clipboard interaction.
- Rat Stack lore | rat-stack. Short, source-grounded notes on the ideas and decisions behind rat-stack.
Link context
CAFE names the Cloudflare, Alchemy, Foldkit and Effect stack — CAFE is a named stack: Cloudflare runs the app, Alchemy declares it, Foldkit draws the UI, and Effect does the typed work.
- rat-stack. An Effect stack so pure (aspirational) Kit Langton will blush.
CAFE news and the CAFE directory: reviewed Cloudflare, Alchemy, Foldkit and Effect news and projects
- Sam Goodwin. Sam Goodwin presents Alchemy as infrastructure built from Effect programs and typed requirements.
He built cafe, the reference app for the CAFE stack.¶
- Source change history (log.md). The generated change log as Markdown.
CAFE names the Cloudflare, Alchemy, Foldkit and Effect stack — edited: docs: point live docs, skills and Brain pages at apps/site
- test-behaviour. Pick the test shape that proves a behaviour. Use when you ask "how do I test this?", add a test, test a domain rule, a lifecycle, a retry, a session, a UI interaction, a timer, or a race, or review a test that might be tautological.
Read UI behaviour is a scene for the Foldkit UI Toast race.¶
- UI behaviour is a scene. A Foldkit Scene drives update, view, and subscriptions with input and time as plain data, then asserts on what the view shows.
A Foldkit program has a Model, Messages, an update function, and a view.