Sparrow icon

Sparrow

Sparrowは、PostgreSQLにイベントを永続化し、購読先へ振り分け、署名付きHTTPリクエストを分類リトライで配信するオープンソースのセルフホスト型Webhook配信サーバーです。自社運用のイベント基盤構築に適しています。

Sparrow

耐久性のあるイベント処理によるセルフホスト型Webhook配信

Sparrowは、複数のHTTPコンシューマーにイベントを公開する必要があるシステム向けの、オープンソースのセルフホスト型Webhook配信サーバーです。アプリケーションはイベントタイプとWebhookを登録し、REST APIを通じてイベントの発生を送信すると、Sparrowが一致する購読先へ振り分けます。

サーバーは配信開始前にイベントをPostgreSQLへ永続化し、送信リクエストに署名し、配信結果を記録して、バックオフを伴う分類済みリトライを適用します。配信サービス、ワーカーパイプライン、組み込みダッシュボード、APIドキュメントを1つのGoバイナリに統合し、必須データベースとしてPostgreSQLを使用します。

主な機能

永続的なイベント配信

ファンアウトを開始する前にイベントがPostgreSQLへ書き込まれ、その後少なくとも1回配信されます。オペレーターは失敗した配信を手動で再試行したり、イベント全体をリプレイしたりできます。

分類されたリトライ

5xxレスポンス、タイムアウト、429レスポンス、接続拒否などのリトライ可能な失敗と、多くの4xxエラー、DNSエラー、TLSエラーなどの恒久的な失敗を区別します。

署名付きWebhook

すべての配信はStandard Webhooksの規約に従って署名されます。デフォルトはHMAC-SHA256で、個別のWebhookでは代わりにEd25519を使用できます。シークレットはAES-256-GCMでエンベロープ暗号化され、保存時に保護されます。

購読制御と配信記録

配信パイプラインは、購読ごとのGoテンプレート変換、Webhookごとのレート制限、Webhookの健全性追跡、配信試行の監査証跡に対応します。

運用状況の可視化

OpenTelemetryトレースはキュージョブを通じて伝播し、構造化ログとメトリクスはOTLP経由でエクスポートできます。組み込みダッシュボードには配信ログとWebhookごとの健全性が表示されます。

シンプルなセルフホスト型アーキテクチャ

サーバーは、UIを組み込んだ1つのGoバイナリとして配布され、コアデータベースの依存先はPostgreSQLのみです。Riverワーカーは同じデータベースを使用し、マイグレーションは起動時に自動実行されます。

実用的なユースケース

  • アプリケーションイベントのファンアウト

    プロダクトやバックエンドは、`order.created`や`invoice.created`などのイベントを一度公開し、別個の配信キューを実装することなく、Sparrowに一致するすべてのコンシューマーWebhookへ振り分けさせることができます。

  • コンシューマー管理によるWebhookオンボーディング

    チームは、スコープと有効期限を設定したコンシューマーポータルのリンクを公開できます。個々のコンシューマーは、そのリンクからエンドポイントを登録し、イベントカタログを閲覧し、自分の配信ログを確認または再試行できます。管理者APIキーを渡す必要はありません。

  • 障害調査と復旧

    オペレーターは、配信記録、エラーカテゴリ、Webhookの健全性、トレース、リプレイまたは再試行の制御機能を使って、利用できない、または設定に問題のある受信側を診断し、配信を復旧できます。

  • HTTPを超えたイベントルーティング

    ソースは検証済みのStripeまたはGitHub Webhookを公開し、recipeおよびsinkサテライトによって、イベントをSlack、Discord、PagerDuty、ntfy、ClickHouse、SMTP、S3/MinIO、OTLPロギングなどの宛先に接続できます。

  • ローカル開発とワークフローテスト

    開発者は、統合作業中にCLIリスナーまたはwebhook.siteを実行し、署名付きエンベロープを確認し、ブラウザでrecipe変換をプレビューし、REST APIまたは組み込みドキュメントを使ってワークフローをテストできます。

Pros and Cons

Pros

  • ファンアウト前にイベントが永続化され、少なくとも1回の配信、リプレイ、手動再試行に対応します。
  • すべての配信エラーを同じように扱うのではなく、失敗の種類に応じてリトライ動作を分類します。
  • 送信リクエストはHMAC-SHA256またはEd25519署名に対応し、Webhookシークレットは保存時に暗号化されます。
  • コアデプロイメントではRedis、Kafka、サイドカーキューを必要とせず、1つのGoバイナリとPostgreSQLを使用します。
  • OpenTelemetryトレーシング、OTLPエクスポート、構造化ログ、メトリクス、組み込みの配信ダッシュボードにより、運用上のトラブルシューティングを支援します。

