Skip to content

Command-line interface

The smplkit CLI (smplkit) is a thin imperative shell over the platform's management API. It manages the same resources the SDKs do — configurations, feature flags, audit forwarders, loggers, log groups, environments, and services — and shares one credential resolver with them, so an existing ~/.smplkit profile works against the CLI with zero extra setup.

Install

Pre-built binaries for Linux, macOS, and Windows are published on every release at github.com/smplkit/cli/releases. Pick the archive for your OS and arch, extract smplkit, and put it on your PATH. A multi-arch container image is also published to GHCR at ghcr.io/smplkit/cli.

To build from source:

bash
go install github.com/smplkit/cli@latest

Authenticate

The CLI reads credentials from the same sources as the SDKs, in the same precedence (lowest → highest):

  1. Defaults.
  2. ~/.smplkit — INI: [common] overlaid by the selected profile.
  3. SMPLKIT_* environment variables.
  4. Global flags.

If you've already configured ~/.smplkit for the SDKs, you're done.

Command model

Noun-verb. Each noun maps to one management namespace; each verb maps to a method on it:

NounManages
flagfeature flags
configconfiguration resources
loggerloggers
log-grouplog groups
envenvironments
serviceservices
audit forwarderSIEM forwarders

Five universal verbs apply to every noun:

  • list — paginate (--limit, --all).
  • get <key> — fetch a single resource.
  • create <key> — new resource; scalar flags or -f file.json.
  • set <key> — read-modify-write: GET → apply edits → PUT the whole thing back. There is no PATCH on the platform — the set verb is the only update path, and it always replaces the resource in full.
  • delete <key> — confirms unless --yes / -y.

Global flags

--api-key                       API key (overrides SMPLKIT_API_KEY / ~/.smplkit)
--profile                       ~/.smplkit profile (default: default)
-e, --env                       smplkit environment (overrides SMPLKIT_ENVIRONMENT / ~/.smplkit)
-o, --output  table|json|yaml   output format (default: table)
    --quiet                     identifiers only — useful in xargs / loops
    --no-color                  disable ANSI color

--env is required just-in-time, on commands that read or write per-environment values (flag set --enabled, config set --env-value, logger set --level). Commands that work with base/definition values need no environment.

Examples

bash
# Flip a feature flag on for one environment
smplkit flag set checkout_v2 --enabled --env production

# Set a configuration item, parsed as a number
smplkit config set billing --item retry_count=3 --item-type number

# Override that item just for staging
smplkit config set billing --env staging --env-value retry_count=1 --item-type number

# Bump a logger to DEBUG for one environment
smplkit logger set sqlalchemy.engine --level DEBUG --env staging

# Round-trip a forwarder definition through your editor
smplkit audit forwarder get siem -o json > siem.json
$EDITOR siem.json
smplkit audit forwarder set siem -f siem.json

# Scripting: list every flag's id, one per line
smplkit flag list --all --quiet | while read id; do echo "flag: $id"; done

Output

-o table (the default) is a human-readable column layout. -o json and -o yaml emit the resource's attributes — not a JSON:API envelope — so you can pipe directly into jq, yq, or feed it back into set -f file.json to round-trip changes.

Pagination

list accepts --limit (page size) and --all (auto-paginate to exhaustion). Without --all, one server-default page is returned.

Errors

The CLI surfaces JSON:API error arrays from the server verbatim — a 402 returns the entitlement and upgrade path, a 401 returns credential guidance, a 404 names the missing resource. The exit code is non-zero on any failure.

Self-documentation

Every command supports --help:

bash
smplkit --help
smplkit flag set --help
smplkit audit forwarder create --help

Source

The CLI lives on GitHub at smplkit/cli.