DTM
DTM is an open-source distributed transaction manager that provides SAGA, TCC, XA, workflow and outbox patterns for consistent data across microservices.
- GitHub stars
- 11k
- Last commit
- 9 mo ago
- Latest release
- v1.19.0
- Licence
- BSD-3-Clause
- Self-hosted
- Yes

DTM is a distributed transaction framework that keeps data consistent across services and databases. When an operation spans several microservices, such as moving money between banks, DTM coordinates the steps so the end result is eventually consistent even if one service fails partway through.
It supports several transaction patterns, including SAGA, TCC, XA, workflow and outbox, and offers a two-phase message approach that it presents as a cleaner alternative to the usual outbox pattern. SDKs exist for Go, Java, PHP, C#, Python and Node.js. It works with MySQL and MariaDB, Redis, MongoDB and Postgres, and stores its own state in engines such as MySQL, Redis or BoltDB for development.
DTM is written in Go and released under the BSD-3-Clause licence. It is designed for high availability and horizontal scaling, and integrates with microservice frameworks like go-zero and Kratos. Typical scenarios include cache consistency, inventory deduction in flash sales and order systems, so it suits backend teams working on distributed systems.
Key features
- SAGA, TCC, XA, and outbox patterns
- Workflow mode for composed transactions
- SDKs for Go, Java, PHP, and more
- MySQL, Redis, MongoDB, and Postgres support
- Pluggable storage engines for coordinator state
- Horizontal scaling and high availability
Pricing: Free and open source under the BSD-3-Clause licence.