紅蓮·/gu·ren/·crimson lotus

The Laravel feeling, at Bun speed.

Guren is a fullstack framework for Bun. Controllers, models, queues, mail — the conventions you know from Laravel, with type safety that runs from the route definition to the React component. And your AI agent gets the same map you do, shipped with every new app.

Get started

The shape of a Guren app

Three files, one feature

A route points at a controller. The controller validates input, queries a model, and returns a typed Inertia page. That's the whole loop — no serializers, no resolvers, no hand-written API client.

Terminal
$ bunx create-guren-app my-app
$ cd my-app
$ bun run dev
import { Router } from '@guren/core'

export function routes(router: Router) {
  router.get('/posts', [PostController, 'index'])
  router.post('/posts', [PostController, 'store'])

  router.middleware('auth').group((g) => {
    g.get('/dashboard', [DashCtrl, 'index'])
  })
}

Why Guren

Conventions you know. Types you didn't have.

Controllers you already know

validateBody() throws a 422, findOrFail() a 404, auth.userOrFail() a 401. Write the happy path — the framework answers for the rest.

Types from route to React

Codegen turns routes, page props, and the API client into compile-time contracts. Rename a route and the build fails — not your users.

Drizzle models, Eloquent manners

Post.where('published', true).get() rides on Drizzle ORM. Models when you want conventions, raw SQL when you don't.

No API layer to babysit

Inertia.js hands controller props straight to your React components. One repo, one deploy, zero REST/GraphQL glue.

Batteries actually included

Auth, queues, mail, cache, events, scheduling, storage, i18n — first-party subsystems, not a shopping list of npm packages.

Built for AI agents too

guren context maps your app, guren check verifies route–controller–page wiring, guren audit gates security. Your agent reads the same docs you do — every page is served as Markdown.

Agent-native

Built for AI coding agents

One command hands an agent your whole project map. Three mechanical gates catch its mistakes before you read the diff. And every new app ships a full agent harness — CLAUDE.md, path-scoped rules, skills, and hooks — whose effect is measured in a public, reproducible evaluation: a 40% cut in agent cost over an undocumented baseline.

Terminal
$ bunx guren context # project map for the agent
$ bunx guren check # routes ↔ controllers ↔ pages
$ bunx guren audit # validation, auth, secrets
$ bunx guren agent:sync # refresh CLAUDE.md & rules

Every Guren trial in the evaluation shipped a working feature — scored blind by typecheck, tests, and a hidden HTTP smoke the agent never saw.

Agent cost for the same feature

Median USD per trial — Claude Code building a full tagging feature on Guren

Bare repo

$5.54

Big CLAUDE.md

$4.51

Shipped guidance

$3.35

The guidance in the last bar — a lean auto-loaded CLAUDE.md plus path-scoped rules — is exactly what create-guren-app ships today.

Evaluation harness & raw data

Measured, not promised

Fast where it counts

The same spec app on Guren and on the equivalent Node.js MVC stack, benchmarked under identical conditions. The app code is held constant, so the gap is Bun itself — and that is the point: keep the Laravel-style architecture, change the engine. Every number is reproducible with one command.

2.3×

SSR throughput

Guren
2.3×
Node

Full Inertia SSR pages, same app on a Node.js MVC framework

3.5×

JSON API throughput

Guren
3.5×
Node

The plain JSON path, same-app comparison

1.8×

Faster cold starts

Guren
1.8×
Node

Process start to first response

紅蓮

Guren (紅蓮) is Japanese for “crimson lotus” — the color of a blazing flame.

It is also a nod to where the framework comes from: Laravel's conventions, re-grown in TypeScript soil. Same flower, different pond.

Your first app is one command away

Guren is stable at v1.0. SQLite by default — no Docker, no config, no boilerplate.