Own your stack.
Server rendering, end-to-end types, and auth — assembled from small pieces you control, instead of one framework that owns you.
How a request flows
The pieces
- Waku
A minimal React-Server-Components framework. SSG, SSR, file-based routing — then it steps aside.
- RSC + actions
Typed data fetching and mutations across the wire. The import is the contract — no tRPC.
- Owned passkeys
Sign-in with no password table to leak. One package of ours, mounted in two lines.
- Pure CSS
One semantic stylesheet. No Tailwind, no CSS-in-JS, no utility soup.
- WebMCP
The page offers its own actions to your visitor's agent as tools. Same functions the buttons call.
- nginx
The network is part of the stack: hashed assets cached for a year, HTML streamed as it renders, SSE left unbuffered.
See it run
This counter is the only interactive JavaScript on the home page.
Count is 0
Make it an app
Server-rendered and fast, it installs to a phone's home screen and runs standalone — the same code, indistinguishable from native.
Install this web app — it runs standalone, indistinguishable from native.
On a supporting browser, an install prompt appears here. On iOS Safari: Share → Add to Home Screen.