# Home

> A high-performance Postgres replication engine written in Rust. Embed it in your Rust application or run it as a standalone binary.

- Canonical HTML: https://supabase.github.io/etl/
- Agent-readable Markdown: https://supabase.github.io/etl/index.md
- Source: https://github.com/supabase/etl/blob/main/site/content/docs/index.mdx

A high-performance Postgres replication engine written in Rust. Embed it in your Rust application or run it as a standalone binary. For each published table, it performs an initial sync of existing rows, then replicates changes to a destination. Supabase ETL is under active development. APIs and setup steps may change before the first stable release.

For the managed Supabase product, use [Supabase Pipelines](https://supabase.com/docs/guides/database/replication/pipelines).

## Documentation map

### Get started

- [First Pipeline](https://supabase.github.io/etl/guides/first-pipeline.md): Learn Supabase ETL by building a working Postgres replication pipeline.
- [Standalone Replicator](https://supabase.github.io/etl/guides/standalone-replicator.md): Build, configure, and run Supabase ETL as a standalone process.

### Guides

- [Configure Postgres](https://supabase.github.io/etl/guides/configure-postgres.md): Set up Postgres with the permissions and settings required by Supabase ETL.
- [Custom Implementations](https://supabase.github.io/etl/guides/custom-implementations.md): Implement your own stores and destinations.

### Concepts

- [Logical Replication](https://supabase.github.io/etl/explanation/concepts.md): Essential Postgres logical replication concepts for working with Supabase ETL.
- [Architecture](https://supabase.github.io/etl/explanation/architecture.md): How Supabase ETL initially syncs tables and replicates changes to destinations.
- [Schema Changes](https://supabase.github.io/etl/explanation/schema-changes.md): How Supabase ETL handles DDL and evolving table schemas.

### Reference

- [Destinations](https://supabase.github.io/etl/reference/destinations.md): Official built-in destinations, maturity, requirements, and limitations.
- [Events](https://supabase.github.io/etl/explanation/events.md): Understand the events Supabase ETL delivers during ongoing replication.
- [Extension Points](https://supabase.github.io/etl/explanation/traits.md): Traits you implement to customize Supabase ETL behavior.

## Replication phases

1. **Initial sync:** Copy the existing rows selected by the publication.
2. **Ongoing replication:** Capture subsequent inserts, updates, deletes, and truncates, then deliver those changes as ordered events.

Streaming describes a transfer mode that may be used within either phase; it is not a separate replication phase. Across both phases, ETL persists checkpoints and table state so replication can recover safely after a restart.