Installation

Create a Caldera app and start it.

You need Node.js 22 or newer, and a package manager: pnpm, npm, Yarn or Bun.

Create an app

pnpm create caldera my-app

Before the first release

Caldera isn't on npm yet. Until it is, create apps from a checkout of the Caldera repository, which installs its packages from your copy:

node path/to/caldera/packages/create-caldera/bin/create-caldera.js my-app --link path/to/caldera

It asks a few questions:

QuestionChoices
Starter kitStarter: sign-up, login, settings and a dashboard. Blank: Tailwind and the UI kit, with one page.
Add teams support?With the starter kit: a personal team for everyone, invitations by email, and roles.
DatabaseSQLite: a local file, and Turso or D1 in production. Postgres: needs a Postgres server.
Deploy targetNode server, Vercel or Cloudflare Workers.
Package managerThe one you ran it with, by default.

Then it installs the dependencies, writes the generated types, creates the first migration and (on SQLite) applies it, and makes the first git commit.

To skip the questions, pass the answers. -y takes the defaults for anything you leave out:

pnpm create caldera my-app --teams --database postgres --target vercel -y
OptionWhat it does
--starter, --blankThe kit (starter is the default).
--teamsTeams, with the starter kit.
--database sqlite|postgresThe database (SQLite is the default).
--target node|vercel|cloudflareWhere it will run (a Node server is the default).
--nextA Next.js app with Caldera at /api, instead of Inertia pages. The same kits and teams.
--pm pnpm|npm|yarn|bunThe package manager.
--no-install, --no-gitSkip installing, or the git repository.
-y, --yesAsk nothing.

Start it

cd my-app
pnpm dev

Open localhost:3000. caldera dev runs everything an app needs while you work:

  • The app on port 3000, restarting when you change a file in src/.
  • Vite for the pages, which update in place as you save.
  • The realtime server, so live updates work locally.
  • Type generation: routes, pages, config and models are re-read as you edit, so c.render('Posts/Index', …) and friends stay type-checked.

Mail isn't sent while you develop. Every message lands in the outbox at /_caldera/mail/outbox, and /_caldera/mail previews each mail your app can send.

With Postgres

Create the databases first (the app's, and one for tests), then apply the first migration:

createdb my_app && createdb my_app_test
pnpm exec caldera db:migrate

Next

Build something with it: Your first app.

On this page