The typed database foundation for apps on Cloudflare — describe schemas, queries, operations, and authorization in TypeScript, then deploy the authoritative Worker and storage topology into your account.
Docs · Getting started · Mental model · MCP
- A typed schema. One TypeScript file your app, your rules, and your deploy all import. A wrong write is a red squiggle, not a bad row.
- One coherent graph. Keep related facts queryable together in one typed, authorized database instead of coordinating a hierarchy of databases.
- Portable authoring. Schemas, queries, and operation declarations are ordinary values shared by browser, server, policy, and MCP.
- Permissions in the database. Who may read or write each field is checked on the server, deny by default — not middleware you remember to add.
- Offline-first clients. Persistent browser replicas answer local queries, queue operations, and converge across reconnects and tabs.
- Nothing overwritten. Every version is kept; read the database as it was at any earlier point in time.
- Your Cloudflare account. One Worker, Durable Objects, and R2, deployed with Alchemy. No Ramose bill, no dashboard, no managed service.
bun add ramose effect@rceffect is a required peer because operation input and output codecs are
Effect Schemas. alchemy comes with Ramose for deploys. Apps using
ramose/better-auth also need better-auth and zod.
- What is Ramose? — the one-minute version
- Mental model — databases, catalogs, queries, operations, and replicas
- Getting started — build a small offline-first web app
- Connect an agent — use the same model through MCP
- How it compares — against Convex, Supabase, Instant, Firebase, and D1
Ramose is pre-release. The API moves between releases, so pin exact versions. Issues and pull requests are welcome.
Ramose itself is a Bun monorepo — bun install && bun run test. See
CONTRIBUTING.md for unit vs local vs Cloudflare e2e.