The Kasava CLI is the headless / scriptable / terminal-first surface for Kasava. It binds a local repository to a Kasava product and writes aDocumentation Index
Fetch the complete documentation index at: https://kasava.dev/docs/llms.txt
Use this file to discover all available pages before exploring further.
.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
--ai flags on sync and ask are opt-in and consume Kasava credits.
Install
Authenticate
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.
Save the token
GET /api/products, then writes it to ~/.kasava/credentials at mode 0600.For CI / non-interactive use: export the token as an environment variable.KASAVA_TOKEN over the saved file when both are present.Optional: source the token into your shell
Once you’ve run The same key works in the Claude Code plugin — paste it once into the plugin’s userConfig field.
kasava login, you can export KASAVA_TOKEN to all subprocesses with:Bind a repo
Run inside any git repository whoseorigin remote is linked to a Kasava product.
- Detect the repo — reads
git remote get-url originand parses owner/name. - Match against your products — checks linked repositories on each product, matches by
fullName,htmlUrl, orcloneUrl. - 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. - Write the artifact — creates
.kasava/config.json,.kasava/PRODUCT_MAP.mdplaceholder, and.kasava/plans/.
~/.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
| File | Commit? | Refreshed by |
|---|---|---|
config.json | no | kasava install |
PRODUCT_MAP.md | yes | kasava sync |
graph.json | yes | kasava sync |
work-items.json | yes | kasava sync |
symbols.json | no | kasava sync |
plans/*.md | yes | kasava sync |
.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
--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
.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
.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
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
| Command | Flags |
|---|---|
kasava login | --token … --api-url … --no-verify |
kasava logout | — |
kasava whoami | — |
kasava install | --product-id … -y --verbose |
kasava uninstall | --remove-artifact -y |
kasava sync | --no-symbols --symbols-limit N --ai --verbose |
kasava plan <name|slug|id> | --no-pager |
kasava ask "<q>" | --ai --limit N |
kasava staleness | --limit N --json |
kasava decisions add "<summary>" | --type <T> --rationale <R> --edit-rationale |
kasava ownership <file> | --days N --limit N --json |
kasava rationale <file> | --branch <name> --max-comments N --max-documents N --json |
kasava env | --shell bash|fish |
Environment variables
| Variable | Effect |
|---|---|
KASAVA_TOKEN | API key — takes precedence over ~/.kasava/credentials |
KASAVA_API_KEY | Alias for KASAVA_TOKEN |
KASAVA_API_URL | Override the API base (default https://api.kasava.dev) |
File locations
| Path | What lives there |
|---|---|
~/.kasava/credentials | Saved token (mode 0600) |
<repo>/.kasava/ | Per-repo product binding + cached context |
~/.claude/. That’s the Claude Code plugin’s job.
Troubleshooting
"Could not detect a git origin remote"
"Could not detect a git origin remote"
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."Searched N products but none have <repo> linked"
"Searched N products but none have <repo> linked"
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.Multiple products match my repo
Multiple products match my repo
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."Could not verify token: 401"
"Could not verify token: 401"
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."No credits remaining" on `--ai`
"No credits remaining" on `--ai`
kasava sync --ai and kasava ask --ai both consume credits. Visit Settings → Billing to top up, or drop --ai for free deterministic / offline behavior.I want to disable the Claude Code plugin
I want to disable the Claude Code plugin
kasava uninstall only manages the local .kasava/ artifact. To disable the plugin, run /plugin disable kasava inside Claude Code.