AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Notifyd Deploy

skill-rmzlb-notifyd-notifyd-deploy · by rmzlb

Deploy and configure a notifyd instance (one Rust binary + Postgres) with Docker Compose or Dokploy — one instance per company, providers by environment variables (Resend, Cloudflare Email Service, SMTP, Telnyx, Twilio), fallback provider, pacing, public URL, admin and read-only keys, MCP access. Use when standing up notifyd, adding a provider, tuning rate limits, or diagnosing a deployment.

No reviews yet
0 installs
39 views
0.0% view→install

Install

$ agentstack add skill-rmzlb-notifyd-notifyd-deploy

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No 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.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-rmzlb-notifyd-notifyd-deploy)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
16d ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

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 →
Are you the author of Notifyd Deploy? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

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

  1. Create the compose service from docker-compose.yml of 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).

  1. Set the variables above, deploy, check GET /v1/health: status: ok,

commit equal to main.

  1. Create the company project: POST /v1/admin/projects with id, 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).

  1. Point the application at http://notifyd:3400 when it runs on the same

Docker network; give browsers the public URL only for the in-app stream.

  1. Run GET /v1/admin/digest (or the digest MCP 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/prometheus with the admin or read-only key as

bearer_token.

  • A push to main redeploys 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.

Versions

  • v0.1.0 Imported from the upstream source.