Skip to main content

Hookstride CLI

A fast, colorful, read-only terminal for the Hookstride Control API. Inspired by the clarity of tools like Nmap, it keeps ordinary REST responses unchanged for apps and integrations.

Install

Once the first package release is available on PyPI, install with:

uv tool install hookstride-cli
hookstride --version
hookstride console

Alternative: pipx install hookstride-cli. Update with uv tool upgrade hookstride-cli. Requires Python 3.11 or newer. No checkout or Django backend installation is needed.

Authentication

In the Hookstride dashboard, generate an MFA-verified Control API / Management token, beginning with whrctl_. Do not use a whrk_ delivery API key, and never paste a token directly into commands or issue comments.

The CLI reads HOOKSTRIDE_CONTROL_TOKEN from your current shell; it does not persist tokens on disk. For a Bash/Zsh terminal, paste interactively without writing the token in your command history:

printf "Control token: "
read -rs HOOKSTRIDE_CONTROL_TOKEN
printf "\\n"
export HOOKSTRIDE_CONTROL_TOKEN

hookstride auth status

The token may remain in your shell environment until you run unset HOOKSTRIDE_CONTROL_TOKEN. Environment values may be inspectable by processes with the appropriate local privileges; use an ephemeral, limited-life management token. Avoid recording terminal sessions while entering secrets.

Explore development

hookstride status
hookstride auth status
hookstride projects list
hookstride projects use 00000000-0000-0000-0000-000000000000

hookstride destinations list
hookstride keys list
hookstride incoming sources
hookstride incoming routes
hookstride incoming bindings
hookstride incoming registration-keys
hookstride events list --status failed
hookstride events show 00000000-0000-0000-0000-000000000000
hookstride stats
hookstride billing status
hookstride billing history
hookstride config show

Replace the sample UUIDs with your own project/event IDs.

The CLI starts on https://api-dev.hookstride.voteeasy.net. Use --env production (before the command) to target https://api.hookstride.voteeasy.net; configure each environment with its own corresponding Control token. The apex https://hookstride.voteeasy.net serves the frontend. You can also use --api-url https://your-api-host for a custom origin, or HTTP on loopback for local testing.

Project selection is environment-specific. The only persisted data is a project UUID in ~/.config/hookstride/settings.json, owner-readable; not your credentials. Override temporarily with --project PROJECT_UUID.

Development checks

When the GitHub Actions runner is unavailable, run the same CLI tests locally without sending anything to the live Hookstride API:

bash cli/scripts/check.sh

This checks Python syntax, Ruff, isolated unit tests using mocked HTTP responses, and basic commands. A successful local run is not a substitute for a live read-only smoke test against the deployed development API.

Tables use compact, borderless columns. Identifiers and long URLs are shortened only when necessary to fit the terminal; the actual API response is not changed. Use --json to copy complete project IDs, payment references and destination URLs.

Interactive operator console (v0.2)

Start a lightweight, Metasploit-inspired, read-only interactive console:

hookstride console

The shell starts on the development API by default. Enter help for available commands, use Tab for completion, Ctrl+C to cancel the current line, and Ctrl+D or exit to close the console.

HOOKSTRIDE CONSOLE v0.2
hookstride [dev] > auth login
Control token (hidden):
✓ Authenticated as developer@example.com
hookstride [dev] > show projects
Projects
========
Name        Workspace     Role   Plan    Project ID
----------  ------------  -----  ------  ------------------------------------
Production  Beta Testing  owner  flex    ddc21845-d0f1-49af-8d35-2719dc641f69

hookstride [dev] > use ddc21845-d0f1-49af-8d35-2719dc641f69
hookstride [dev:ddc21845] > show payments
hookstride [dev:ddc21845] > events list --status failed
hookstride [dev:ddc21845] > show destinations
hookstride [dev:ddc21845] > json events list
hookstride [dev:ddc21845] > back
hookstride [dev] > exit

This console accepts the existing read-only CLI commands, plus convenient show aliases, set env dev|production, use UUID, back, clear, history, and auth login|logout. projects use UUID and use UUID persist only the active project's UUID in local settings. The console does not support a shell escape, external processes, POST/DELETE operations, or purchases.

Token handling

auth login securely prompts for a Control API token via hidden input. Tokens are kept in memory for this console process only, are discarded at exit, are never written to a config or history file, and are never echoed. The console stores only a safe subset of commands in volatile arrow-key history; it never records tokens or arbitrary query/search strings.

You may also provide an existing token through environment variables:

# Use a development token with the default development console
export HOOKSTRIDE_DEV_CONTROL_TOKEN="…"  # do not put real secrets in shell history
hookstride console

# To start directly against production, explicitly select it
hookstride --env production console

For safest handling, prefer auth login over typing tokens in shell commands. For interactive environment changes, the generic legacy HOOKSTRIDE_CONTROL_TOKEN is never forwarded to another environment. Use auth login separately after set env production, or provide a matching HOOKSTRIDE_PRODUCTION_CONTROL_TOKEN token. This prevents a dev token from accidentally being sent to the production API.

The console requires a real interactive terminal and refuses --json console. For CI and scripting, use ordinary commands such as hookstride --json events list instead.

Output for scripts

Pass --json before the command:

hookstride --json projects list | jq .
hookstride --json events list --status failed | jq '.results'
hookstride --env production --json billing history

The raw structured response is printed to stdout without terminal formatting. Network and HTTP errors go to stderr and cause a nonzero exit status.

Scope

Version 0.2 includes interactive access to project, destination, incoming-source, delivery-stat, activity and billing reads. It does not yet create destinations, emit events, replay events, rotate credentials, or trigger payments. Those workflows require additional confirmation and integration tests before exposing them in a CLI. Server-side authorization, project scoping, and response redaction remain enforced by the Control API.

Do not store passwords, signing secrets, private keys, or Paystack keys in Hookstride CLI configuration.

Metadata

Release files for hookstride-cli 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hookstride-cli 0.2.0
File Size Uploaded Provenance Actions
hookstride_cli-0.2.0.tar.gz 34.0 kB With provenance Details for hookstride_cli-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for hookstride-cli 0.2.0
File Interpreter ABI Platform Actions
hookstride_cli-0.2.0-py3-none-any.whl Python 3 none any Details for hookstride_cli-0.2.0-py3-none-any.whl

Total release size: 51.7 kB

Release files / hookstride_cli-0.2.0.tar.gz

Download URL hookstride_cli-0.2.0.tar.gz
Size 34.0 kB
Tags Source
SHA-256 checksum
How to use checksums
9bf152b507d06366057778d2cb25df741439183a337583b2a6bc6994f56bee7d
BLAKE2b-256 checksum
How to use checksums
fc7971d2a91471fd80bd53afd5ed6badf8d49566e667da622a6afa95b15917db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

Release files / hookstride_cli-0.2.0-py3-none-any.whl

Download URL hookstride_cli-0.2.0-py3-none-any.whl
Size 17.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a914bd08c7a0a1c5c228a63022ba71b91b7c29b6a97b6a1bed88ffdaf5815ac4
BLAKE2b-256 checksum
How to use checksums
6973f7e98c5bc9d9cd529d970b0ba4c940e86893447dc16b34be2de9abedd101
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

Security for hookstride-cli 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for hookstride_cli-0.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page