key-arg/statable-cli
Read and configure Statable web analytics from a terminal, a script or a CI step. Skills for a traffic check in CI and for pulling numbers into a report, built on the statable command.
Changelog
What changed for someone using statable, release by release. The commit
history has the reasoning; this file has the consequences.
Versions follow Semantic Versioning. Before 1.0 a minor release may add commands and flags but does not remove or rename them.
Unreleased
[0.4.4] — 2026-09-16
Added
- Windows installs through winget:
winget install KeyArg.Statable. The manifest is opened as a pull request against microsoft/winget-pkgs by the release itself, so it cannot drift from the artefacts it describes. - A Scoop bucket for Windows:
scoop bucket add statable https://github.com/key-arg/scoop-bucketthenscoop install statable.
[0.4.3] — 2026-09-16
Fixed
- A failed
checkno longer labels its own failureok. The line a person reads is nowresult: below the minimum of 100; scripts still readokin JSON and CSV, and the exit code is unchanged.
[0.4.2] — 2026-09-16
Fixed
- The image builds. One build context serves every platform, so the binary
lives under
$TARGETPLATFORM/rather than at the root of the context.
[0.4.1] — 2026-09-16
Fixed
- The container image 0.4.0 describes is actually published. The release that introduced it ran with an empty Docker Hub token, so the image build was skipped exactly as designed and the archives went out alone.
[0.4.0] — 2026-09-16
Added
-
A container image,
statable/statable, forlinux/amd64andlinux/arm64. It is the binary this release already built and signed, on distroless: no shell, no package manager, running as a non-root user.docker run --rm -e STATABLE_API_KEY statable/statable query \ --metric visitors,pageviews --range 7dA container has no keyring and no home directory to write to, so the key comes from
STATABLE_API_KEYand the CLI does not prompt.
Development
gen-docstakes-web,-manifestand-version, and writes the command reference published at statable.com/docs/cli/commands from the command tree. Release archives are unaffected.
0.3.0 — 2026-09-15
The whole Stats API, reading and writing.
Added
sites create,sites edit,sites deletegoals create,goals edit,goals deletefunnels create,funnels edit,funnels delete, with a step shorthand:page:/pricing,event:Signup,goal:9,scroll:90keys,keys create,keys rotate,keys revoke,keys eventssettings, andsettings set tracking|countries|blocked-ips|hostnames|public-dashboardauth register: create an account and a first key from an emailed code, without a browserSTATABLE_NO_KEYRING: skip the system keyring for one invocation, for containers and CI runners where waiting for it only times out
Changed
- Destructive commands (
sites delete,goals delete,funnels delete,keys rotate,keys revoke) ask first, name what they are about to change, and refuse without--yeswhere nobody can answer.
Every command and flag from 0.2.2 behaves as before.
0.2.2 — 2026-09-13
Fixed
- Releases publish the Homebrew cask again. 0.2.1 failed at that step.
0.2.1 — 2026-09-13
Fixed
- The mise instruction named the wrong binary. It is
mise use -g "ubi:key-arg/statable-cli[exe=statable]".
0.2.0 — 2026-09-10
Added
goals: the conversion goals defined on a sitesnippet: the install tag for a site, ready to paste
Security
- Built with Go 1.26.8. 0.1.0 was built with 1.26.3, which carries seven standard-library vulnerabilities on the path of every HTTPS request this client makes. Upgrade from 0.1.0.
0.1.0 — 2026-09-10
First release.
- Reading:
now,stats,series,top,query,props,funnels,funnel,subscription,sites,sites use check: assert a metric is within bounds; exit 3 when it is notapi call,api search,api describe: any endpoint, and the API's own description of itselfauth login,auth status,auth logout, with the key in the system keyring--format human|json|csvon every command, and exit codes a script can branch on: 0, 1 action required, 2 failed, 3 threshold, 64 bad command line- Archives for macOS, Linux and Windows on amd64 and arm64, with shell completions, man pages, an SBOM and a keyless cosign signature