Full-stack TypeScript framework

Structure. Speed. AI built in.

A full-stack framework on top of Vike + Vite. DI container, expressive ORM, controllers, queues, mail, AI, and the Rudder CLI — without giving up Node’s ecosystem or Vike’s performance.

MIT licensedOpen sourceBuilt with Rudder
Why Rudder

The full-stack framework that doesn’t make you choose.

Most Node frameworks pick a side — frontend OR backend, structure OR flexibility, batteries OR modularity. Rudder refuses the tradeoff. Real backend wired to a Vite-fast frontend, AI built in, every layer modular, all TypeScript.

Full-stack without compromise

Real backend — DI container, expressive ORM, queues, mail, scheduling — wired to a Vite-fast frontend with controller-returned SSR views and full SPA navigation. Not API-first with a frontend bolt-on. Both, properly.

AI-native, not bolted-on

Agents, tool calling, streaming, conversations, structured output across 15 providers (Anthropic, OpenAI, Google, Ollama, Groq, DeepSeek, xAI, Mistral, Cohere, Jina, Azure, OpenRouter, Bedrock, ElevenLabs, Voyage). MCP servers expose your tools so Claude, Cursor, and ChatGPT can call them directly.

One server, every protocol

HTTP, WebSocket pub/sub, and Yjs CRDT collaboration on the same port — same DI container, same auth. No proxy, no second process. Real-time is a feature, not an architecture decision.

Modular, not monolithic

48 first-party packages. Start with three; add only what your app needs. Adapters swap freely — Prisma ↔ Drizzle, BullMQ ↔ Inngest, local ↔ S3. Provider auto-discovery handles wiring.

UI-agnostic by default

React, Vue, Solid, vanilla HTML — or no frontend at all (pure API mode is first-class). Vike handles SSR and SPA nav; you pick the renderer. Switching later doesn’t mean rewriting your backend.

Strict TypeScript, runs everywhere

Strict mode by default — type-checked from controller param to ORM result to view prop. WinterCG-compatible runtime: the same bootstrap/app.ts runs on Node, Bun, Deno, and Cloudflare Workers. No vendor lock-in.

Quickstart

From zero to running in three commands.

