PoundCake is the monitoring and remediation control plane. It receives Alertmanager webhooks, plans remediation work, runs StackStorm-backed workflows, and manages communication state through a remote Bakery deployment.
- PoundCake API, workers, UI, and StackStorm stay in this repo.
- Bakery now lives in its own repo: rackerlabs/bakery.
- PoundCake talks to Bakery through the
bakeryservice plugin, its adapter-owned configuration contract, and its monitor HMAC credential.
./.venv/bin/pre-commit run --all-files
./.venv/bin/mypy api kitchen cli
helm lint ./helm
helm unittest ./helm --file 'tests/unittest/*_test.yaml'
./.venv/bin/pytest -m 'not integration' tests/ -v --cov=api --cov-report=xmlPoundCake CLI human auth is session-based. Operators authenticate with a username/password or device flow, PoundCake returns a session token, and the CLI stores that session for later API calls. This is distinct from internal service HMAC auth and from external plugin credentials.
The preferred executable name is cakectl. The legacy poundcake entrypoint
still points at the same CLI.
Operator flow:
# Admin grants the user an operator role binding first.
cakectl auth bindings create --provider local --type user --principal-id 42 --role operator
# Operator runs a normal CLI command with username/password once.
cakectl --url http://localhost:8080 --username alice --password secret auth me
# Later commands reuse the stored PoundCake session automatically.
cakectl --url http://localhost:8080 recipes listYou can also pass an explicit session token with --token or
POUNDCAKE_TOKEN.
PoundCake now installs only PoundCake:
./install/install-poundcake-helm.shIf you need communications, deploy Bakery separately from its standalone repo,
enable the bakery plugin, apply the Bakery bootstrap Secret, and point
bakery.client.* at the remote Bakery URL. See
docs/REMOTE_BAKERY.md:
config:
enabledPlugins: dummy,k8s,git,github,prometheus,alertmanager,bakery,stackstorm,genestack_monitoringThe corresponding Bakery deployment and install flow live in rackerlabs/bakery.
cakectl now exposes first-class typed surfaces for plugin contracts and
scheduled task controls:
cakectl --url http://localhost:8080 plugins list
cakectl --url http://localhost:8080 plugins show stackstorm
cakectl --url http://localhost:8080 plugins config show bakery
cakectl --url http://localhost:8080 plugins k8s prometheus-rules --namespace monitoring
cakectl --url http://localhost:8080 scheduled-tasks status --service-type stackstorm