Skip to content
Talk to our solutions team

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.

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.

Terminal window
# 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 it
kvm license activate <your-license-key>
kvm license status
# 3. Install the CLI bundle (kis + its plugins)
kvm install kis-cli
# 4. Verify
kis version

Components are grouped into bundles, install one to get a whole set:

Terminal window
kvm bundles # list available bundles
kvm list # list installed components
BundleWhat it installs
kis-cliAll kis.ai command-line tools (the kis CLI + plugins)
kis-platformComplete platform: BaaS + AI + dev tools
baas-core / baas-fullBackend-as-a-Service services (incl. iam.svc)
ai-fullAll 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:

Terminal window
kvm info <artifact> # detailed info for a component
kvm buckets # show available buckets from the embedded registry
kvm download <dir> # download components to a directory (without installing)
kvm update # update installed components
kvm self-update # update kvm itself
kvm uninstall <name> # remove a component

The full kvm command set: install, uninstall, update, self-update, list, bundles, buckets, download, info, env, license (activate, status), version.

Terminal window
which kis # → /Users/you/.kisai/bin/kis
kis version # CLI binary + every installed plugin version
kis --help # lists every top-level command

If 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 groupExamplesLogging flag
Corefind, query, test, cron, encrypt--log-level (+ --log-to, --log-format)
AIkis ai chat, kis ai embed-l, --loglevel
Data / Forgedb, write-entity, read-entity-l, --loglevel
Documents / Rulesrules, bbox, ocr, hocr2bbox-l, --loglevel
Dev toolingspec, 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.

Terminal window
kis ai chat --help # flags + examples for one specific command

Almost every command is built from the same five ideas. Learn them once and the whole CLI gets predictable.

Terminal window
kis <command> --help
kis <command> <subcommand> --help

Every example in these docs was generated from this help output.

Many commands accept repeatable variables:

Terminal window
kis flow -f release.yaml -v env=staging -v version=1.4.0

For AI commands specifically, a variable value can also pull from a file or from stdin, a small superpower you’ll use constantly:

Terminal window
-v docs=@./onboarding.txt # @file, substitute the file's contents
-v note=@- # @- substitute whatever is on stdin

3. 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}}:

prompts.yaml
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:

Terminal window
kis ai chat --prompt-file prompts.yaml --prompt summarize -v [email protected]

Workflow- and test-style commands read values from an environment file. One file can hold several named environments; pick one with -n:

env.yaml
default:
url: http://localhost:8080
staging:
url: https://staging.example.com
Terminal window
kis test -t tests/ -e env.yaml -n staging

Most commands can emit machine-readable JSON for piping into other tools:

Terminal window
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.

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.

Terminal window
kis env set model=opus-4.8 # set a default
kis ai chat "hello" # now uses model=opus-4.8
kis ai chat "hello" --model haiku # one-off override still wins
kis env list # show all defaults (dotted keys)
kis env get model # print one
kis env unset model # remove it
kis env path # where the file lives
kis env edit # open it in $EDITOR

Resolution order: explicit flag on the command line > kis env value > the flag’s built-in default. A dotted key nests in the file (log.levellog: {level: …}).

Terminal window
# 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 generated
kis ai chat --stream "Write a haiku about command lines"
# Generate some throwaway test data
kis 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-run

Next: Core Concepts →, the platform’s mental model (spec, entities, tenancy). For the full command map, see the Introduction.