Version 0.8.0 is live

The React framework
for Cloudflare Workers.

Build full-stack apps on Cloudflare with a minimal and predictable system. Made for humans and coding agents, so you can keep a clean codebase to read, understand and change yourself.

Read the developer docs
npx create-goribu new-app

Open-source · MIT License

src/routes/posts/[id].jsx
// Load the post or return a 404.
export async function GET(req, res) {
  const post = await req.d1`
    SELECT title, body FROM posts
    WHERE id = ${req.params.id}
  `.get();

  if (!post) return res.notFound();
  return res.render({ post });
}


// Render the post as a React page.
export default function Post({ post }) {
  return (
    <article>
      <h1>{post.title}</h1>
      <p>{post.body}</p>
    </article>
  );
}
  • Keep changes local

    One file

    The page UI and its handlers live together.

  • Stay predictable

    One way

    Clear patterns for humans and agents.

  • Be token efficient

    Small API

    Less conventions to hold in your head or your sessions.

  • Just declare resources

    Code first

    Spin up Cloudflare services like D1 and KV from code.

  • Stream pages

    Server-driven

    SSR for your initial load and just JSON for navigation.

Build fast.
Change things easily.

A route has its data and its UI in the same file. Most changes stay local, obvious and easy to review. No matter if you or your agent is making them.

Beforesrc/routes/posts/[id].jsx
const post = await req.d1`
  SELECT title, body
  FROM posts
  WHERE id = ${req.params.id}
`.get();
 
// In the page component
<p>{post.body}</p>
AfterSame file
const post = await req.d1`
Changed line:   SELECT title, body, author
  FROM posts
  WHERE id = ${req.params.id}
`.get();
 
// In the page component
<p>{post.body}</p>
Changed line: <footer>By {post.author}</footer>

The resources you want.
Right in your code.

You or your agent can declare and use a D1 database or a KV store, if your app needs them. Just deploy and Goribu handles this and more, for you.

goribu.config.js
import { defineConfig } from "goribu/server";

export default defineConfig({
  name: "my-app",
  compatibilityDate: "2026-09-01",
  database: {
    type: "d1",
    name: "my-app-db",
  },
  kv: { name: "my-app-kv" },
});
Resources to include in the example

From dev to production

  1. pnpm dev

    Run your app with local versions of the resources you declared, using the same bindings as production.

  2. pnpm check

    Read the production plan. Review resources and pending migrations before making any changes to production.

  3. pnpm run deploy

    Validate, build and provision declared resources. Apply pending migrations, then upload your app to Cloudflare.

Follow the deployment guide

Reliable architecture.
Less complexity.

Request-time pages stream on the first visit. App navigation asks for page data.
Static HTML is built ahead of time and served without invoking the Worker.

  • First visit

    1. Request
    2. Worker handler
    3. Stream HTML

    Real content immediately

  • Navigation

    1. Link click
    2. Fetch page JSON
    3. Swap into the next page

    App-like navigation with server-loaded data

  • Static route

    1. Request
    2. Served from Cloudflare CDN

    Static HTML without a Worker invocation

  • TypeScript or JavaScript

    Typed by default or use --js for plain JavaScript. Whatever you prefer, the framework stays the same.

  • Forms

    Server mutations, validation, redirects and pending state through a single Form component.

  • AI ready by default

    Despite being new, the necessary files are included and the patterns work from the start with most coding agents.

  • Metadata & SEO

    Set titles, descriptions and other metadata alongside your routes, rendered correctly on the server.

  • Error handling

    Helpful error pages with a unique ID you can trace in logs alongside the CF-Ray.

  • Powered by Vite

    Fast development, HMR and the Vite ecosystem, without having to rely on a custom build toolchain.

Start building apps, in the
way you prefer.

A small API, one canonical way to do stuff and all the files your agents need, from the start. That’s why Goribu is token-efficient, takes up minimal context space and even enables your AI assistant to add the resources you need.

CLI
pnpm create goribu@latest my-app
cd my-app && pnpm install
pnpm dev

A first task for your agent

Build a notes app with D1. Add a notes list, a create form, an edit page and deletion. Replace the starter pages.

Get your real-world notes app working right away, check out how fast your agent got up to speed and how low the token cost was.

Check out the code on GitHub (opens in a new tab)