Core
Encryption, search, query, functional testing and scheduling. Captured from kis --help, so this matches the binary rather than describing it.
kis encrypt
Section titled “kis encrypt”Provides encryption facility of files using AES-256-CBC
kis encrypt [flags]| Flag | Purpose |
|---|---|
-i, --in string | Input file path |
-o, --out string | Output file path |
-k, --pass string | Passphrase to use |
kis decrypt
Section titled “kis decrypt”Provides decryption facility of files encrypted with AES-256-CBC
kis decrypt [flags]| Flag | Purpose |
|---|---|
-i, --in string | Input file path |
-o, --out string | Output file path |
-k, --pass string | Passphrase to use |
kis json find
Section titled “kis json find”Find searches JSON files in a directory for those matching an expression.
Uses expr language (https://expr-lang.org/) for powerful querying.
Examples:
Simple comparisons (= and == both work)
Section titled “Simple comparisons (= and == both work)”kis json find -i ./input “confidence > 0.95” kis json find -i ./input “document_type = ‘1003’” kis json find -i ./input “status != ‘failed‘“
Recursive search
Section titled “Recursive search”kis json find -r -i ./input “status = ‘failed‘“
Logical operators
Section titled “Logical operators”kis json find -i ./input “status == ‘done’ and confidence > 0.9” kis json find -i ./input “doc_type == ‘W2’ or doc_type == ‘1099‘“
Nested fields
Section titled “Nested fields”kis json find -i ./input “metadata.pages > 10”
String operations
Section titled “String operations”kis json find -i ./input “error_message contains ‘timeout’” kis json find -i ./input “status in [‘pending’, ‘processing’]“
Nil checks
Section titled “Nil checks”kis json find -i ./input “errors != nil”
Array operations
Section titled “Array operations”kis json find -i ./input “len(pages) > 5” kis json find -i ./input “any(pages, {.confidence > 0.9})“
kis json find [flags] "<expression>"| Flag | Purpose |
|---|---|
-c, --count | Only output count of matching files |
-i, --input string | Directory to search (default ”.”) |
-m, --meta | Inject _filename and _path variables into expression context |
-p, --pattern string | File pattern to match (default “*.json”) |
-q, --quiet | Only output filenames |
-r, --recursive | Search directories recursively |
-v, --show-value | Show the full JSON on match |
kis json query
Section titled “kis json query”Run predefined or custom jq queries against JSON classification results.
Examples:
List available queries
Section titled “List available queries”kis json query —list
Run summary query on all files in quality/
Section titled “Run summary query on all files in quality/”kis json query summary -i ./quality
Run totals and save to file
Section titled “Run totals and save to file”kis json query totals -i ./quality -o totals.json
Export CSV for spreadsheet
Section titled “Export CSV for spreadsheet”kis json query by-doctype -i ./quality -o breakdown.csv
Run custom inline query
Section titled “Run custom inline query”kis json query -i ./quality —raw ’[.[] | .total_pages] | add’
Include source filename metadata (_filename, _filestem, _path, _abspath)
Section titled “Include source filename metadata (_filename, _filestem, _path, _abspath)”kis json query -i ./quality —meta —raw ’[.[] | {actual: ._filestem, inferred: .results[0].hierarchical.doc_type}]‘
Use custom queries file
Section titled “Use custom queries file”kis json query my-query -i ./quality —queries ./my-queries.yaml
kis json query [query-name] [flags]| Flag | Purpose |
|---|---|
-f, --format string | Override output format (json, csv, table, raw, tsv) |
-i, --input string | JSON file or directory containing JSON files (default ”.”) |
-m, --meta | Inject _filename and _doctype from source filename |
-o, --output string | Output file (default: stdout) |
-r, --raw string | Run a raw jq query directly |
kis json validate
Section titled “kis json validate”Check that JSON files parse, match a schema, and satisfy the predicates a pipeline depends on. Exits non-zero when any file has an error.
kis json validate results.jsonkis json validate -i ./out -r # every .json underneathkis json validate -i ./out --json # machine-readable reportkis json validate -i ./out --schema s.json # every document must matchkis json validate -i ./out --require "confidence >= 0.9"Errors mean a file cannot be read — a syntax error is reported with its line, column and the surrounding text. Warnings mean it reads but probably not as intended; the notable one is a duplicate key, which is valid JSON that a decoder resolves silently by keeping the last occurrence.
--require takes the same expr language as kis json find, so a filter written
to locate bad files becomes the assertion that stops them being produced. It may
be repeated, and a malformed expression fails once at compile time rather than
once per file.
| Flag | Description |
|---|---|
-i, --input strings | File or directory to validate (repeatable) |
-r, --recursive | Descend into subdirectories |
--schema string | JSON Schema file every document must match |
--require stringArray | expr predicate every document must satisfy |
--json | Machine-readable report |
-q, --quiet | Print only files with problems |
--strict | Treat warnings as failures |
kis test
Section titled “kis test”Run tests against HTTP services.
By default, no files are written: results stream to the console and the process exits 0 (all passed) or 1 (any failure). Provide —db to also persist results to a DuckDB file for later querying.
When —env is omitted, atc auto-discovers an env file next to —tests:
env.local.yaml → env.yaml → env.
Multi-environment env files supported: top-level keys are environment names, each holding a map of variables. Select with —name. A flat top-level map (no env grouping) is also accepted.
Examples: atc test -t tests/data-api.yaml atc test -t tests/ (loads every *.yaml in dir; auto-discovers env) atc test -t tests/ -e env.staging.yaml (explicit env file) atc test -t tests/ -e env.yaml -n staging (multi-env file; pick “staging”) atc test -t tests/ —tags smoke atc test -t tests/ -v url=http://localhost:8080 -v password=secret atc test -t tests/ —db .atc/results.db —junit .atc/junit.xml atc test -t tests/ —use-guppi (route through guppi engine)
kis test [flags]| Flag | Purpose |
|---|---|
-e, --env string | environment YAML/JSON file (auto-discovered alongside —tests if omitted) |
-n, --name string | environment name within a multi-env env file (e.g. “staging”, “production”) |
-t, --tests string | path to a test YAML file or directory (required) |
-v, --vars strings | inline variables, key=value. Highest precedence. |
kis cron
Section titled “kis cron”Manage scheduled jobs using human-friendly schedules.
Jobs are stored in ~/.kisai/cron/jobs/ and installed to your platform’s scheduler (crontab on Linux, launchd on macOS, Task Scheduler on Windows).
Examples: kis.ai cron add backup daily at 2am — kis.ai backup run kis.ai cron add cleanup every 15 minutes — kis.ai jobs run cleanup kis.ai cron list kis.ai cron remove backup
kis cron [command]| Subcommand | Purpose |
|---|---|
add | Add a scheduled job |
history | Show execution history |
init | Initialize cron and validate setup |
list | List scheduled jobs |
logs | View job logs |
once | Run a command once at a specific time |
remove | Remove a scheduled job |
run | Run a job manually |
show | Show job details |
sync | Sync jobs between YAML and OS scheduler |
kis cron add
Section titled “kis cron add”Add a new scheduled job.
Schedule formats: every N minute(s) Run every N minutes every N hour(s) Run every N hours hourly Run every hour at :00 hourly at :30 Run every hour at :30 daily Run daily at midnight daily at 2am Run daily at 2am weekly on monday Run weekly on Monday weekly on monday at 9am Run weekly on Monday at 9am weekly on mon,thu at 3am Run on Monday and Thursday at 3am monthly on 1st Run on 1st of each month monthly on 15th at 3am Run on 15th at 3am
Time formats: 2am, 2:30pm, 14:00, noon, midnight Day formats: monday, mon, tue, …, weekday, weekend (comma-separated for multiple)
Environment: Jobs run through a login shell (-l) which sources your profile (.bashrc, .zshrc, etc). By default, PATH, HOME, USER, SHELL are also captured at add time for reliability.
—capture-env common Capture PATH, HOME, USER, SHELL (default) —capture-env all Capture all environment variables —capture-env PATH,GOPATH Capture specific variables —capture-env none Capture nothing (rely on login shell only) —env KEY=VALUE Set explicit value (overrides captured)
Examples: kis.ai cron add backup daily at 2am — kis.ai backup run kis.ai cron add cleanup every 15 minutes — kis.ai jobs run cleanup kis.ai cron add build daily at 3am — go build ./… kis.ai cron add sync weekly on mon,wed,fri at 6am — ./sync.sh kis.ai cron add deploy hourly —capture-env all — ./deploy.sh kis.ai cron add job1 daily at 2am —capture-env common,GOPATH — ./run.sh kis.ai cron add minimal daily —capture-env none — ./simple.sh
kis cron add <n> <schedule> -- <command...> [flags]kis cron history
Section titled “kis cron history”Show execution history
kis cron history [name] [flags]kis cron init
Section titled “kis cron init”Initialize cron directories and validate the platform scheduler.
This command is optional - directories are created automatically on first job add. Use this to validate your setup or troubleshoot issues.
kis cron init [flags]kis cron list
Section titled “kis cron list”List scheduled jobs
kis cron list [flags]kis cron logs
Section titled “kis cron logs”View job logs
kis cron logs <n> [flags]| Flag | Purpose |
|---|---|
-n, --lines int | Number of lines (default 50) |
kis cron once
Section titled “kis cron once”Schedule a command to run once and then automatically remove itself.
Time formats: now Run immediately (no scheduling) in N minutes Run N minutes from now in N hours Run N hours from now today at 2pm Run today at 2pm today at 14:00 Run today at 14:00 tomorrow at 9am Run tomorrow at 9am tomorrow at noon Run tomorrow at noon
Environment: —capture-env common Capture PATH, HOME, USER, SHELL (default) —capture-env all Capture all environment variables —capture-env PATH,GOPATH Capture specific variables —capture-env none Capture nothing (rely on login shell only)
Examples: kis.ai cron once now — kis.ai backup run kis.ai cron once in 5 minutes — kis.ai backup run kis.ai cron once in 2 hours — ./deploy.sh kis.ai cron once today at 11pm — ./nightly.sh kis.ai cron once tomorrow at 9am — ./morning.sh kis.ai cron once in 30 minutes —name my-deploy — ./deploy.sh
kis cron once <when> -- <command...> [flags]kis cron remove
Section titled “kis cron remove”Remove a scheduled job
kis cron remove <n> [flags]kis cron run
Section titled “kis cron run”Run a job manually with output to terminal.
kis cron run <n> [flags]kis cron show
Section titled “kis cron show”Show job details
kis cron show <n> [flags]kis cron sync
Section titled “kis cron sync”Sync jobs between YAML configuration and the OS scheduler.
By default, YAML is the source of truth. With —from-os, the OS scheduler is the source of truth.
kis cron sync [flags]kis version
Section titled “kis version”Display version of the CLI binary and all installed plugins
kis version [flags]