Skip to main content
The Kasava CLI is the headless / scriptable / terminal-first surface for Kasava. It binds a local repository to a Kasava product and writes a .kasava/ directory with synthesized product context, plans, work breakdowns, graph, and a top-symbols index. The Claude Code plugin reads from that artifact when present β€” no token cost β€” and falls through to MCP for live data.
Three surfaces, one product. The Kasava web app is where you create plans and view dashboards. The Claude Code plugin gives you those plans + intelligence inside your IDE. The CLI is the terminal-first companion β€” useful for CI cron, post-merge git hooks, scripts, and headless workflows.

Commands

The --ai flags on sync and ask are opt-in and consume Kasava credits.

Install

From source:

Authenticate

1

Create an API key

Go to Settings β†’ API Keys in the Kasava web app and click Create API Key. The key is shown once β€” copy it before closing the dialog.
2

Save the token

The CLI verifies the token against GET /api/products, then writes it to ~/.kasava/credentials at mode 0600.For CI / non-interactive use: export the token as an environment variable.
The CLI prefers KASAVA_TOKEN over the saved file when both are present.
3

Optional: source the token into your shell

Once you’ve run kasava login, you can export KASAVA_TOKEN to all subprocesses with:
The same key works in the Claude Code plugin β€” paste it once into the plugin’s userConfig field.

Bind a repo

Run inside any git repository whose origin remote is linked to a Kasava product.
What happens:
  1. Detect the repo β€” reads git remote get-url origin and parses owner/name.
  2. Match against your products β€” checks linked repositories on each product, matches by fullName, htmlUrl, or cloneUrl.
  3. Disambiguate β€” if multiple products link the repo (e.g., a monorepo backing several), the CLI prompts you to pick. Pass --product-id <id> to skip detection.
  4. Write the artifact β€” creates .kasava/config.json, .kasava/PRODUCT_MAP.md placeholder, and .kasava/plans/.
The CLI does not install anything in ~/.claude/. The Claude Code plugin owns Claude Code state; install it separately with /plugin install kasava@kasava-dev.

What .kasava/ looks like after kasava sync

The default .kasava/.gitignore keeps secrets and large caches local while letting the synthesized overview, plans, graph, and work breakdowns ride along with your code so teammates inherit the context.

Sync

Without --ai, sync is deterministic and free. With --ai, the backend appends three synthesized sections to PRODUCT_MAP.md β€” god items, surprising links, suggested questions β€” via a single Haiku call.

Read a plan

Resolves by exact slug, exact title, then partial match across .kasava/plans/. Each plan markdown carries an β€œView in Kasava β†’ app.kasava.dev/products/…/initiatives/…” header so you can pivot to the web app at any time.

Ask the artifact

Default mode is offline keyword search across .kasava/PRODUCT_MAP.md, plans/*.md, symbols.json, and graph.json. With --ai, the CLI streams an answer from a focused Haiku agent that has product graph + symbol + doc-search tools.

Per-file context

ownership queries /repositories/:id/ownership/file (commit history; CODEOWNERS-aware once that data is indexed). rationale queries /repositories/:id/rationale and returns inline annotated comments (TODO / FIXME / HACK / NOTE) plus any published plans, specs, or decision docs that reference the file via document_code_references.

Staleness + decisions

Decision types: architecture, technology, feature, process, scope. Default is feature. Each successful add returns a deep link to app.kasava.dev/products/<id>/decisions/<id>.

Reference

Commands

Environment variables

File locations

The CLI does not write anywhere else under ~/.claude/. That’s the Claude Code plugin’s job.

Troubleshooting

Run kasava install from inside a git repository that has an origin remote pointing at GitHub. If you only have a local repo, add a remote first or pass --product-id <id> to skip detection.
Add the repository to a Kasava product first (Products β†’ your product β†’ Repositories), then re-run kasava install. The CLI matches on fullName, htmlUrl, and cloneUrl, so any of those will work.
A monorepo can back several Kasava products. The CLI prompts you to pick interactively; pass --product-id <id> to bind without prompting, or -y to refuse to guess and exit.
The token format looked right but the API rejected it. Generate a fresh key at Settings β†’ API Keys. If your organization uses a non-default API URL, pass --api-url to kasava login or set KASAVA_API_URL.
kasava sync --ai and kasava ask --ai both consume credits. Visit Settings β†’ Billing to top up, or drop --ai for free deterministic / offline behavior.
kasava uninstall only manages the local .kasava/ artifact. To disable the plugin, run /plugin disable kasava inside Claude Code.