ETL Documentation
Build real-time Postgres replication applications in Rust
ETL is a Rust framework by Supabase for building high‑performance, real‑time data replication apps on Postgres. It sits on top of Postgres logical replication and gives you a clean, Rust‑native API for streaming changes to your own destinations.
Getting Started
Choose your path based on your needs:
New to ETL?
Start with our Tutorials to learn ETL through hands-on examples:
- Build your first ETL pipeline - Complete beginner's guide (15 minutes)
- Build custom stores and destinations - Advanced patterns (30 minutes)
Ready to solve specific problems?
Jump to our How-To Guides for practical solutions:
- Configure Postgres for replication
- More guides coming soon
Want to understand the bigger picture?
Read our Explanations for deeper insights:
- ETL architecture overview
- More explanations coming soon
Features
- Real‑time replication: stream changes in real time to your own destinations
- High performance: configurable batching and parallelism to maximize throughput
- Fault-tolerant: robust error handling and retry logic built-in
- Extensible: implement your own custom destinations and state/schema stores
- Production destinations: BigQuery and Apache Iceberg officially supported
- Type-safe: fully typed Rust API with compile-time guarantees
Quick Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | |
Next Steps
- First time using ETL? → Start with Build your first pipeline
- Need Postgres setup help? → Check Configure Postgres for Replication
- Need technical details? → Check the Reference
- Want to understand the architecture? → Read ETL Architecture
Contributing
We welcome pull requests and GitHub issues. We currently cannot accept new custom destinations unless there is significant community demand, as each destination carries a long-term maintenance cost. We are prioritizing core stability, observability, and ergonomics. If you need a destination that is not yet supported, please start a discussion or issue so we can gauge demand before proposing an implementation.