- Go 81.8%
- Makefile 18.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
burhctl administers a burh identity provider from a terminal: run bare it opens a full-screen console, run with arguments it behaves as a quiet scriptable client. It speaks only the public API, so anything it can do, other tooling can do too. This lays the ground it will be built on: the command entry point and its version reporting, the quality gate every later change must pass, and the release pipeline that produces signed binaries. |
||
| cmd/burhctl | ||
| .gitignore | ||
| .golangci.yml | ||
| .goreleaser.yaml | ||
| go.mod | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
burhctl
burhctl administers a burh identity provider from a terminal, usually a remote one. Run it bare and it opens a full-screen console: a dashboard with a live event feed, user and group management, client registration, and an audit browser. Give it arguments and it becomes a quiet, scriptable client instead.
It speaks only the public HTTP API, so everything it can do, your own tooling can do too.
Status
Early development. The command set is being built against the API as that API lands.
Two ways to use it
burhctl # the console
burhctl login # device flow, no password pasted
burhctl get users --group staff -o json
burhctl create user --username eadric --email e@example.com
burhctl audit tail --actions 'login.*'
burhctl apply -f directory.yaml # idempotent, safe to re-run
Output comes as table, wide, json or yaml, and exit codes are
meaningful, so burhctl fits inside scripts and Ansible playbooks as
comfortably as it fits inside tmux.
The console
Navigation is modal in the vim sense: hjkl to move, / to filter,
g followed by a letter to jump between screens, and : for a fuzzy
command palette. Every palette entry names the equivalent command-line
verb, so the console teaches the client.
Colours follow Kanagawa Wave. Any slot can be overridden in
$XDG_CONFIG_HOME/burhctl/theme.toml.
Building
Go 1.26 or newer is required.
make build # bin/burhctl
make check # lint and tests
Linting uses golangci-lint and releases
are cut with GoReleaser; both are expected
on PATH. The version string comes from the git tag at build time.
Configuration
Connection details live in $XDG_CONFIG_HOME/burhctl/config.toml as
named contexts, so one binary can address several deployments:
burhctl ctx use prod
Credentials obtained by burhctl login are kept in
$XDG_STATE_HOME/burhctl.
Contributing
Patches are welcome. Guard clauses over nested conditionals, files well under 500 lines, lines wrapped at 72 columns, behaviour landing with a test, and Conventional Commits messages.
Licence
Apache-2.0. See LICENSE.