Sequin is a free, open source messaging & event streaming project written in Elixir and released under MIT. It has 2,203 GitHub stars, 149 forks and 71 open issues, and was last pushed 7 months ago. On this registry it ranks #4 of 8 tracked projects in Messaging & Event Streaming, with 5 head-to-head comparisons available. It gained 4 stars over the last 6 tracked days.

What is Sequin?

What it is

Sequin is an open-source change data capture platform for Postgres. It lives in the Postgres ecosystem and reads database changes, then sends those changes to streams, queues, search indexes, and other endpoints. The project is written in Elixir and released under the MIT license.

The concrete problem it solves is moving Postgres data changes out of the database without building separate pipelines for each destination. It can backfill existing rows and stream new changes in real time. This lets a team send the same change stream to systems such as Kafka, GCP Pub/Sub, Elasticsearch, Meilisearch, NATS, RabbitMQ, Kinesis, Azure EventHubs, HTTP endpoints, or another Postgres database.

Key capabilities

  • It captures Postgres change data and turns row changes into events that other services can consume.
  • It can backfill existing rows and then continue streaming new changes in real time.
  • It publishes to Apache Kafka, Amazon Kinesis, Azure EventHubs, GCP Pub/Sub, NATS, RabbitMQ, Elasticsearch, Meilisearch, and HTTP endpoints.
  • It supports a Sequin Stream sink where consumers read changes directly with HTTP GET and exactly-once processing.
  • It can keep search indexes in sync with Postgres for engines such as Elasticsearch, Meilisearch, and Typesense.
  • It can maintain caches by streaming database changes to Redis compliant caches.
  • It can create audit logs by tracking, enriching, and recording every change in the database.

Who uses it and how

  • Teams use it to stream database changes as events for services that consume Kafka, SQS, Pub/Sub, or other queue systems.
  • Compliance and platform teams use it to build audit logs from every change in a Postgres database.
  • Application teams use it to keep caches in sync by sending Postgres changes to Redis compliant caches.
  • Search teams use it to warm and refresh Elasticsearch, Meilisearch, or Typesense indexes with sub-second latency.
  • Infrastructure teams deploy it as a standalone Docker container next to Postgres, and AWS teams can use Terraform templates from the deployment directory.

Getting started

The typical install path is a standalone Docker container placed next to the Postgres database. For production deployments on AWS, the README points to Terraform infrastructure-as-code templates in the deployment directory.

When to use it — and when not to

Sequin is useful when a team wants Postgres change data to reach many sinks from one open-source system, and when it can operate the Postgres, Docker, AWS, and destination services itself. The README compares it with Debezium, Fivetran, and Airbyte, and states throughput of 50,000 operations per second, 40 MB per second, 55 milliseconds average latency, and 253 milliseconds 99th percentile latency. It is less suitable when a team cannot run and maintain the container and its configuration.

project readme (upstream, from github) — read inline
Sequin

Documentation · Website · Discord · Slack · Blog

Sequin

Sequin is the fastest change data capture (CDC) platform for Postgres. Sequin makes it easy to stream Postgres to streaming platforms, queues, search indexes, and more (e.g. Kafka, GCP Pub/Sub, another Postgres, etc.). You can backfill existing rows and stream new changes in real-time.

Sequin is a standalone Docker container that you can deploy next to your Postgres database.

For production deployments on AWS, see the deployment/ directory for Terraform infrastructure-as-code templates.

Sequin is open source. To help us make this project great, tell us what you're building in our Discord server or Slack community.

Getting started

See our quickstart to get up and running in your dev environment in about 5 minutes.

Performance

Sequin delivers industry-leading performance for change data capture (CDC), sustaining 50k operations per second (40 MB/s) with 55ms average latency.

Tool / Deployment Sustained throughput Avg latency 99p latency
Sequin >50 k ops / s 55 ms 253 ms
Debezium · MSK 6 k ops / s 258 ms 499 ms
Debezium · Server 23 k ops / s 210 ms 440 ms
Fivetran - 5+ minutes -
Airbyte - 1+ hours -

Read more about our benchmarking methodology and performance in our docs.

Use cases

Sequin works great for change data capture use cases like:

  • Streaming events: Stream database changes as events for other services to consume using Kafka, SQS, Pub/Sub and more.
  • Audit logging: Track, enrich, and record every change in your database for compliance or feature development.
  • Maintaining a cache: Keep application caches in sync with your database by streaming changes to Redis compliant caches.
  • Refreshing search indexes: End-to-end tooling to warm search indexes like Typesense and Elasticsearch and keep them in sync with sub-second latency.

Sinks

Icon Sink Docs Description
Azure EventHubs Reference Publish messages to Azure EventHubs
GCP Pub/Sub Reference Publish messages to Google Cloud Pub/Sub topics
Elasticsearch Reference Index database changes with Elasticsearch
Sequin Stream (HTTP GET) Reference Consume changes directly from Sequin with exactly-once processing
Kafka Reference Stream changes to Apache Kafka topics
Kinesis Reference Send messages to Amazon Kinesis streams queues
Meilisearch Reference Index database changes with Meilisearch
NATS Reference Stream changes to NATS subjects
RabbitMQ Reference Publish messages to RabbitMQ exchanges
Redis Stream Reference XADD to Redis Streams
Redis String Reference SET to Redis keys
S2 Reference Send messages to S2 streams
SQS Reference Send messages to Amazon SQS queues
SNS Reference Send messages to Amazon SNS
Typesense Reference Index database changes with Typesense
Webhooks (HTTP POST) Reference Send changes to any HTTP endpoint

Killer features

  • Bring your database: Sequin is not an extension. It works with any Postgres database version 14+.
  • Never miss a change: Sequin ensures 100% delivery of database changes to sinks with strict ordering.
  • Filters: Write custom filters to exclude or include changes to sink.
  • Transforms: Transform message payloads by writing functions in low-latency Elixir.
  • Routing: Route messages to specific topics, endpoints, or indexes.
  • Exactly-once processing: Sequin ensures exactly-once processing of database changes using idempotency keys.
  • Backfills: Backfill sinks at any point in time. Run partial backfills to only replay specific rows.
  • Infrastructure as code: Manage Sequin as code using a YAML file paired with the Sequin CLI. Or use our Management API.
  • Rich web console: Your team can configure and monitor sinks from a full feature web console.
  • Observability: Sequin ships a Prometheus metrics endpoint.

How Sequin works

Sequin connects to any Postgres database. Specify the schemas and tables you want to stream, as well as optional filters and transformations. Route changes to sinks like Kafka, Google Pub/

readme truncated — read the full docs on github

Frequently asked questions

Is Sequin free to use?

Sequin is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Sequin do?

Open-source message stream built on Postgres

What is Sequin written in?

Sequin is primarily written in Elixir. Its source is publicly available at https://github.com/sequinstream/sequin, and it has 2,203 GitHub stars.