{"adoption": {"forks": 147, "observed_at": "2026-08-28T04:06:24.147775+00:00", "stars": 2191}, "canonical_url": "https://ross.abutalabs.com/products/sequin", "card": {"archived": false, "artifact_type": "service", "description": "Postgres change data capture to streams, queues, and search indexes like Kafka, SQS, Elasticsearch, HTTP endpoints, and more", "domain": ["databases", "developer-tools"], "enriched": true, "function": ["streaming", "etl", "message-queue", "search-engine", "webhook", "monitoring", "self-hosted"], "health_score": 78, "homepage": "https://sequinstream.com", "language": "Elixir", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["sequinstream/sequin"], "name": "sequinstream/sequin", "platform": ["self-hosted", "cloud"], "pushed_at": "2026-02-23T23:39:01+00:00", "repo": "sequinstream/sequin", "stars": 2191, "tags": ["postgres", "change-data-capture", "cdc", "kafka", "sqs", "elasticsearch", "redis", "elixir", "wal", "exactly-once", "backfill", "data-engineering", "messaging", "search", "real-time", "docker", "web-server"], "topics": ["cdc", "change-data-capture", "elixir", "erlang", "kafka", "postgres", "postgresql", "queue", "streaming", "search"], "urls": [], "use_cases": ["stream postgres changes to kafka", "sync postgres to elasticsearch in real time", "send database change events to sqs or pub/sub", "keep redis cache in sync with postgres", "create audit logs from database changes", "replace debezium for postgres cdc", "backfill existing rows to a queue", "trigger webhooks on postgres row changes"], "what_it_is": "Sequin is an open-source change data capture (CDC) platform for Postgres, deployed as a standalone Docker container that streams database changes to sinks like Kafka, SQS, GCP Pub/Sub, Redis, Elasticsearch, and webhooks. It supports backfills, exactly-once processing with strict ordering, and includes a web console plus Prometheus/Grafana observability.", "when_to_avoid": ["you need batch ETL into a data warehouse on minute-to-hour schedules (use Fivetran or Airbyte)", "your source database is not Postgres", "you cannot run a Docker container next to your database", "you only need Postgres-to-Postgres replication via native logical replication"], "when_to_choose": ["you need real-time Postgres CDC with sub-second latency and exactly-once delivery", "you want a simple standalone Docker deployment instead of Kafka + Zookeeper + Kafka Connect", "you need to fan out changes to multiple sinks like queues, search indexes, and webhooks", "you need to backfill existing table rows alongside streaming new changes"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/sequin", "repo": "sequinstream/sequin", "role": "main", "score": 63}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:24.147775+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:47:36.051830+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a4c8e1d0774b5fbf09e45acdb4ecd98ecb24de021310fe01747627604119b931", "fetched_at": "2026-08-28T04:06:24.147775+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sequinstream/sequin"}, {"content_hash": "e2a8876f2b8a87a24388ae41b8d637e5616c2c8ada1d9400fdf144aea0cccfb6", "fetched_at": "2026-08-29T10:27:53.674455+00:00", "kind": "homepage", "missing": false, "url": "https://sequinstream.com"}, {"content_hash": "a2cc3f5d83b985dcca857126a081e49c29618125ea0c4230970cc368716200a5", "fetched_at": "2026-08-29T10:27:53.684337+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs"}, {"content_hash": "856bfd37a6f2ea04645ceeefeaada0e60911a5493866694a935b97b09145f991", "fetched_at": "2026-08-29T10:27:53.686540+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs/running-sequin"}, {"content_hash": "c88b0a0e26572fab9c5ab1609345a00fce9d7b8540206af5e482d75f8938753f", "fetched_at": "2026-08-29T10:27:53.688442+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs/compare"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:24.147775+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:47:36.051830+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a4c8e1d0774b5fbf09e45acdb4ecd98ecb24de021310fe01747627604119b931", "fetched_at": "2026-08-28T04:06:24.147775+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sequinstream/sequin"}, {"content_hash": "e2a8876f2b8a87a24388ae41b8d637e5616c2c8ada1d9400fdf144aea0cccfb6", "fetched_at": "2026-08-29T10:27:53.674455+00:00", "kind": "homepage", "missing": false, "url": "https://sequinstream.com"}, {"content_hash": "a2cc3f5d83b985dcca857126a081e49c29618125ea0c4230970cc368716200a5", "fetched_at": "2026-08-29T10:27:53.684337+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs"}, {"content_hash": "856bfd37a6f2ea04645ceeefeaada0e60911a5493866694a935b97b09145f991", "fetched_at": "2026-08-29T10:27:53.686540+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs/running-sequin"}, {"content_hash": "c88b0a0e26572fab9c5ab1609345a00fce9d7b8540206af5e482d75f8938753f", "fetched_at": "2026-08-29T10:27:53.688442+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs/compare"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:47:36.051830+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a4c8e1d0774b5fbf09e45acdb4ecd98ecb24de021310fe01747627604119b931", "fetched_at": "2026-08-28T04:06:24.147775+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sequinstream/sequin"}, {"content_hash": "e2a8876f2b8a87a24388ae41b8d637e5616c2c8ada1d9400fdf144aea0cccfb6", "fetched_at": "2026-08-29T10:27:53.674455+00:00", "kind": "homepage", "missing": false, "url": "https://sequinstream.com"}, {"content_hash": "a2cc3f5d83b985dcca857126a081e49c29618125ea0c4230970cc368716200a5", "fetched_at": "2026-08-29T10:27:53.684337+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs"}, {"content_hash": "856bfd37a6f2ea04645ceeefeaada0e60911a5493866694a935b97b09145f991", "fetched_at": "2026-08-29T10:27:53.686540+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs/running-sequin"}, {"content_hash": "c88b0a0e26572fab9c5ab1609345a00fce9d7b8540206af5e482d75f8938753f", "fetched_at": "2026-08-29T10:27:53.688442+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs/compare"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:24.147775+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:24.147775+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:24.147775+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:47:36.051830+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a4c8e1d0774b5fbf09e45acdb4ecd98ecb24de021310fe01747627604119b931", "fetched_at": "2026-08-28T04:06:24.147775+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sequinstream/sequin"}, {"content_hash": "e2a8876f2b8a87a24388ae41b8d637e5616c2c8ada1d9400fdf144aea0cccfb6", "fetched_at": "2026-08-29T10:27:53.674455+00:00", "kind": "homepage", "missing": false, "url": "https://sequinstream.com"}, {"content_hash": "a2cc3f5d83b985dcca857126a081e49c29618125ea0c4230970cc368716200a5", "fetched_at": "2026-08-29T10:27:53.684337+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs"}, {"content_hash": "856bfd37a6f2ea04645ceeefeaada0e60911a5493866694a935b97b09145f991", "fetched_at": "2026-08-29T10:27:53.686540+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs/running-sequin"}, {"content_hash": "c88b0a0e26572fab9c5ab1609345a00fce9d7b8540206af5e482d75f8938753f", "fetched_at": "2026-08-29T10:27:53.688442+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs/compare"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:24.147775+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:24.147775+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:47:36.051830+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a4c8e1d0774b5fbf09e45acdb4ecd98ecb24de021310fe01747627604119b931", "fetched_at": "2026-08-28T04:06:24.147775+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sequinstream/sequin"}, {"content_hash": "e2a8876f2b8a87a24388ae41b8d637e5616c2c8ada1d9400fdf144aea0cccfb6", "fetched_at": "2026-08-29T10:27:53.674455+00:00", "kind": "homepage", "missing": false, "url": "https://sequinstream.com"}, {"content_hash": "a2cc3f5d83b985dcca857126a081e49c29618125ea0c4230970cc368716200a5", "fetched_at": "2026-08-29T10:27:53.684337+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs"}, {"content_hash": "856bfd37a6f2ea04645ceeefeaada0e60911a5493866694a935b97b09145f991", "fetched_at": "2026-08-29T10:27:53.686540+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs/running-sequin"}, {"content_hash": "c88b0a0e26572fab9c5ab1609345a00fce9d7b8540206af5e482d75f8938753f", "fetched_at": "2026-08-29T10:27:53.688442+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs/compare"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:24.147775+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:24.147775+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:24.147775+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:47:36.051830+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a4c8e1d0774b5fbf09e45acdb4ecd98ecb24de021310fe01747627604119b931", "fetched_at": "2026-08-28T04:06:24.147775+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sequinstream/sequin"}, {"content_hash": "e2a8876f2b8a87a24388ae41b8d637e5616c2c8ada1d9400fdf144aea0cccfb6", "fetched_at": "2026-08-29T10:27:53.674455+00:00", "kind": "homepage", "missing": false, "url": "https://sequinstream.com"}, {"content_hash": "a2cc3f5d83b985dcca857126a081e49c29618125ea0c4230970cc368716200a5", "fetched_at": "2026-08-29T10:27:53.684337+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs"}, {"content_hash": "856bfd37a6f2ea04645ceeefeaada0e60911a5493866694a935b97b09145f991", "fetched_at": "2026-08-29T10:27:53.686540+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs/running-sequin"}, {"content_hash": "c88b0a0e26572fab9c5ab1609345a00fce9d7b8540206af5e482d75f8938753f", "fetched_at": "2026-08-29T10:27:53.688442+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs/compare"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:24.147775+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:24.147775+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:47:36.051830+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a4c8e1d0774b5fbf09e45acdb4ecd98ecb24de021310fe01747627604119b931", "fetched_at": "2026-08-28T04:06:24.147775+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sequinstream/sequin"}, {"content_hash": "e2a8876f2b8a87a24388ae41b8d637e5616c2c8ada1d9400fdf144aea0cccfb6", "fetched_at": "2026-08-29T10:27:53.674455+00:00", "kind": "homepage", "missing": false, "url": "https://sequinstream.com"}, {"content_hash": "a2cc3f5d83b985dcca857126a081e49c29618125ea0c4230970cc368716200a5", "fetched_at": "2026-08-29T10:27:53.684337+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs"}, {"content_hash": "856bfd37a6f2ea04645ceeefeaada0e60911a5493866694a935b97b09145f991", "fetched_at": "2026-08-29T10:27:53.686540+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs/running-sequin"}, {"content_hash": "c88b0a0e26572fab9c5ab1609345a00fce9d7b8540206af5e482d75f8938753f", "fetched_at": "2026-08-29T10:27:53.688442+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs/compare"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:47:36.051830+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a4c8e1d0774b5fbf09e45acdb4ecd98ecb24de021310fe01747627604119b931", "fetched_at": "2026-08-28T04:06:24.147775+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sequinstream/sequin"}, {"content_hash": "e2a8876f2b8a87a24388ae41b8d637e5616c2c8ada1d9400fdf144aea0cccfb6", "fetched_at": "2026-08-29T10:27:53.674455+00:00", "kind": "homepage", "missing": false, "url": "https://sequinstream.com"}, {"content_hash": "a2cc3f5d83b985dcca857126a081e49c29618125ea0c4230970cc368716200a5", "fetched_at": "2026-08-29T10:27:53.684337+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs"}, {"content_hash": "856bfd37a6f2ea04645ceeefeaada0e60911a5493866694a935b97b09145f991", "fetched_at": "2026-08-29T10:27:53.686540+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs/running-sequin"}, {"content_hash": "c88b0a0e26572fab9c5ab1609345a00fce9d7b8540206af5e482d75f8938753f", "fetched_at": "2026-08-29T10:27:53.688442+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs/compare"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:47:36.051830+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a4c8e1d0774b5fbf09e45acdb4ecd98ecb24de021310fe01747627604119b931", "fetched_at": "2026-08-28T04:06:24.147775+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sequinstream/sequin"}, {"content_hash": "e2a8876f2b8a87a24388ae41b8d637e5616c2c8ada1d9400fdf144aea0cccfb6", "fetched_at": "2026-08-29T10:27:53.674455+00:00", "kind": "homepage", "missing": false, "url": "https://sequinstream.com"}, {"content_hash": "a2cc3f5d83b985dcca857126a081e49c29618125ea0c4230970cc368716200a5", "fetched_at": "2026-08-29T10:27:53.684337+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs"}, {"content_hash": "856bfd37a6f2ea04645ceeefeaada0e60911a5493866694a935b97b09145f991", "fetched_at": "2026-08-29T10:27:53.686540+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs/running-sequin"}, {"content_hash": "c88b0a0e26572fab9c5ab1609345a00fce9d7b8540206af5e482d75f8938753f", "fetched_at": "2026-08-29T10:27:53.688442+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs/compare"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:47:36.051830+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a4c8e1d0774b5fbf09e45acdb4ecd98ecb24de021310fe01747627604119b931", "fetched_at": "2026-08-28T04:06:24.147775+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sequinstream/sequin"}, {"content_hash": "e2a8876f2b8a87a24388ae41b8d637e5616c2c8ada1d9400fdf144aea0cccfb6", "fetched_at": "2026-08-29T10:27:53.674455+00:00", "kind": "homepage", "missing": false, "url": "https://sequinstream.com"}, {"content_hash": "a2cc3f5d83b985dcca857126a081e49c29618125ea0c4230970cc368716200a5", "fetched_at": "2026-08-29T10:27:53.684337+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs"}, {"content_hash": "856bfd37a6f2ea04645ceeefeaada0e60911a5493866694a935b97b09145f991", "fetched_at": "2026-08-29T10:27:53.686540+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs/running-sequin"}, {"content_hash": "c88b0a0e26572fab9c5ab1609345a00fce9d7b8540206af5e482d75f8938753f", "fetched_at": "2026-08-29T10:27:53.688442+00:00", "kind": "site_page", "missing": false, "url": "https://sequinstream.com/docs/compare"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 69, "longevity": 57, "rhythm": 59}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 799, "days_push": 191, "days_rel": 196, "gap_med": 0, "n_releases_24m": 280}, "score": 63, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}