Skip to content

CLI

The kumiko CLI is the daily-driver surface for working with a Kumiko app. It boots local Docker services, runs codegen, migrates the database, manages event consumers and projections, runs tests, and ships production builds — all with a single kumiko <verb> entry point.

Terminal window
bun kumiko dev # boot Postgres + Redis + Meilisearch (docker compose up -d)
bun kumiko doctor # is everything healthy?
bun kumiko create myFeature # scaffold a new feature workspace
bun kumiko codegen # regenerate .kumiko/define.ts + types.generated.d.ts
bun kumiko schema generate my-change # new apps: drizzle-free migration
bun kumiko migrate generate # legacy apps: drizzle-kit migration
bun kumiko migrate apply # legacy: apply pending migrations
bun kumiko test # run unit tests (bun:test)
bun kumiko check # full quality pass (lint + types + guards + tests)
bun kumiko build # production build
bun kumiko stop # bring services down (volumes stay)

Running kumiko with no arguments opens an interactive TUI (Ink-based) for discovering commands. Pipe-friendly contexts (CI, scripts) fall back to a plain help screen.

The CLI is role-aware. Commands are grouped into two roles:

  • app-dev — what you get when you run kumiko inside an app workspace. Hides framework-maintenance commands you don’t need.
  • maintainer — auto-detected inside cosmicdriftgamestudio/. Adds ES-ops, code mods, CI guards, AI-eval delegation.

Override with --as <role>:

Terminal window
kumiko events prune --as maintainer
  • kumiko ci:guards — CI job splitter
  • kumiko eval — L2 AI eval (delegates to kumiko-enterprise)
Terminal window
kumiko help # role-filtered command list
kumiko <command> --help # per-command details (where wired)
kumiko docs <command> # open the docs page for one command

The CLI lives in kumiko-framework/bin/. Each command is a single file under bin/commands/ that registers itself via defineCommand at import time. Adding a new command is a one-file change plus a side-effect import in bin/commands/index.ts.

The legacy 1600-LOC monolith (bin/kumiko-legacy.ts) hosts the parallel-lock + tee-logging machinery for check/check:fast/ci:guards until Sprint C extracts it. End users never call it directly.