The scaffolder asks you a handful of questions, generates a working project, and runs providers:discover for you.

  1. $ npm create rudder@latest my-appPick packages, frameworks, and a database — or none of the above.
  2. $ cd my-app && npm installInstalls the packages you picked plus the framework runtime.
  3. $ npm run devVike dev server on :3000. Edit app/Views/* to see SPA-fast HMR.
The toolbox

Every layer is its own package.

Use what you need. Skip what you don’t. The Rudder CLI auto-discovers providers from your package.json so adding a layer is one install.

@rudderjs/coreCore

Application bootstrap, DI container, service providers, events, validation.

@rudderjs/routerHTTP

Decorator + fluent router, named routes, signed URLs, route middleware.

@rudderjs/viewHTTP

Controller-returned views rendered through Vike SSR — React, Vue, Solid, or vanilla HTML.

@rudderjs/ormData

Eloquent-style models on Prisma or Drizzle. Relations, scopes, casts, factories.

@rudderjs/authData

Sessions, password reset, email verification, Gates and Policies.

@rudderjs/queueJobs & infra

Background jobs with sync, BullMQ, or Inngest drivers. Chains, batches, retries.

@rudderjs/mailJobs & infra

Transactional email with templates, queued sends, and provider-agnostic adapters.

@rudderjs/cacheJobs & infra

Multi-driver cache with tags and atomic operations.

@rudderjs/storageJobs & infra

Filesystem facade with named disks. Local + S3-compatible drivers.

@rudderjs/aiAI

Provider-agnostic agents, tool calling, streaming, attachments, structured output.

@rudderjs/mcpAI

Expose tools over the Model Context Protocol. Servers from your own provider classes.

@rudderjs/telescopeDevx

Inspector for requests, queries, jobs, mail, AI calls, exceptions, and logs.

Every package is published to npm and pinned to a single semver line. Nightly CI verifies the framework still installs from scratch.

The shape of the code

One mental model, every layer.

Controllers return views. Models query the database. Jobs queue work. Agents call tools. The same TypeScript ergonomics from the HTTP edge all the way to the database row.

Routing

Explicit routes in routes/web.ts and routes/api.ts. Named routes, route middleware, decorator-based controllers, and signed URL helpers — all type-checked.

routes/web.tsHTTP
import { Route } from '@rudderjs/router'
import { view }  from '@rudderjs/view'
import { AuthMiddleware } from '@rudderjs/auth'

Route.get('/posts/:slug', async (req) => {
  const post = await Post
    .with('author', 'comments')
    .where('slug', req.params.slug)
    .first()

  return view('posts.show', { post })
}, [AuthMiddleware()])
  .name('posts.show')

Every snippet on this page is real, runnable, and shipped in the framework you can install above.

What you get

Built-in. Not bolted on.

Every package follows the same conventions, the same DI container, and the same configuration shape. Adding a layer is one install — not a weekend of integration.

Controllers + routing

Explicit routes with middleware, params, named routes, and signed URLs. Decorator controllers when you want them.

Expressive ORM

Active-record models on Prisma or Drizzle. Relations, scopes, eager loading, casts, observers, factories — all in TypeScript.

Controller views

Return view() from a controller. Rendered through Vike SSR with full SPA navigation. Vue, React, Solid, or vanilla HTML.

Rudder CLI

make:* generators, queue workers, scheduler, db:seed, and provider auto-discovery — npm rudder for the full list.

Queues + mail + cache + storage

First-party packages for background jobs, transactional email, multi-driver cache, and S3-compatible file storage.

Auth + Policies

Session guards, password reset, email verification, and Laravel-style Gate/Policy authorization — all in one package.

Agents + structured output

Build AI agents with @rudderjs/ai. Tool calling, streaming, conversations, attachments, middleware, and structured output.

MCP servers

Expose tools over the Model Context Protocol. Your provider classes become tools any MCP client can call.

Telescope inspector

Records requests, queries, jobs, mail, AI calls, exceptions, and logs — with a JSON API and a built-in dashboard UI.

Dogfooded

This site is built with Rudder.

Marketing pages, docs, search, OG images, the markdown render pipeline — all of it runs on the framework you just installed. The repo is open. Nightly CI bumps every @rudderjs/* package to the latest published version and rebuilds. If a release breaks the site, an issue opens automatically.

Read the source
  • Pinned to PUBLISHED @rudderjs/* versions — not workspace links — so the npm install path is always proven.
  • Two-page surface area: marketing homepage + 68 markdown docs.
  • Three-column docs site with sidebar, prose, sticky TOC, and a ⌘K search palette.
  • No auth, no DB, no cache provider — just the framework, used the way you would.
Ecosystem

Rudder steers the structure. Pilotiq sets the course.

Rudder is the framework. Pilotiq is the AI-powered admin panel installed on top — the place where content, SEO, docs, help center, and brand work happens. Use either alone, or both together: the scaffolder asks if you want the panel.

RudderThe framework underneath.
  • DI container, ORM, controllers, queues, mail, AI, MCP.
  • Conventions for routing, validation, auth, observability.
  • Open source, MIT, free forever — self-host on anything that runs Node.
PilotiqThe admin panel on top.
  • AI-powered admin panel for any Rudder app.
  • 30+ specialist agents — SEO, GEO, content, docs, help center.
  • Open-core CMS, paid agent + AI plugins. Self-host or hosted.
Visit Pilotiq

During scaffolding, npm create rudder asks: "Do you want the Pilotiq admin panel?". Answer no, and you get the bare framework. Answer yes, and the panel is wired in.

Try it

One command. Real project.

The scaffolder picks packages, scaffolds providers, runs auto-discovery, and starts the dev server.

Read the docs

Build the API. Render the page. Ship the agent.

One framework, one mental model, end to end.