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 find
Section titled “kis 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.ai find -i ./input “confidence > 0.95” kis.ai find -i ./input “document_type = ‘1003’” kis.ai find -i ./input “status != ‘failed‘“
Recursive search
Section titled “Recursive search”kis.ai find -r -i ./input “status = ‘failed‘“
Logical operators
Section titled “Logical operators”kis.ai find -i ./input “status == ‘done’ and confidence > 0.9” kis.ai find -i ./input “doc_type == ‘W2’ or doc_type == ‘1099‘“
Nested fields
Section titled “Nested fields”kis.ai find -i ./input “metadata.pages > 10”
String operations
Section titled “String operations”kis.ai find -i ./input “error_message contains ‘timeout’” kis.ai find -i ./input “status in [‘pending’, ‘processing’]“
Nil checks
Section titled “Nil checks”kis.ai find -i ./input “errors != nil”
Array operations
Section titled “Array operations”kis.ai find -i ./input “len(pages) > 5” kis.ai find -i ./input “any(pages, {.confidence > 0.9})“
kis 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 query
Section titled “kis query”Run predefined or custom jq queries against JSON classification results.
Examples:
List available queries
Section titled “List available queries”kis.ai query —list
Run summary query on all files in quality/
Section titled “Run summary query on all files in quality/”kis.ai query summary -i ./quality
Run totals and save to file
Section titled “Run totals and save to file”kis.ai query totals -i ./quality -o totals.json
Export CSV for spreadsheet
Section titled “Export CSV for spreadsheet”kis.ai query by-doctype -i ./quality -o breakdown.csv
Run custom inline query
Section titled “Run custom inline query”kis.ai 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.ai query -i ./quality —meta —raw ’[.[] | {actual: ._filestem, inferred: .results[0].hierarchical.doc_type}]‘
Use custom queries file
Section titled “Use custom queries file”kis.ai query my-query -i ./quality —queries ./my-queries.yaml
kis 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 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]