Skip to main content

Self-Hosting

BemiHQ/bemi

When self-hosting Bemi, your data never leaves your premises.

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.

You can try it out locally by using a Docker image:

docker run \
-e DB_HOST=host.docker.internal \
-e DB_PORT=5434 \
-e DB_NAME=bemi_dev_source \
-e DB_USER=postgres \
-e DB_PASSWORD=postgres \
public.ecr.aws/bemi/dev:latest

DB_HOST pointing to host.docker.internal allows accessing 127.0.0.1 on your host machine if you run PostgreSQL outside Docker. See github.com/BemiHQ/bemi for more information.

Self-Hosting (OSS)Bemi Cloud
PostgreSQL source database
Automatic data change tracking
Automatic application context
Audit Trail UI
Priority support
Automatic table partitioning
Automatic data retention
Autoscaling and high availability
Column-based filter rules
Automatic updates and backups
Control plane and monitoring

Self-Hosting Enterprise

Bemi Self-Hosting Enterprise is the most robust way to run Bemi yourself. With this option, you'll get all the optimizations and UI functionality of Bemi Cloud.

To start with Self-Hosting Enterprise, you'll need a valid license key. Talk to us to get started.