Kora/CLI

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 | sh

The 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.com

Several 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

CommandWhat it does
kora licenses [--status S] [--product P] [-s TEXT] [--reveal]List licenses, keys masked.
kora licenses show LICENSEDetails, 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 LICENSEChange the status.
kora licenses download LICENSE [-o FILE]Save the signed offline file.
kora products, kora products create NAMEList or create products.
kora policies [--product P], kora policies create NAME --product PList policies with their license counts, or create one with --type, --machines, --duration and --unit.
kora customers [-s TEXT], block, unblock, mergeSearch, block and merge customers.
kora rules, kora rules add, kora rules removeManage access rules.
kora stores, kora purchasesConnected 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

CommandExit code
kora validate --key KEY [--product P] [--fingerprint ID]0 valid, 1 rejected, 2 Kora unreachable
kora activate --key KEYThe same, after taking a seat for this machine
kora deactivate --key KEY0 when a seat was freed
kora verify-offline --file FILE [--public-key FILE]0 when the signature and dates are good
kora fingerprintPrints 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 mcp

kora 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.