Getting Started
This page takes you from zero to a working setup, install, verify, configure a
provider, log in, then the handful of conventions every command reuses. New to
kis? Start with the Introduction for the big picture and
the full command map.
Install with kvm
Section titled “Install with kvm”kis is installed and kept up to date by kvm, the kis.ai version manager.
kvm downloads platform components (the CLI tools and the backend services),
manages versions, and handles your license. It installs to ~/.kisai/bin/ by
default (personal), or system-wide to /usr/local/bin/ with --system.
# 1. Put ~/.kisai/bin on your PATH (kvm prints the right line for your shell)eval "$(kvm env)"# or persist it (zsh on macOS):kvm env >> ~/.zshrc && source ~/.zshrc
# 2. Activate your license, then confirm itkvm license activate <your-license-key>kvm license status
# 3. Install the CLI bundle (kis + its plugins)kvm install kis-cli
# 4. Verifykis versionComponents are grouped into bundles, install one to get a whole set:
kvm bundles # list available bundleskvm list # list installed components| Bundle | What it installs |
|---|---|
kis-cli | All kis.ai command-line tools (the kis CLI + plugins) |
kis-platform | Complete platform: BaaS + AI + dev tools |
baas-core / baas-full | Backend-as-a-Service services (incl. iam.svc) |
ai-full | All AI services |
You can also install a single component by name, e.g. kvm install iam.svc (the
IAM service) or kvm install baas/iam.svc to be explicit.
Inspecting & keeping current:
kvm info <artifact> # detailed info for a componentkvm buckets # show available buckets from the embedded registrykvm download <dir> # download components to a directory (without installing)kvm update # update installed componentskvm self-update # update kvm itselfkvm uninstall <name> # remove a componentThe full kvm command set: install, uninstall, update, self-update,
list, bundles, buckets, download, info, env, license (activate,
status), version.
Verify your install
Section titled “Verify your install”which kis # → /Users/you/.kisai/bin/kiskis version # CLI binary + every installed plugin versionkis --help # lists every top-level commandIf which kis prints nothing, ~/.kisai/bin isn’t on your PATH, re-run
eval "$(kvm env)" (above).
The mental model: one launcher, several plugins
Section titled “The mental model: one launcher, several plugins”This is the single most important thing to understand before you start, because it explains a convention you’ll meet in the first five minutes.
kis is not one monolithic program, it’s a launcher that dispatches to
several underlying plugin binaries. You always type kis …; you never call the
plugins directly. Because the plugins are built separately, their global flags
are not perfectly identical, most visibly, the flag that controls logging.
| Command group | Examples | Logging flag |
|---|---|---|
| Core | find, query, test, cron, encrypt | --log-level (+ --log-to, --log-format) |
| AI | kis ai chat, kis ai embed | -l, --loglevel |
| Data / Forge | db, write-entity, read-entity | -l, --loglevel |
| Documents / Rules | rules, bbox, ocr, hocr2bbox | -l, --loglevel |
| Dev tooling | spec, flow, script, yaml, code, login, services | --log-level |
The practical takeaway: when in doubt, --help the exact command you’re
running. Its flag list is always authoritative.
kis ai chat --help # flags + examples for one specific commandThe five conventions used everywhere
Section titled “The five conventions used everywhere”Almost every command is built from the same five ideas. Learn them once and the whole CLI gets predictable.
1. Help is always one flag away
Section titled “1. Help is always one flag away”kis <command> --helpkis <command> <subcommand> --helpEvery example in these docs was generated from this help output.
2. Variables, -v key=value
Section titled “2. Variables, -v key=value”Many commands accept repeatable variables:
kis flow -f release.yaml -v env=staging -v version=1.4.0For AI commands specifically, a variable value can also pull from a file or from stdin, a small superpower you’ll use constantly:
-v docs=@./onboarding.txt # @file, substitute the file's contents-v note=@- # @- substitute whatever is on stdin3. Prompt files, reusable, version-controlled prompts
Section titled “3. Prompt files, reusable, version-controlled prompts”Instead of pasting long prompts on the command line, store them in YAML as named
entries with a system and user part, using {{placeholders}}:
summarize: system: "You are a concise technical summarizer." user: "Summarize this for an engineer:\n{{content}}"Then call the named prompt and fill its placeholders:
4. Environments, -e env.yaml -n <name>
Section titled “4. Environments, -e env.yaml -n <name>”Workflow- and test-style commands read values from an environment file. One file
can hold several named environments; pick one with -n:
default: url: http://localhost:8080staging: url: https://staging.example.comkis test -t tests/ -e env.yaml -n staging5. JSON output, -j / --json
Section titled “5. JSON output, -j / --json”Most commands can emit machine-readable JSON for piping into other tools:
kis ai providers --json | jq '.[].name'These five, help, vars, prompt files, environments, JSON, recur on almost every page. The reference notes only the exceptions.
Set flag defaults once, kis env
Section titled “Set flag defaults once, kis env”Tired of typing -p openai -m gpt-4o every time? kis env stores flag
defaults in ~/.kisai/env.yaml. Keys are flag long-names exactly as shown in
--help (lowercase, no --), and a stored value simply becomes that flag’s default, still overridable on the command line.
kis env set model=opus-4.8 # set a defaultkis ai chat "hello" # now uses model=opus-4.8kis ai chat "hello" --model haiku # one-off override still wins
kis env list # show all defaults (dotted keys)kis env get model # print onekis env unset model # remove itkis env path # where the file liveskis env edit # open it in $EDITORResolution order: explicit flag on the command line > kis env value > the
flag’s built-in default. A dotted key nests in the file (log.level → log: {level: …}).
Your first commands
Section titled “Your first commands”# Ask a model a question (defaults to the local "ollama" provider)kis ai chat "What is kis.ai in one sentence?"
# Stream the answer as it's generatedkis ai chat --stream "Write a haiku about command lines"
# Generate some throwaway test datakis synthetic sentence -c 3
# Preview a safe, format-preserving edit to a YAML file (no write yet)kis yaml set --file config.yml --path '$.app.name' --value 'demo' --dry-runNext: Core Concepts →, the platform’s mental model (spec, entities, tenancy). For the full command map, see the Introduction.