Cons

  • Sparrowはセルフホスト型のため、チームはベンダー管理サービスを利用するのではなく、サーバーとPostgreSQLデータベースを運用する必要があります。
  • 文書化された本番環境のセットアップでは、データベースアクセスと暗号化キーの設定が必要です。シークレットを使用しないCompose設定は、ローカル評価を目的としています。
  • プライベートネットワークおよびメタデータネットワークの宛先はデフォルトでブロックされるため、ローカルまたは内部への配信には明示的な設定変更が必要です。

FAQ

Sparrowはどのようにインストールしますか?

Sparrowのドキュメント化されたローカルセットアップでは、Docker Composeを使用します。Composeファイルをダウンロードし、`docker compose up -d`を実行して、`http://localhost:8080`でWeb UIを開きます。ComposeセットアップにはPostgreSQLが含まれており、起動時にマイグレーションが自動実行されます。本番環境では、ローカル評価用のデフォルト値ではなく、実際の暗号化キーとデータベースを設定するよう、インストールドキュメントで説明されています。

Sparrowの基本的なワークフローはどのようなものですか?

イベントタイプを登録し、1つ以上のイベント名を指定してWebhookを登録した後、関連するコンシューマーエンドポイントにイベントをPOSTします。Sparrowはイベントを永続化し、購読先を照合して配信を作成し、署名付きHTTP POSTリクエストをバックグラウンドで送信します。配信ステータスはAPIまたは組み込みUIで確認できます。

Sparrowは失敗した配信をどのように処理しますか?

Sparrowはイベントを少なくとも1回配信します。失敗した配信は、サーバーエラー、タイムアウト、レート制限、接続拒否、DNSエラー、TLSエラーなどのカテゴリに分類されます。リトライ可能な失敗には指数バックオフが使用され、恒久的な失敗は停止します。オペレーターは配信を手動で再試行したり、イベントをリプレイしたりすることもできます。

Webhook配信はどのように認証されますか?

デフォルトでは、配信にWebhookごとのシークレットを使用したHMAC-SHA256とStandard Webhooksヘッダーが使われます。代わりにEd25519を使用することもでき、その場合、受信側は公開鍵で検証します。WebhookシークレットはAES-256-GCMでエンベロープ暗号化され、保存時に保護されます。

Sparrowはローカルまたはプライベートネットワークのエンドポイントに配信できますか?

SparrowはSSRF対策として、デフォルトでプライベートIPアドレスとメタデータIPアドレスをブロックします。ローカル評価では、`SPARROW_ALLOW_PRIVATE_NETWORKS=true`を設定してプライベートネットワークへの配信を有効にできます。ドキュメントには、評価用Composeファイルではこの設定がすでに有効になっていることも記載されています。

Quick Facts

カテゴリー
開発者向けツール / Webhookインフラストラクチャ
デプロイメント
PostgreSQLを使用するセルフホスト型Goサーバー
ライセンス
MIT
ランタイム
ソースからビルドする場合はGo 1.27+およびPostgreSQL 15+
配信モデル
バックグラウンドワーカーによる少なくとも1回の配信
API仕様
OpenAPI 3.1

Sparrowの代替品

ByteAsk icon

ByteAsk

ByteAskは、C/C++向けのターミナル起点AIコーディングエージェント。リポジトリを編集し、コンパイラやデバッガ、サニタイザ、テストで変更を検証してから差分を表示。無料枠あり。

Epherem icon

Epherem

Epheremは、Lovable、Bolt、v0、Replit、Cursor、Claude CodeなどのAIコーディングツールで構築したWebアプリ向け静的セキュリティスキャナーです。アプリを実行せず、ソースファイルと依存関係を検査し、一般的なセキュリティミスを分類して修正案を提示します。

CreateOS Sandbox icon

CreateOS Sandbox

CreateOS Sandboxは、FirecrackerマイクロVM上でコードやエージェントのワークロードを実行できる分離型コンピュート環境です。SDK、CLI、MCPで制御可能。

GitBot icon

GitBot

GitBotは、Claude Code、Codex、OpenCodeを活用した再利用可能なコーディングボットを作成できるローカルブラウザワークスペースです。永続スレッドと権限設定で、リポジトリ内の作業を効率化します。

hob icon

hob

hobは、エージェントのセッション、ターミナル、履歴、後続作業を、既存のツールやプロバイダーに合わせて整理できる独立したコーディングエージェント向けワークスペース。ローカルでの制御を重視する開発者に最適。

Ably Chat icon

Ably Chat

Ably Chatは、カスタムのリアルタイムチャットアプリを構築できるチャットAPIプラットフォームです。ルーム単位のメッセージ、入力中表示、プレゼンス、リアクション、メッセージ更新に対応し、利用量ベースの料金も選べます。