Home

Awesome

<div align="center">

Sequin

Postgres change data capture to streams and queues like Kafka, SQS, HTTP endpoints, and more

Docs License: MIT

<p align="center"> <a href="https://console.sequinstream.com">Sequin Cloud</a> · <a href="https://sequinstream.com/docs">Documentation</a> · <a href="https://sequinstream.com">Website</a> · <a href="https://discord.gg/BV8wFXvNtY">Discord</a> </p> </div>

What is Sequin?

Sequin is a tool for change data capture (CDC) in Postgres. Sequin makes it easy to stream Postgres rows and changes to streaming platforms and queues (e.g. Kafka and SQS). You can backfill existing rows and stream new changes in real-time.

Sequin even supports native sinks (HTTP GET and webhooks), so you can get started without any other infrastructure.

Change data capture enables applications and services to track and respond to row-level changes in database tables as they occur. With CDC via Sequin, you can:

  1. Replicate data from your existing tables to other apps, databases, caches, materialized views, or frontend clients.
  2. Build event driven workflows such as triggering side effects when data in Postgres changes.

Sequin itself is built on Postgres. It uses a logical replication slot to detect changes and internal tables to store sink state.

Unlike Debezium, another change data capture tool, Sequin doesn't require Kafka to operate. Sequin is a standalone Docker container that you can deploy next to your Postgres database. Or, you can use our hosted offering.

Sequin is open source/MIT. To help us make this project great, tell us what you're building in our Discord Server.

Sinks

SinkSupportDescription
Kafka✅ Real-time streaming<br />✅ Backfill existing rowsStream changes to Apache Kafka topics
SQS✅ Real-time streaming<br />✅ Backfill existing rowsSend messages to Amazon SQS queues
Redis✅ Real-time streaming<br />✅ Backfill existing rowsXADD to Redis Streams
Webhook Subscription (Native)✅ Real-time streaming<br />✅ Backfill existing rowsSend changes to any HTTP endpoint
HTTP Pull (Native)✅ Real-time streaming<br />✅ Backfill existing rowsConsume changes directly from Sequin with exactly-once processing
GCP Pub/Sub✅ Real-time streaming<br />✅ Backfill existing rowsPublish messages to Google Cloud Pub/Sub topics
NATS✅ Real-time streaming<br />✅ Backfill existing rowsStream changes to NATS subjects
RabbitMQ✅ Real-time streaming<br />✅ Backfill existing rowsPublish messages to RabbitMQ exchanges
Azure EventHubsComing soon(Late Dec 2024)
Amazon SNSComing soon(Jan 2025)
AWS KinesisComing soon(Jan 2025)

Killer features

Change data capture use cases

Sequin works great for change data capture use cases like:

Getting started

See our quickstart.

Alternatively, you can try Sequin for free on Sequin Cloud. Follow the instructions in the app to start streaming your data in a couple minutes.

How Sequin works

Sequin connects to any Postgres database. Specify the tables you want to stream, as well as optional filters and transformations. Route changes to sinks like Kafka, SQS, Redis, or HTTP endpoints.

When you setup a sink, you can opt to backfill data from the source table to the sink.

After setup, Sequin will stream new changes to the sink as they occur in real-time. If there are any issues with delivery, Sequin will automatically retry delivery with exponential backoff.

Sequin comes with a web console/UI for configuration.

You can also configure Sequin as code using YAML config files.

Benchmarks

Sequin delivers industry-leading performance for change data capture (CDC), consistently achieving sub-200ms latency at 2,000 sustained operations per second. Here's how Sequin compares to other solutions:

ToolLatency at 2k ops/s
Sequin192ms
Debezium234ms
PeerDB30 seconds
Fivetran5 minutes
Airbyte1+ hours

In our production benchmarks with AWS RDS Postgres and MSK Kafka, Sequin maintains consistent performance under sustained load:

Learn more about Sequin's current performance in our docs.

How Sequin compares

<details open> <summary>Sequin vs Debezium</summary>

Sequin vs Debezium

Debezium is also a change data capture tool that captures changes from Postgres and streams them to messaging systems like Kafka. Debezium requires significant infrastructure (Kafka, Connect) to operate.

Sequin provides the same change data capture capabilities but with a much simpler setup:

  1. No Kafka required: Sequin doesn't require Kafka.
  2. Native destinations: With Debezium, you route to destinations via Kafka Connect. With Sequin, you stream directly to your destination of choice. This means simpler setup, fewer transforms, and fewer moving parts.
  3. Full-featured web console: Sequin includes a web console for configuration and monitoring.
</details> <details> <summary>Sequin vs Fivetran/Airbyte</summary>

Sequin vs Fivetran/Airbyte

Fivetran and Airbyte are ETL tools designed primarily for data warehouse ingestion. They excel at moving data in batch intervals (minutes to hours) to analytical databases.

Sequin is purpose-built for real-time operational use cases. Key differences:

  1. Real-time streaming: Versus batch intervals.
  2. Focus on operational destinations: Queues, streams, webhooks, etc. vs data warehouses.
  3. Flexible backfills: Deployed a bug and need to replay the last 2 hours of data? Sequin makes it easy.
</details> <details> <summary>Sequin vs custom change data capture solutions</summary>

Sequin vs custom change data capture solutions

Many teams build custom change data capture solutions using triggers, LISTEN/NOTIFY, or logical replication. While these can work, they often:

Sequin provides all this functionality out of the box:

</details>

Contribute

Sequin is open source (MIT license). The project is just getting started, so the best way to contribute right now is to open an issue or join the Discord Server and let us know what you want to build.