[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-73434":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":37,"readmeContent":38,"aiSummary":39,"trendingCount":16,"starSnapshotCount":16,"syncStatus":40,"lastSyncTime":41,"discoverSource":42},73434,"sequin","sequinstream\u002Fsequin","sequinstream","Postgres change data capture to streams, queues, and search indexes like Kafka, SQS, Elasticsearch, HTTP endpoints, and more","https:\u002F\u002Fsequinstream.com",null,"Elixir",2121,138,11,49,0,10,13,41,30,89.03,"MIT License",false,"main",true,[27,28,29,30,31,32,33,34,35,36],"cdc","change-data-capture","elixir","erlang","kafka","postgres","postgresql","queue","search","streaming","2026-06-12 04:01:09","\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"https:\u002F\u002Fsqn-img-svr.eric-65f.workers.dev\u002F?page=readme\" alt=\"Sequin\" height=\"80\" \u002F>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fsequinstream.com\u002Fdocs\">Documentation\u003C\u002Fa>\n  ·\n  \u003Ca href=\"https:\u002F\u002Fsequinstream.com\">Website\u003C\u002Fa>\n  ·\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FBV8wFXvNtY\">Discord\u003C\u002Fa>\n  ·\n  \u003Ca href=\"https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fsequin-community\u002Fshared_invite\u002Fzt-37begzach-4aUwR5xt_XgivdvctZDemA\">Slack\u003C\u002Fa>\n  ·\n  \u003Ca href=\"https:\u002F\u002Fblog.sequinstream.com\u002F\">Blog\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003C\u002Fdiv>\n\n# Sequin\n\nSequin is the [fastest](#performance) 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\u002FSub, another Postgres, etc.). You can backfill existing rows and stream new changes in real-time.\n\nSequin is a standalone Docker container that you can deploy next to your Postgres database.\n\nFor production deployments on AWS, see the [`deployment\u002F`](.\u002Fdeployment) directory for Terraform infrastructure-as-code templates.\n\nSequin is [open source](.\u002FLICENSE). To help us make this project great, tell us what you're building in our [Discord server](https:\u002F\u002Fdiscord.gg\u002FBV8wFXvNtY) or [Slack community](https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fsequin-community\u002Fshared_invite\u002Fzt-37begzach-4aUwR5xt_XgivdvctZDemA).\n\n## Getting started\n\nSee our [quickstart](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fquickstart\u002Fwebhooks) to get up and running in your dev environment in about 5 minutes.\n\n## Performance\n\nSequin delivers industry-leading performance for change data capture (CDC), sustaining **50k operations per second** (40 MB\u002Fs) with **55ms average latency**.\n\n| Tool \u002F Deployment | Sustained throughput | Avg latency | 99p latency |\n|-------------------|----------------------|-------------|-------------|\n| **Sequin** | **>50 k ops \u002F s** | **55 ms** | **253 ms** |\n| Debezium · MSK | 6 k ops \u002F s | 258 ms | 499 ms |\n| Debezium · Server | 23 k ops \u002F s | 210 ms  | 440 ms |\n| Fivetran | - | 5+ minutes | - |\n| Airbyte | - | 1+ hours | - |\n\nRead more about our [benchmarking methodology and performance](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fperformance) in our docs.\n\n## Use cases\n\nSequin works great for change data capture use cases like:\n\n- **[Streaming events](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fhow-to\u002Ftrigger-automated-workflows):** Stream database changes as events for other services to consume using Kafka, SQS, Pub\u002FSub and more.\n- **[Audit logging](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fhow-to\u002Fcreate-audit-logs):** Track, enrich, and record every change in your database for compliance or feature development.\n- **[Maintaining a cache](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fhow-to\u002Fmaintain-caches):** Keep application caches in sync with your database by streaming changes to Redis compliant caches.\n- **[Refreshing search indexes](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fhow-to\u002Fsync-search-indexes):** End-to-end tooling to warm search indexes like Typesense and Elasticsearch and keep them in sync with sub-second latency.\n\n## Sinks\n\n| Icon | Sink | Docs | Description |\n|------|------|------|-------------|\n| \u003Cimg src=\"docs\u002Fimages\u002Fintroduction\u002Fazure.png\" alt=\"Azure EventHubs\" width=\"24\" height=\"24\" \u002F> | [Azure EventHubs](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fquickstart\u002Fazure-event-hubs)  | [Reference](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Fsinks\u002Fazure-event-hubs) | Publish messages to Azure EventHubs |\n| \u003Cimg src=\"docs\u002Fimages\u002Fintroduction\u002Fpub-sub.png\" alt=\"GCP Pub\u002FSub\" width=\"24\" height=\"24\" \u002F> | [GCP Pub\u002FSub](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fquickstart\u002Fgcp-pubsub) | [Reference](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Fsinks\u002Fgcp-pubsub) | Publish messages to Google Cloud Pub\u002FSub topics |\n| \u003Cimg src=\"docs\u002Fimages\u002Fintroduction\u002Felastic.png\" alt=\"Elasticsearch\" width=\"24\" height=\"24\" \u002F> | [Elasticsearch](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fquickstart\u002Felasticsearch) | [Reference](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Fsinks\u002Felasticsearch) | Index database changes with Elasticsearch |\n| \u003Cimg src=\"docs\u002Fimages\u002Fintroduction\u002Fsequin-stream.svg\" alt=\"HTTP Pull\" width=\"24\" height=\"24\" \u002F> | [Sequin Stream (HTTP `GET`)](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fquickstart\u002Fsequin-stream) | [Reference](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Fsinks\u002Fsequin-stream) | Consume changes directly from Sequin with exactly-once processing |\n| \u003Cimg src=\"docs\u002Fimages\u002Fintroduction\u002Fkafka.svg\" alt=\"Kafka\" width=\"24\" height=\"24\" \u002F> | [Kafka](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fquickstart\u002Fkafka) | [Reference](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Fsinks\u002Fkafka) | Stream changes to Apache Kafka topics |\n| \u003Cimg src=\"docs\u002Fimages\u002Fintroduction\u002Fkinesis.png\" alt=\"Kinesis\" width=\"24\" height=\"24\" \u002F> | [Kinesis](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fquickstart\u002Fkinesis) | [Reference](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Fsinks\u002Fkinesis) | Send messages to Amazon Kinesis streams queues |\n| \u003Cimg src=\"docs\u002Fimages\u002Fintroduction\u002Fmeilisearch.png\" alt=\"Meilisearch\" width=\"24\" height=\"24\" \u002F> | [Meilisearch](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fquickstart\u002Fmeilisearch) | [Reference](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Fsinks\u002Fmeilisearch) | Index database changes with Meilisearch |\n| \u003Cimg src=\"docs\u002Fimages\u002Fintroduction\u002Fnats.png\" alt=\"NATS\" width=\"24\" height=\"24\" \u002F> | [NATS](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fquickstart\u002Fnats) | [Reference](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Fsinks\u002Fnats) | Stream changes to NATS subjects |\n| \u003Cimg src=\"docs\u002Fimages\u002Fintroduction\u002Frabbit.png\" alt=\"RabbitMQ\" width=\"24\" height=\"24\" \u002F> | [RabbitMQ](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fquickstart\u002Frabbitmq) | [Reference](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Fsinks\u002Frabbitmq) | Publish messages to RabbitMQ exchanges |\n| \u003Cimg src=\"docs\u002Fimages\u002Fintroduction\u002Fredis-1.png\" alt=\"Redis Stream\" width=\"24\" height=\"24\" \u002F> | [Redis Stream](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fquickstart\u002Fredis-stream) | [Reference](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Fsinks\u002Fredis-stream) | `XADD` to Redis Streams |\n| \u003Cimg src=\"docs\u002Fimages\u002Fintroduction\u002Fredis-2.png\" alt=\"Redis String\" width=\"24\" height=\"24\" \u002F> | [Redis String](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fquickstart\u002Fredis-string) | [Reference](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Fsinks\u002Fredis-string) | `SET` to Redis keys  |\n| \u003Cimg src=\"docs\u002Fimages\u002Fintroduction\u002Fs2.png\" alt=\"S2\" width=\"24\" height=\"24\" \u002F> | [S2](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fquickstart\u002Fs2) | [Reference](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Fsinks\u002Fs2) | Send messages to S2 streams |\n| \u003Cimg src=\"docs\u002Fimages\u002Fintroduction\u002Fsqs.png\" alt=\"SQS\" width=\"24\" height=\"24\" \u002F> | [SQS](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fquickstart\u002Fsqs) | [Reference](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Fsinks\u002Fsqs) | Send messages to Amazon SQS queues |\n| \u003Cimg src=\"docs\u002Fimages\u002Fintroduction\u002Fsns.png\" alt=\"SNS\" width=\"24\" height=\"24\" \u002F> | [SNS](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fquickstart\u002Fsns) | [Reference](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Fsinks\u002Fsns) | Send messages to Amazon SNS |\n| \u003Cimg src=\"docs\u002Fimages\u002Fintroduction\u002Ftypesense.png\" alt=\"Typesense\" width=\"24\" height=\"24\" \u002F> | [Typesense](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fquickstart\u002Ftypesense) | [Reference](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Fsinks\u002Ftypesense) | Index database changes with Typesense |\n| \u003Cimg src=\"docs\u002Fimages\u002Fintroduction\u002Fwebhook.png\" alt=\"Webhook\" width=\"24\" height=\"24\" \u002F> | [Webhooks (HTTP `POST`)](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fquickstart\u002Fwebhooks) | [Reference](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Fsinks\u002Fwebhooks) | Send changes to any HTTP endpoint |\n\n## Killer features\n\n- **Bring your database:** Sequin is not an extension. It works with any Postgres database version 14\\+.\n- **Never miss a change:** Sequin ensures [100% delivery of database changes to sinks](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fconcepts\u002Fconsistency-model) with strict ordering.\n- **Filters:** Write custom [filters](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Ffilters) to exclude or include changes to sink.\n- **Transforms**: [Transform](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Ftransforms) message payloads by writing functions in low-latency Elixir.\n- **Routing:** [Route](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Frouting) messages to specific topics, endpoints, or indexes.\n- **Exactly-once processing:** Sequin ensures exactly-once processing of database changes using [idempotency keys](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Fmessages#idempotency).\n- **Backfills:** [Backfill](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Fbackfills) sinks at any point in time. Run partial backfills to only replay specific rows.\n- **Infrastructure as code:** Manage Sequin as code using a YAML file paired with the Sequin CLI. Or use our [Management API](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fmanagement-api\u002Fintroduction).\n- **Rich web console:** Your team can configure and monitor sinks from a full feature web console.\n- **Observability:** Sequin ships a [Prometheus metrics endpoint](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Fmetrics).\n\n## How Sequin works\n\nSequin 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\u002FSub, Redis, etc.\n\nWhen you setup a sink, you can opt to backfill data from the source table to the sink.\n\nAfter 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.\n\nSequin comes with a web console\u002FUI for configuration and monitoring. You can also configure Sequin as code using [YAML config files](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Freference\u002Fsequin-yaml) and our [Management API](https:\u002F\u002Fsequinstream.com\u002Fdocs\u002Fmanagement-api\u002Fintroduction).\n\n## Why Sequin\n\nWe all know Postgres is great for storing and querying data. But what about when you need to stream changes to other systems?\n\nExisting tools like Debezium require significant infrastructure to operate (Kafka), endless guess-and-check configuration, and limited tooling. Other ETL tools (e.g. Fivetran) run in batches and are expensive.\n\nThis leads many teams to build brittle, homegrown solutions that are difficult to maintain and lack essential features.\n\n### Fast, simple, reliable Postgres CDC\n\nSequin provides fastest, simple Postgres CDC. It's tuned to Postgres to stream changes in real-time, provides strict guarantees, and doesn't require complex infrastructure to operate.\n\n## Contributing\n\nSee [CONTRIBUTING.md](.\u002FCONTRIBUTING.md) for detailed instructions on how to contribute to Sequin.\n","Sequin 是一个用于将Postgres数据库更改捕获到流、队列和搜索索引（如Kafka、SQS、Elasticsearch等）的平台。它采用Elixir语言编写，具备高性能的数据变更捕获能力，能够实现每秒超过50,000次操作，平均延迟仅55毫秒。Sequin作为一个独立的Docker容器部署，非常适合需要实时数据同步的应用场景，例如事件流处理、审计日志记录、缓存维护以及搜索索引刷新等。通过Sequin，开发者可以轻松地将Postgres中的数据变化流转至多种目标系统中，从而支持更广泛的应用集成需求。",2,"2026-06-11 03:45:32","high_star"]