Docker Sandboxes mixin adding Novu notification infrastructure (novu-py SDK; Cloud US, Cloud EU, sel
632
Adds Novu - the open-source notification infrastructure - to any agent: the novu-py SDK plus a proxy-managed secret key wired to the Novu Cloud US API (api.novu.co). The agent can trigger multi-channel workflows (email, SMS, push, chat, in-app) without the key ever entering the sandbox. Store it once with: sbx secret set novu.
| Name | Service | Required | Description |
|---|---|---|---|
NOVU_SECRET_KEY | novu | Required | Novu secret (API) key from Settings -> API Keys in the Novu dashboard |
pypi.org
files.pythonhosted.org
api.novu.co
sbx run <agent> --kit docker.io/ajeetraina777/sbx-novu-kits:latestRun the following command to install sbx on your machine.
brew install docker/tap/sbxwinget install Docker.sbxA standalone Docker Sandboxes kit
(kind: mixin, Schema v2) that gives any sandbox agent the ability to send
notifications through Novu, the open-source notification
infrastructure. It installs the official novu-py SDK and injects a
proxy-managed secret key, so the agent can trigger multi-channel workflows
(email, SMS, push, chat, in-app) without the key ever entering the sandbox.
Source and full docs: https://github.com/ajeetraina/sbx-kits-novu
| Tag | API | Data residency | Credential |
|---|---|---|---|
latest, cloud | api.novu.co | US | novu secret |
eu | eu.api.novu.co | EU | novu secret (EU account) |
self-hosted | http://host.docker.internal:3000 (editable) | your infra | novu secret |
The tags differ only in which Novu API they target. The key is never baked into
the kit; the sbx proxy injects it from the stored secret, so it never enters the
sandbox. sbx run has no -e flag by design.
Store your Novu secret key once, then launch. Cloud US (default):
echo "$NOVU_SECRET_KEY" | sbx secret set novu
sbx run --kit docker.io/ajeetraina777/sbx-novu-kits:latest claude
Cloud EU (key from an EU-region account):
echo "$NOVU_SECRET_KEY" | sbx secret set novu
sbx run --kit docker.io/ajeetraina777/sbx-novu-kits:eu claude
Self-hosted (Novu API on the host at :3000 by default):
echo "$NOVU_SECRET_KEY" | sbx secret set novu
sbx run --kit docker.io/ajeetraina777/sbx-novu-kits:self-hosted claude
Inside the agent session:
!python3 ~/runbooks/healthcheck.py # confirms reach + key
!python3 ~/runbooks/subscribers.py create alice --email [email protected]
!python3 ~/runbooks/notify.py welcome-email --to alice --payload '{"orderId":"A-42"}'
healthcheck.py and subscribers.py use only the Python standard library and
Novu's REST API; notify.py uses the novu-py SDK. The workflow you trigger
must exist in your Novu dashboard.
Each tag writes NOVU_API_URL, allows the matching API host through the sandbox
firewall, installs novu-py, and declares one proxy-managed credential
(NOVU_SECRET_KEY) whose Authorization: ApiKey <key> header the sbx proxy
injects on outbound Novu requests. No hand-editing required for the cloud tags;
the self-hosted tag defaults to host.docker.internal:3000 and is edited for
other deployments.
Per-deployment setup notes, validation steps, and the raw spec.yaml for each
tag live on GitHub:
https://github.com/ajeetraina/sbx-kits-novu/tree/main/providers