# Maxwell's Daemon

> MySQL binlog to JSON change events on Kafka or Kinesis

Maxwell's Daemon reads the MySQL binary log and writes row-level changes as JSON to Kafka, Kinesis, and other streaming platforms — a single-purpose CDC process with no framework around it.

Website: https://maxwells-daemon.io

## Use it when

- The need is exactly this: MySQL changes as JSON on Kafka or Kinesis, consumable without a schema registry or deserializer.
- Operational weight must stay minimal; one JVM process replaces a connector framework, and setup is measured in minutes.
- Classic CDC consumers are the audience: ETL feeds, audit logs, cache invalidation, search-index maintenance.
- Budget is zero; Apache-2.0 with no commercial edition.

## Think twice when

- Any source besides MySQL exists or is planned; there is no PostgreSQL, SQL Server, Oracle, or MongoDB path, and there will not be (Debezium covers those).
- Delivery guarantees must be stronger than at-least-once with careful producer settings (acks=all, retries).
- Schema-aware payloads matter; events are plain JSON rows, with DDL tracked in Maxwell's own schema store rather than in a registry.

## How it runs

A single Java process tails the binlog (binlog_format=row, replication grants, and its own maxwell schema on the source) and writes JSON events to Kafka, Kinesis, and other targets. maxwell-bootstrap loads existing tables; include/exclude filters and JavaScript hooks shape the stream.

## Details

### General

| Attribute | Value |
| --- | --- |
| License | Open source (permissive) |
| SPDX identifier | Apache-2.0 |
| Deployment | Self-hosted |
| Workload | Streaming |
| Operational complexity | Low |
| Pricing | Free |
| Language | Java |
| Repository | https://github.com/zendesk/maxwell |
| Documentation | https://maxwells-daemon.io |
| Stars | 4.3k |

### Change Data Capture

| Attribute | Value |
| --- | --- |
| Sources | MySQL only |
| Source requirements | binlog_format=row, REPLICATION grants, and its own maxwell schema |
| What you run | One JVM process; state kept in a maxwell schema on MySQL |
| Initial snapshot | maxwell-bootstrap for initial table load |
| End-to-end lag | Near real-time; tails the binlog continuously |
| Delivery guarantee | At-least-once: requires acks=all and retries |
| Schema drift | Tracks DDL in its own schema store; can emit DDL events |
| Transformations | Include/exclude filters; JavaScript hooks can edit or suppress rows |
| Destinations | Kafka, Kinesis and other stream targets |
| Billing unit | None: Apache-2.0 with no commercial edition |

## Capabilities

- [Change Data Capture](https://matca.io/capabilities/change-data-capture)

---

Source: https://matca.io/maxwell
Last updated: 2026-08-31T11:40:46.769Z
