Durable event delivery
Events are written to PostgreSQL before fan-out begins, then delivered at least once. Operators can manually retry failed deliveries and replay full events.
Sparrow is an open-source, self-hosted webhook delivery server that persists events in PostgreSQL, fans them out to matching subscriptions, and delivers signed HTTP requests with classified retries. It is intended for teams building and operating their own event and webhook infrastructure.
Sparrow is an open-source, self-hosted webhook delivery server for systems that need to publish events to multiple HTTP consumers. Applications register event types and webhooks, push event occurrences through the REST API, and let Sparrow fan them out to matching subscriptions.
The server persists events in PostgreSQL before delivery begins, signs outbound requests, records delivery outcomes, and applies classified retries with backoff. It combines the delivery service, worker pipeline, embedded dashboard, and API documentation in one Go binary, with PostgreSQL as the required database.
Events are written to PostgreSQL before fan-out begins, then delivered at least once. Operators can manually retry failed deliveries and replay full events.
Sparrow distinguishes retryable failures, including 5xx responses, timeouts, 429 responses, and refused connections, from permanent failures such as many 4xx, DNS, and TLS errors.
Every delivery is signed using Standard Webhooks conventions. HMAC-SHA256 is the default; individual webhooks can use Ed25519 instead. Secrets are envelope-encrypted at rest with AES-256-GCM.
The delivery pipeline supports per-subscription Go-template transforms, per-webhook rate limits, webhook health tracking, and an audit trail of delivery attempts.
OpenTelemetry traces propagate through queue jobs, while structured logs and metrics can be exported through OTLP. The embedded dashboard shows delivery logs and per-webhook health.
The server is distributed as one Go binary with an embedded UI and PostgreSQL as its only core database dependency. River workers use the same database, and migrations run automatically at startup.
A product or backend can publish events such as `order.created` or `invoice.created` once and let Sparrow fan them out to every matching consumer webhook, without implementing a separate delivery queue.
Teams can expose a scoped, expiring consumer portal link so an individual consumer registers endpoints, browses the event catalog, and inspects or retries its own delivery logs without receiving an administrator API key.
Operators can use the delivery records, error categories, webhook health, traces, and replay or retry controls to diagnose an unavailable or misconfigured receiver and recover delivery.
A source can publish verified Stripe or GitHub webhooks, while recipe and sink satellites can connect events to destinations such as Slack, Discord, PagerDuty, ntfy, ClickHouse, SMTP, S3/MinIO, or OTLP logging.
Developers can run the CLI listener or webhook.site during integration work, inspect signed envelopes, preview recipe transforms in the browser, and use the REST API or embedded documentation to test workflows.
The documented local setup uses Docker Compose. Download the Compose file, run `docker compose up -d`, and open the web UI at `http://localhost:8080`. The Compose setup includes PostgreSQL and runs migrations automatically on startup. For production, the installation documentation says to configure a real encryption key and database rather than using the local evaluation defaults.
Register an event type, register a webhook with one or more event names, and then POST an event to the relevant consumer endpoint. Sparrow persists the event, matches subscriptions, creates deliveries, and sends signed HTTP POST requests in the background. Delivery status can be checked through the API or the embedded UI.
Sparrow delivers events at least once. Failed deliveries are classified into categories such as server errors, timeouts, rate limits, refused connections, DNS errors, and TLS errors. Retryable failures use exponential backoff, while permanent failures stop; operators can also retry deliveries manually and replay events.
By default, deliveries use HMAC-SHA256 with a per-webhook secret and Standard Webhooks headers. A webhook can instead use Ed25519, which recipients verify with a public key. Webhook secrets are envelope-encrypted at rest with AES-256-GCM.
Sparrow blocks private and metadata IP addresses by default as SSRF protection. Local evaluation can enable private-network delivery with `SPARROW_ALLOW_PRIVATE_NETWORKS=true`; the documentation also notes that the evaluation Compose file already enables this setting.
ByteAsk is a terminal-first AI coding agent for C and C++ that edits repositories and verifies changes with the real compiler, debugger, sanitizers, and tests before showing a diff. It offers a free tier plus paid plans, with editor connectors and zero-retention handling described in the source.
Epherem is a static security scanner for web apps built with AI coding tools such as Lovable, Bolt, v0, Replit, Cursor, and Claude Code. It checks source files and dependencies for common security mistakes, then provides categorized findings and suggested fixes without running the app.
CreateOS Sandbox is an isolated compute environment for running code and agent workloads inside Firecracker micro-VMs. It is designed for workflows that need machine-level isolation, private networking between sandboxes, and programmatic control through SDK, CLI, or MCP.
GitBot is a local browser-based workspace for creating reusable coding bots powered by Claude Code, Codex, or OpenCode. It helps developers run those agents across repository folders with persistent threads and configurable permissions.
hob is an independent workspace for coding agents that keeps agent sessions, terminals, history, and follow-up work organized around the tools and providers you already use. It is aimed at developers who want local control over routing, history, and workspace structure rather than a bundled model stack.
Ably Chat is a chat API platform for building custom realtime chat applications. It supports room-based messaging, typing indicators, presence, reactions, and message updates, with usage-based pricing options for different deployment stages.