🚀 Now with AES-256-GCM encrypted secrets

Deploy notifications your
team will actually love

Connect GitHub, GitLab or Bitbucket and route beautiful Discord messages to the right channel — automatically, on every push or release.

Self-hosted & Docker-ready — your data, your infrastructure.

your-server.com/app
🚀 ZeroUpdates
📋 Deploys
🔀 Discord Routes
🔑 Secrets
Total
1,284
Sent
1,271
Failed
13
Queue
2
org/frontend main github sent
org/api-service release/2.1 gitlab sent
org/backend main bitbucket queued
3
Git providers supported
Routing rules
AES‑256
Secrets encryption
99.9%
Delivery success rate
Self‑hosted
Your data, your infra
Features

Everything your team needs
to stay in the loop

Purpose-built for developer teams that ship fast and want instant visibility into every deploy.

🔗

Multi-provider webhooks

Native support for GitHub, GitLab and Bitbucket. Validates HMAC-SHA256 signatures on every incoming request — no fake payloads get through.

💬

Rich Discord embeds

Automatic commit summaries, conventional-commit type detection (feat, fix, breaking changes), per-author credits and release changelogs — all in one beautiful embed.

🔀

Smart routing rules

Route notifications to different Discord channels based on repository, branch or event type using glob patterns. Production to #prod-deploys, staging to #staging — done.

📊

Delivery analytics

Track success rate, latency and top errors per route with selectable time windows. Quickly spot flapping webhooks and retry failed sends with one click.

🔑

Encrypted secrets at rest

Per-repository webhook secrets are stored with AES-256-GCM authenticated encryption. Set ENCRYPTION_KEY and every secret is protected — even if the database is leaked.

🐳

Docker-ready deployment

Production-grade docker-compose.yml with PostgreSQL, health checks, graceful shutdown and environment-variable configuration. Up in minutes.

🏷️

Release changelogs

Tag push events automatically generate a structured changelog grouped by commit type. Semver detection labels each release as major, minor or patch automatically.

Retry & rate limiting

In-memory job queue with exponential backoff retries respects Discord's rate limits. Global and per-webhook limiters protect your instance from replay flooding.

🔍

Route simulator

Test any combination of repository, branch and event type against your routing rules before deploying. Validate webhook URL connectivity from the dashboard.

Integrations

Works with the tools
you already use

No new accounts, no new tools. Just configure your existing webhook and you're done.

GitHub
GitLab
Bitbucket
Discord
Docker
PostgreSQL
How it works

Up and running
in three steps

No complex setup, no long onboarding. Add a webhook URL and start receiving notifications in minutes.

1

Deploy & configure

Run docker compose up -d, set your DISCORD_WEBHOOK_URL and DASHBOARD_API_KEY. The app starts with SQLite or PostgreSQL out of the box.

2

Register your webhook

In GitHub / GitLab / Bitbucket, point the webhook to your-server/webhooks/github. Add the shared secret for HMAC validation — or store it per-repo from the dashboard.

3

Ship & get notified

Push code. A rich Discord embed appears in the right channel within seconds — author, commits, conventional-commit summary and a direct link to the diff.

Pricing

Simple, transparent pricing

Start for free. Upgrade when your team needs more power.

Starter
$0 / month
Self-hosted. Forever free. Community support.
  • GitHub, GitLab & Bitbucket
  • 1 Discord webhook URL
  • Unlimited repositories
  • Basic deploy history
  • SQLite database
  • Advanced routing rules
  • Per-route analytics
  • Encrypted secrets
  • Priority support
Get on GitHub
Enterprise
Custom
Dedicated instance, SLA, custom integrations and team management.
  • Everything in Pro
  • SSO (SAML / OIDC)
  • Team management
  • Dedicated infrastructure
  • Custom retention policies
  • 99.9% uptime SLA
  • Priority Slack support
  • Custom integrations
  • On-premise deployment
Contact sales
FAQ

Frequently asked questions

Can I self-host NexusCMS Deploy for free?
Yes — the Starter plan is completely free and open source. Clone the repo, run docker compose up -d, and you're live. There are no feature limits in the self-hosted version for core webhook delivery.
Which databases are supported?
SQLite (default, zero config) and PostgreSQL. Switch between them by setting the DB_CLIENT and DATABASE_URL environment variables. The included docker-compose.yml starts a Postgres 16 container automatically.
How does secret encryption work?
Generate a 32-byte key (node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"), set it as ENCRYPTION_KEY in your environment, and every webhook secret stored in the database is encrypted with AES-256-GCM. Secrets are decrypted in memory only when validating incoming webhook signatures — they are never returned in plain text through the API.
Can I route deploys to multiple Discord channels?
Yes. Use the Discord Routes tab in the dashboard to create routing rules. Each rule matches a repository glob (e.g. org/*), a branch glob (e.g. release/*) and an event type (push / tag / all) — and sends to a specific Discord webhook URL. Rules are evaluated by priority and the first match wins.
What happens if Discord is temporarily unavailable?
Notifications are processed through an in-memory queue with exponential back-off retry logic (up to 3 attempts by default, configurable via DISCORD_MAX_RETRIES). Rate-limit (429) responses from Discord are respected automatically. Every attempt is recorded in the analytics table.
Is Node.js the only runtime required?
Yes. NexusCMS Deploy is a Node.js 22+ application. The Docker image handles the runtime so you don't need Node installed on the host — just Docker and Docker Compose.

Ready to ship with confidence?

Set up in under 5 minutes. No credit card required for the Starter plan.

Open dashboard → View pricing