Skip to main content



Bemi Worker Architecture

Bemi consists of three main parts:

  1. Debezium, a very flexible tool for implementing Change Data Capture that is written in Java. It is used by many companies that need to implement ETL such as Airbyte and Materialize. We rely on it to be able to connect to PostgreSQL replication log, perform logical decoding, and send raw data to a data sink.
  2. NATS JetStream, a cloud-native messaging system written in Go. Debezium is historically designed to send data to Kafka, but it can be also re-configured to send data to NATS JetStream. It is much more lightweight and easy to manage while being very performant and having over 45 clients for different programming languages.
  3. Bemi Worker, a process responsible for stitching data change with app context sent via our open-source ORM packages and storing data changes. It is written in TypeScript and uses the core that we rely on for our Bemi cloud platform.

If you want to self-host our solution in a production environment, please contact us, and we'll be happy to provide you with a Docker image and assist with configuring the system in exchange for your feedback :)

Self-Hosting vs Bemi Cloud

Self-HostingBemi Cloud
Automatic data change tracking
PostgreSQL source database
Automatic table partitioning
Automatic data retention
Autoscaling and high availability
Control plane and monitoring
Automatic updates
Included support
Activity Log UI (coming soon)