Install
$ agentstack add skill-rmzlb-notifyd-notifyd-deploy ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Deploying notifyd
Read docs/DEPLOYMENTS.md (topology, inventory, runbook) and docs/CONNECTORS.md (every variable). Principle: one instance per company, all from the same repository, everything specific in environment variables, never in the repo.
Minimal production environment
| Variable | Purpose | |---|---| | DATABASE_URL (or POSTGRES_PASSWORD with the bundled Postgres) | Postgres 16 | | JWT_SECRET | signs subscriber tokens and unsubscribe links (32+ random bytes) | | ADMIN_API_KEY | operator surface + MCP, full rights | | READONLY_API_KEY (optional) | digest, listings, metrics, read-only MCP tools | | EMAIL_PROVIDER + credentials | resend (RESEND_API_KEY), cloudflare (CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_EMAIL_API_TOKEN), smtp (SMTP_HOST…), agentmail, log (dev only) | | EMAIL_FROM, EMAIL_FROM_NAME | default sender, domain verified at the provider | | EMAIL_FALLBACK_PROVIDER + its credentials | second provider used on 429/5xx; same sender domain verified there too | | PUBLIC_URL | public base URL of the instance: hosts the one-click unsubscribe links | | CORS_ORIGINS | back-office origins allowed to open the in-app stream and call /mcp from a browser | | SMS_PROVIDER + SMS_FROM + TELNYX_API_KEY or TWILIO_* | optional SMS; TELNYX_WHATSAPP_API_KEY + WHATSAPP_FROM for WhatsApp | | EMAIL_RATE_PER_SEC (8), WORKER_MAX_ATTEMPTS (5) | pacing under the provider limit, attempts before failed |
Generate secrets with openssl rand -hex 32. Never write a value in a file tracked by git.
Steps
- Create the compose service from
docker-compose.ymlof this repository
(Dokploy: Compose, git source, branch main, autodeploy on; add a push webhook on the repository → /api/deploy/compose/ when the Dokploy instance has no GitHub App).
- Set the variables above, deploy, check
GET /v1/health:status: ok,
commit equal to main.
- Create the company project:
POST /v1/admin/projectswithid,name,
channels, from_email, from_name. Store the returned key as the application's NOTIFYD_API_KEY. Delete the seeded craie project on any instance that is not CRAIE's (DELETE /v1/admin/projects/craie).
- Point the application at
http://notifyd:3400when it runs on the same
Docker network; give browsers the public URL only for the in-app stream.
- Run
GET /v1/admin/digest(or thedigestMCP tool): the findings tell
you what is still missing (fallback provider, PUBLIC_URL, sender).
Operating rules
- Migrations run at boot and are additive; every instance migrates on the
same push. Never edit an applied migration.
- Replicas are allowed (SSE fans out through Postgres NOTIFY); pacing is per
replica: divide the provider limit by the replica count.
- Scrape
GET /v1/metrics/prometheuswith the admin or read-only key as
bearer_token.
- A push to
mainredeploys every instance within minutes: run
cargo test and docker build . before pushing.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: rmzlb
- Source: rmzlb/notifyd
- License: MIT
- Homepage: https://rmzlb.github.io/notifyd/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.