CLI reference

Every command below runs as devora <command> — via pnpm exec, npm exec, or yarn, whichever your project uses.

devora dev

Runs every app in the project in dev mode at once, each on its own Vite dev server. Pass --app <name> to run just one app instead — the common case once a project has more than one app and you're only working on one of them.

devora build

Builds every app for production (or one, with --app <name>). Add --adapter <target> (vercel or netlify) to also write that platform's build output format alongside the standard build — needed before a Vercel or Netlify deploy, not needed for self-hosting.

devora start

Serves a production build with the plain Node adapter — run devora build first. Pass --app <name> to serve just one app, or --port <port> to set the starting port (each additional app increments from there automatically, so multiple apps never collide on the same host).

devora deploy

Builds and deploys straight to Vercel or Netlify via --adapter <target> (required), for all apps or one with --app <name>, deploying to production instead of a preview with --prod. Each app must already be linked to its own platform project/site (vercel link / netlify link, run once per app directory) — an unlinked app is skipped with an instruction rather than failing the whole run, and one app's deploy failure doesn't stop the rest. This is a convenience on top of the git-integration deploy flow described in Deployment, not a replacement for it.

devora new <app-name>

Scaffolds a new app inside an existing project — creates apps/<name> and registers it in devora.config.ts. Prompts whether the app needs auth/sessions unless you pass --auth shared|isolated|none, and --domain <domain> sets the domain recorded in the config (otherwise a placeholder is used).

devora add <app-name>

Identical to devora new — a friendlier alias for the same scaffolding action, same flags.

devora remove <app-name> (alias: rm)

Undoes new/add: deletes apps/<name> and its entry in devora.config.ts. No flags.

devora list (alias: ls)

Lists every app currently registered in devora.config.ts — name, directory, domain, and effective auth mode. Useful for checking a project's shape without opening the config file.

devora generate:proxy

Reads every app's domain out of devora.config.ts and writes a working reverse proxy config for self-hosting. --target <target> (required) is nginx or caddy; --out <path> sets where the file is written instead of the default location.