CLI
Manage licenses from your terminal, script it in CI, and let an AI assistant use Kora.
kora puts your Kora server in your terminal. Every command works in scripts with --json and --yes, and kora mcp lets AI coding assistants manage licenses and add license checks to your code.
Install
curl -fsSL https://raw.githubusercontent.com/zerodev-ca/Kora-CLI/main/install.sh | shThe script picks the build for your system, checks it against checksums.txt and installs to /usr/local/bin, or ~/.local/bin when that is not writable, and adds that folder to your shell's PATH when it is missing. On Windows, download kora_windows_amd64.exe from the latest release, rename it to kora.exe and put it on your PATH. With Node.js 20 you can also run npm install -g @zerodev-ca/kora-cli.
Sign in
Create a token on the API Tokens page with the scopes you need, then run:
kora login --url https://api.example.comSeveral servers can be saved. kora accounts lists them, kora switch picks one and --account NAME runs one command as another. Accounts are stored with mode 0600 in ~/Library/Application Support/kora/config.json on macOS, ~/.config/kora/config.json on Linux and %AppData%\kora\config.json on Windows.
Commands
| Command | What it does |
|---|---|
kora licenses [--status S] [--product P] [-s TEXT] [--reveal] | List licenses, keys masked. |
kora licenses show LICENSE | Details, seats and recent checks. |
kora licenses issue --product P --email E [--policy P] [--name N] [--key K] [--expires DATE] | Issue a license, creating the customer when the email is new. A policy fills in its expiry, max machines and addons. |
kora licenses suspend | revoke | reinstate LICENSE | Change the status. |
kora licenses download LICENSE [-o FILE] | Save the signed offline file. |
kora products, kora products create NAME | List or create products. |
kora policies [--product P], kora policies create NAME --product P | List policies with their license counts, or create one with --type, --machines, --duration and --unit. |
kora customers [-s TEXT], block, unblock, merge | Search, block and merge customers. |
kora rules, kora rules add, kora rules remove | Manage access rules. |
kora stores, kora purchases | Connected stores and their purchases. |
A license can be named by its full key, the start of its key, the email of a customer with one license, or its id.
Test like your product does
| Command | Exit code |
|---|---|
kora validate --key KEY [--product P] [--fingerprint ID] | 0 valid, 1 rejected, 2 Kora unreachable |
kora activate --key KEY | The same, after taking a seat for this machine |
kora deactivate --key KEY | 0 when a seat was freed |
kora verify-offline --file FILE [--public-key FILE] | 0 when the signature and dates are good |
kora fingerprint | Prints this machine's id, sent as hwid |
Scripts and CI
export KORA_URL=https://api.example.com KORA_TOKEN=kora_...
KEY=$(kora licenses issue --product "My Plugin" --email [email protected] --json | jq -r .key)
kora licenses revoke "$KEY" --yes--json prints the API's data with keys unmasked. Commands that change something ask first in a terminal and need --yes in scripts. KORA_CONFIG moves the account file, KORA_PUBLIC_KEY feeds verify-offline and NO_COLOR turns colors off.
AI assistants
claude mcp add kora -- kora mcpkora mcp speaks the Model Context Protocol over stdio with the signed-in account. Its tools list and issue licenses, change statuses, manage products, policies, customers and access rules, validate keys and return SDK snippets for every SDK. Give it a token with only the scopes it needs.