🚀 v0.4.0 is out — Windows support! Native notifications, clipboard, and background service. Read the changelog →
developer tool for teams

Webhook notifications
to your terminal and desktop

Get desktop notifications and a live terminal feed from Stripe, GitHub, Sentry, and anything else that sends webhooks. Share your setup with the whole team in one command.

$ curl -sSL dread.sh/install | sh
dread.sh - 0 events
Integrations

Connects to any webhook

Stripe GitHub Sentry Slack Discord Vercel Shopify Twilio Linear PagerDuty
GitLab Jira Intercom HubSpot Stripe GitHub Twilio Linear Slack

Know the second something happens

When a payment fails, a deploy breaks, or an error spikes — you find out from a desktop notification, not 20 minutes later when a customer complains.

One feed, every service

Stripe, GitHub, Sentry, Slack, Linear — all in one terminal. No more switching between five dashboards to check if a webhook fired.

Instant reaction time

Desktop notifications the moment an event arrives. The faster you know something happened, the faster you fix it.

Whole team, one command

Set it up once. Teammates follow your workspace and get every channel — current and future. No per-person configuration.

How teams actually use it

Incident response

A Sentry error spikes at 2am. You get a desktop notification the second it fires — not 15 minutes later from a PagerDuty escalation. Open the TUI, inspect the payload, forward it to localhost, start debugging.

Payment monitoring

Stripe sends charge.failed on a high-value B2B invoice. You see it immediately instead of discovering it in the dashboard the next morning. Catch failed payments before customers churn.

Deploy pipeline

GitHub push → Vercel deployment.ready or deployment.error. The whole team sees deploys in real time without watching GitHub Actions or the Vercel dashboard.

Quick webhook testing

Just added a webhook to your app? Run dread init, paste the URL, trigger an event. Instantly see the full payload, headers, and status in your terminal — no Postman, no curl, no log digging. Test it works before you ship.

Local development

Building a webhook handler? dread --forward http://localhost:3000/webhook sends every real event to your local server. No ngrok, no tunnel config. Replay past events with one command.

Startups with no observability

No Datadog, no Grafana, no PagerDuty budget yet. Get webhook-driven awareness across every service for free with a single binary.

QA & staging verification

Someone pushes to staging. QA follows the team workspace and sees the GitHub push, the Vercel deploy, and any Sentry errors — all in one terminal.

Three commands. That's it.

Install, create a channel, paste the webhook URL into Stripe / GitHub / Sentry / anything. Desktop notifications start immediately.
1Install
curl -sSL dread.sh/install | sh
2Create a channel
$ dread new "Stripe Prod"

Created channel: Stripe Prod (ch_stripe-prod_a1b2c3)
Webhook URL:     https://dread.sh/wh/ch_stripe-prod_a1b2c3
3Wire up the webhook
# paste the URL into Stripe, GitHub, Slack, Linear...
# notifications start automatically
$ dread # open the TUI anytime

Share once, sync forever

A workspace is your set of channels. Teammates follow it with one command. Every channel you add later auto-propagates on their next reconnect.

Lead creates channels

Each dread new auto-publishes your workspace. No extra steps.

$ dread new "Stripe Prod"
Webhook URL: https://dread.sh/wh/ch_stripe...
Workspace published

$ dread new "GitHub Deploys"
Webhook URL: https://dread.sh/wh/ch_github...
Workspace published

Share your workspace

One ID covers all your channels — current and future.

$ dread share

Share this with your team:
  dread follow ws_a1b2c3d4e5f6

They'll get all your channels
(and any you add later).

Teammates follow once

One command subscribes to every channel in the workspace. New channels sync automatically on reconnect — no manual adding.

$ curl -sSL dread.sh/install | sh
$ dread follow ws_a1b2c3d4e5f6

Following workspace ws_a1b2... (3 channels):
  Stripe Prod        ch_stripe-prod_a1b2c3
  GitHub Deploys     ch_github-deploys_d4e5f6
  Sentry Alerts      ch_sentry-alerts_g7h8i9

New channels will sync automatically.

Everything you need, nothing you don't

No accounts, no config files, no environment variables. CLI or browser — your choice.

Desktop notifications

Native macOS, Linux & Windows with customisable sounds. Background or terminal.

Terminal TUI

Live feed of all webhook events with full payload inspection.

Team workspaces

Follow a workspace once. New channels auto-sync on reconnect.

Multiple channels

Separate channels per service — Stripe, GitHub, Slack, whatever.

Event filtering

Filter by source, type, or content in the TUI and watch mode.

Event history

Scroll back through past events, stored server-side.

Webhook forwarding

Forward events to localhost or any URL for local development.

Event replay

Re-forward any past event to a URL for debugging.

Auto-reconnect

Drops connection? Reconnects in 3s, picks up new channels.

Runs at login

Installs as a launchd/systemd service. Starts automatically.

Works with everything

Auto-detects 60+ sources — Stripe, GitHub, Vercel, and more. Just paste the URL.

Web dashboard

View live events in the browser — no install needed.

Slack / Discord

Forward events as rich messages to Slack or Discord channels.

Export & Digest

Export events as JSON/CSV. Get daily digest summaries by source.

Status page

Public status page per workspace with live freshness indicators.

Mute & Alerts

Mute noisy channels. Set threshold alerts for event spikes.

Bookmarks & Diff

Star important events. Auto-diff consecutive payloads from the same source.

Command palette

Ctrl+P for fuzzy-searchable command palette. Full keyboard navigation.

Stats & Swimlane

Source breakdown, status charts, heatmap, and per-source swimlane timeline.

Desktop notifications

Native desktop alerts the moment a webhook arrives. macOS, Linux, and Windows.

Commands

Basics
dread                       # launch TUI
dread new "Stripe Prod"     # create a channel
dread list                  # show channels + URLs
dread logs                  # print recent events
dread status                # channels + service info
Team
dread share                 # print workspace ID
dread follow <ws-id>        # follow a workspace
dread unfollow <ws-id>      # unfollow
dread add <id> "Name"       # add single channel
dread remove <id>           # remove a channel
Notifications
dread service install        # background service
dread service uninstall      # remove service
dread watch                  # headless mode
dread watch --filter stripe  # filtered
dread watch --slack <url>    # forward to Slack
dread watch --discord <url>  # forward to Discord
dread mute <id>              # silence a channel
dread unmute <id>            # unmute a channel
Data & Alerts
dread digest                # event summary (24h)
dread digest --hours 8      # custom window
dread alert add <p> <n> <m> # threshold alert
dread alert list            # list rules
dread alert remove <idx>    # remove a rule
Development
dread --forward http://...  # forward to local
dread --filter payment      # filter TUI
dread test <id>             # send test event
dread replay <event-id>     # re-forward event