Roost brings convention-over-configuration to Cloudflare Workers. Enterprise auth, Drizzle ORM, AI agents, job queues, and Stripe billing — wired together with a framework that stays out of your way.
Each package works standalone, but they're designed to compose. Register a provider, and the framework handles the rest.
Typed wrappers for D1, KV, R2, Queues, Durable Objects, AI, Vectorize, and Hyperdrive.
Class-based agents with typed tools, structured output, streaming, and conversation memory.
Expose your app to AI clients with tools, resources, and prompts over the Model Context Protocol.
Typed job classes on Cloudflare Queues with dispatch, retry, chaining, and batching.
Scaffold projects and generate models, agents, jobs, middleware — all from the terminal.
Abstract billing interface with subscriptions, metering, webhooks, and customer portal. Ships with a Stripe adapter.
Type-safe file routing, SSR, and server functions. React 19 on the edge.
SSO, RBAC, organizations, and session management. Enterprise-ready from the first line of code.
Laravel-like model classes with query builders, relationships, hooks, and migrations.
Same Cloudflare Workers runtime. Dramatically less boilerplate.
export default {
async fetch(request, env) {
// Parse session from cookies
const cookie = request.headers
.get('cookie')?.split(';')
.find(c => c.includes('session='));
const userId = await verifySession(cookie);
// Query D1 with raw SQL
const rows = await env.DB
.prepare(
'SELECT * FROM todos WHERE user_id = ?1 ORDER BY created_at DESC'
)
.bind(userId)
.all();
return Response.json(rows.results);
}
}// Auth handled by middleware
const getTodos = createServerFn()
.handler(async () => {
const user = await requireUser();
return Todo
.where('user_id', user.id)
.orderBy('created_at', 'desc')
.all();
});From zero to deployed in minutes. Enterprise-ready from the first line.