A GitHub-CLI-style command-line tool for Zensu — manage products, features, and authentication from your terminal. Cross-platform (Linux / macOS / Windows).
The CLI is a thin client over the Zensu REST API and the OAuth 2.0 + PKCE subsystem. It works against the hosted service and any self-hosted deployment.
No Go toolchain required for any option except the last two.
brew install --cask mkitconsulting/tap/zensuTaps MKITConsulting/homebrew-tap and installs the latest release. Upgrade with
brew upgrade --cask zensu. The macOS binary is signed with an Apple Developer ID
and notarized by Apple, so it runs without a Gatekeeper prompt.
curl -fsSL https://zensu.dev/install.sh | shInstalls the latest release binary to /usr/local/bin. Override with
ZENSU_INSTALL_DIR=..., pin a version with ZENSU_VERSION=vX.Y.Z.
irm https://zensu.dev/install.ps1 | iexInstalls the latest release to %LOCALAPPDATA%\Programs\zensu and adds it to your
user PATH (restart the terminal afterwards). Override with $env:ZENSU_INSTALL_DIR,
pin a version with $env:ZENSU_VERSION. Only amd64 is published; on Windows arm64
it installs the amd64 build, which runs under emulation.
Download the archive for your OS/arch from the
releases, extract, and put
zensu on your PATH. Each release ships tar.gz (Linux/macOS), zip
(Windows), and a ..._checksums.txt.
docker run --rm ghcr.io/mkitconsulting/zensu-cli:latest --helpgo install github.com/MKITConsulting/zensu-cli/cmd/zensu@latestmake build # -> bin/zensu
make install # -> $GOBIN/zensuTo update, re-run whichever method installed zensu — each one overwrites the
binary in place with the latest release:
curl -fsSL https://zensu.dev/install.sh | sh # Linux / macOS
irm https://zensu.dev/install.ps1 | iex # Windows / PowerShell
go install github.com/MKITConsulting/zensu-cli/cmd/zensu@latest
docker pull ghcr.io/mkitconsulting/zensu-cli:latestzensu checks GitHub for a newer release at most once every 24 hours and, when
one exists, prints a one-line hint to stderr after your command finishes. The
check is cached, never blocks the command, and is automatically skipped in
non-interactive contexts (pipes, redirects, CI). Opt out entirely by setting
ZENSU_NO_UPDATE_CHECK (or the conventional NO_UPDATE_NOTIFIER).
# Browser login (OAuth2 + PKCE, opens your browser)
zensu auth login
# Non-interactive / CI: log in with an API key
zensu auth login --with-token zsk_xxx
echo "$ZENSU_API_KEY" | zensu auth login --with-token -
zensu auth status # who am I, token expiry
zensu auth token # print the token for scripting
zensu auth logoutCredentials are stored in hosts.json under the config dir (resolved as
$ZENSU_CONFIG_DIR, else $XDG_CONFIG_HOME/zensu, else ~/.config/zensu) with
0600 permissions.
Point the CLI at any Zensu deployment:
zensu --api-url https://zensu.internal.example.com products list
# or
export ZENSU_API_URL=https://zensu.internal.example.comOAuth endpoints are discovered via /.well-known/oauth-authorization-server
(falling back to /oauth/authorize + /oauth/token).
Commands are grouped by resource. Run zensu <group> --help for the subcommands
and flags of each group.
| Group | Manages |
|---|---|
auth |
Authenticate zensu with a Zensu host (see Authentication) |
products |
Products |
features |
Features |
subfeatures |
Sub-features of a feature |
tiers |
Pricing tiers and per-feature tier availability |
roadmap |
Product roadmaps |
journeys |
User journeys |
security |
Feature security classification, tests, reviews, and posture |
ghost |
Ghost scans and feature candidates |
pulse |
Development sessions |
link |
Link tests, docs, and source files to a feature |
knowledge |
Search and inspect the organization's knowledge pool |
design |
Inspect a product's design system |
mocks |
Inspect a feature's design mocks |
wiki |
Wiki pages |
org |
Inspect the organization |
doc |
Generate documentation context and CLAUDE.md templates |
meta |
Agent integration and workflow guidance helpers |
completion |
Shell completion scripts (see Shell completion) |
Pulse treats the server-side privacy setting as authoritative. When tracking is
disabled, zensu pulse start and zensu pulse end succeed as no-ops and explain
that nothing was recorded. With --json, they preserve the machine-readable
{"status":"tracking_disabled"} response so integrations can skip follow-up
commands when no session id was created. Agent integrations should use
--minimal-json, which returns only id or status and omits user, organization,
project-path, changed-file, and feature metadata. Failures in minimal mode use
stable local messages and never reflect remote response data. Pulse session
arguments and enabled responses must contain canonical UUIDs; pulse end also
requires the response id to match the requested session. Pass changed paths with
one --changed-file <path> per file so commas and surrounding whitespace remain
part of the filename; the legacy comma-separated --changed-files flag remains
available for compatibility.
A typical products / features flow:
zensu products list
zensu products get <product-id>
zensu products create --name "My Product" --type public # public | internal | hybrid
zensu features list --product <product-id> [--status testing]
zensu features get <feature-id>
zensu features create --product <product-id> --component <component-id> --title "Login" [--slug login]
zensu features update <feature-id> --title "New title" [--description ... --priority ...]
zensu features status <feature-id> testing--slug is derived from --title when omitted. Add --json to typed commands
for raw output.
zensu generates completion scripts via zensu completion <bash|zsh|fish|powershell>.
Each shell needs its completion system enabled before the script is installed —
on macOS the default zsh ships with completion disabled, which is the usual
reason zensu <TAB> does nothing.
zsh — do all three steps (step 1 is the one most setups are missing):
# 1) enable completion once (skip if ~/.zshrc already calls compinit)
echo 'autoload -Uz compinit; compinit' >> ~/.zshrc
# 2) install the completion
zensu completion zsh > "$(brew --prefix)/share/zsh/site-functions/_zensu"
# 3) restart the shell
exec zshCompletions still missing? Clear the stale cache: rm -f ~/.zcompdump*; exec zsh.
bash (needs the bash-completion package):
echo 'source <(zensu completion bash)' >> ~/.bashrcfish:
zensu completion fish > ~/.config/fish/completions/zensu.fishPowerShell (Windows) — append to your profile:
zensu completion powershell >> $PROFILERun zensu completion <shell> --help for the full per-shell instructions.
API base URL: --api-url flag → ZENSU_API_URL → stored host → https://api.zensu.dev.