CLI
Every kitr command and flag.
kitr is installed with the kitr package (pnpm add kitr) and run as pnpm kitr <command> or pnpm dlx kitr <command>. Install it globally (pnpm add -g kitr) to type kitr add ... directly: inside a project that has its own kitr, the global binary hands over to that copy, so the version in package.json is always the one that edits your files (KITR_GLOBAL=1 skips the handover). Every command runs from flags alone; nothing prompts.
Project commands
| Command | What it does |
|---|---|
kitr new <dir> --kit <kit> |
Create a project. Base kits: blank, app, fullstack, server. Presets with real pages, controllers and tests: saas (sign-in, guarded app shell, projects CRUD, analytics, monitoring), site (SSR + prerender, SEO, i18n en/de, blog, newsletter controller), realtime (chat over typed channels), desktop (the app kit in an Electron shell with typed IPC), mobile (the app kit as a PWA and a Capacitor shell). --platform site=web,api=server replaces the kit's platforms; --mode, --pwa, --runtime, --shell, --targets, --port set their options. --pm, --no-install, --no-git, --registry <url|path>, --force. |
kitr add <pkg...> |
Install the package(s), register providers in kitrrc.ts, write config/<pkg>.ts and stubs, update AGENTS.md. Follows requires (adding api adds server and logger; adding router adds react). --dry-run, --no-install. |
kitr add <type> <name> [--option value] |
Adds a platform (web, server, desktop, mobile): kitr add web admin --mode spa, kitr add desktop app --shell tauri. Installs the platform package and the packages it needs, writes platforms.<name> into kitrrc.ts, scaffolds platforms/<name>/ for native shells and adds the dev/build/start scripts. See platforms.md. |
kitr remove <pkg...> |
Reverse of add: unregisters the provider and package, deletes config/<pkg>.ts, removes dependencies, then lists files that still import it. |
kitr doctor |
Checks kitrrc.ts against package.json, providers that resolve, missing config files, direct upstream imports where a kitr/* entry exists, server-only projects that pull React, version drift from the tested set. --json, --strict. Exit code 1 on errors. |
kitr info |
JSON summary: version, package manager, packages, providers, platforms, directories, server-only or not. |
kitr upgrade [--to x.y.z] [--majors] |
Moves kitr and every @kitr/* to one version and aligns upstream libraries with the versions that release was tested with. Major bumps are listed, not applied, unless --majors. |
Platforms
| Command | What it does |
|---|---|
kitr dev [names...] |
Runs every platform in kitrrc.ts, or the named ones, in development: kitr dev, kitr dev site api, kitr dev site --port 4000. |
kitr build [names...] |
Production builds into dist/<name>/. |
kitr start [names...] |
Serves the builds (kitr serve is an alias). |
kitr platforms [types|scaffold <name>|remove <name>] |
Lists platforms and their effective options; lists the available types; rewrites a platform's scaffold; removes one from kitrrc.ts. |
kitr config <name> [option] [value] [--unset] |
Reads or sets one platform option in kitrrc.ts, validated against the platform's schema: kitr config site port 4000. KITR_<NAME>_<OPTION> overrides any option at run time. |
Generators
kitr make:<kind> <name> writes one file from a stub. --force overwrites. Stubs can be customised per project: kitr eject stub <kind> copies it to stubs/<kind>.ts, and make:* prefers the ejected version.
| Command | Writes |
|---|---|
make:route projects/index |
app/routes/projects/index.tsx with route path /projects/ |
make:route projects/:id |
app/routes/projects/$id.tsx |
make:action projects/create |
app/actions/projects/create.ts (defineAction) |
make:controller projects [--resource] |
server/controllers/projects_controller.ts (index/show/store/update/destroy with --resource) |
make:middleware audit |
app/middleware/audit.ts |
make:channel chat |
app/channels/chat.ts (defineChannel) |
make:store cart |
app/stores/cart.ts (createKitrStore) |
make:form project |
app/components/forms/project_form.tsx |
make:queries projects |
app/features/projects/queries.ts (keys, queries, mutation with effects) |
make:provider analytics |
app/providers/analytics_provider.ts |
make:job send_digest |
server/jobs/send_digest.ts (defineJob with a schema and retries; list it in config/jobs.ts) |
make:mail welcome |
server/mail/welcome.tsx (defineMail with a preview) |
make:service billing |
server/services/billing_service.ts (a class to bind in a provider) |
make:validator project |
app/validators/project.ts (create/update zod schemas) |
make:test projects |
test/projects.test.ts, run by the project's vitest (createTestApp) |
make:component user-card |
app/components/user-card.tsx |
make:hook toggle |
app/hooks/use-toggle.ts |
make:exception payment_failed |
app/exceptions/payment_failed_error.ts (a KitrError subclass) |
Components
| Command | What it does |
|---|---|
kitr ui add <name...> |
Copies components from a shadcn-compatible registry into app/components/ui (and pages into app/routes), resolving registryDependencies and installing npm dependencies. --registry, --overwrite. |
kitr ui list |
Lists the registry's items. |
The default registry is kitr's own (registry/dist in this repo). Point --registry, config/theme.ts or KITR_REGISTRY at any other shadcn-format registry, including a local folder.
API and server
| Command | What it does |
|---|---|
kitr api:sync |
Loads the routes file (server/routes.ts), writes openapi.json (OpenAPI 3.1; schemas from zod, valibot or arktype when present) and routes.gen.ts, a plain route table for clients that cannot import the server. --file, --out. |
kitr routes:list |
Prints the route table: method, path, name. |
kitr css:types |
Writes a .d.ts beside every *.module.css. --check fails when stale. |
Leaving kitr
kitr eject stubs copies every generator stub. kitr eject all also prints the import rewrites that remove kitr entirely: each kitr/* entry maps to the upstream package it re-exports.