Lightweight, source-safe data extraction from PostgreSQL and MySQL to Parquet/CSV.
Rivet is a single-binary CLI that exports query results from relational databases to files — locally, to S3, to GCS, or to stdout. It is extract-only (no loading, no merging, no CDC) and designed to be gentle on production databases through tuning profiles, preflight health checks, and intelligent retry with backoff.
Names. The project and CLI are Rivet; the command is
rivet. On crates.io the package is published asrivet-clibecause the crate namerivetwas already taken. Homebrew and release archives install therivetbinary.
Rivet does extraction end-to-end — query, batch, retry, validate, reconcile, checkpoint, plan/apply — from PostgreSQL 12–16 and MySQL 5.7 / 8.0 to Parquet (zstd / snappy / gzip / lz4 / none) or CSV. Destinations: local, Amazon S3, Google Cloud Storage, stdout. See docs/ for the full feature list and contracts.
Rivet is not a loader, a CDC platform, an ELT orchestrator, or a SaaS connector marketplace. It deliberately stops at "file on disk / in a bucket" — you bring the warehouse side yourself.
Documentation language: English-only. See CONTRIBUTING.md.
More walkthroughs: plan / apply · reconcile + repair. Source scripts in docs/gifs/.
brew install panchenkoai/rivet/rivet
rivet --versionRequires Rust 1.94+:
cargo install rivet-cli
rivet --versionThe binary is named
rivet. The crate is published asrivet-clibecause therivetname on crates.io is taken.
Download the latest release for your platform from GitHub Releases:
# macOS (Apple Silicon)
curl -L https://github.com/panchenkoai/rivet/releases/latest/download/rivet-aarch64-apple-darwin.tar.gz | tar xz
sudo mv rivet-*/rivet /usr/local/bin/
# macOS (Intel)
curl -L https://github.com/panchenkoai/rivet/releases/latest/download/rivet-x86_64-apple-darwin.tar.gz | tar xz
sudo mv rivet-*/rivet /usr/local/bin/
# Linux (x86_64)
curl -L https://github.com/panchenkoai/rivet/releases/latest/download/rivet-x86_64-unknown-linux-gnu.tar.gz | tar xz
sudo mv rivet-*/rivet /usr/local/bin/
# Linux (arm64)
curl -L https://github.com/panchenkoai/rivet/releases/latest/download/rivet-aarch64-unknown-linux-gnu.tar.gz | tar xz
sudo mv rivet-*/rivet /usr/local/bin/rivet --versiondocker run --rm ghcr.io/panchenkoai/rivet:latest --version
docker run --rm \
-e DATABASE_URL="postgresql://user:pass@host.docker.internal:5432/db" \
-v $(pwd)/examples/rivet.yaml:/config/rivet.yaml \
-v $(pwd)/output:/output \
ghcr.io/panchenkoai/rivet:latest \
run --config /config/rivet.yamlFrom a container,
localhostis not your machine. Usehost.docker.internal(Docker Desktop) or--add-host=host.docker.internal:host-gatewayon Linux. See Getting Started for details.
Requires Rust 1.94+:
git clone https://github.com/panchenkoai/rivet.git
cd rivet
cargo build --release
# binary is at target/release/rivet| Topic | Link |
|---|---|
| All docs (index) | docs/README.md |
| First run — install, connect, export | docs/getting-started.md |
Export modes (full, incremental, chunked, time_window) |
docs/modes/ |
| Destinations (local, S3, GCS, stdout) | docs/destinations/ |
| Config YAML reference | docs/reference/config.md |
| CLI commands and flags | docs/reference/cli.md |
| Tuning profiles | docs/reference/tuning.md |
Scaffold config from a live DB (rivet init) |
docs/reference/init.md |
| Pipeline, traits, memory model, source layout | docs/architecture.md |
| Quickstart: PostgreSQL | docs/pilot/quickstart-postgres.md |
| Quickstart: MySQL | docs/pilot/quickstart-mysql.md |
| Demo on a pre-seeded 14-table fixture (~10 min) | docs/pilot/demo-quickstart.md |
| Pilot walkthrough — discovery → reconcile → repair | docs/pilot/pilot-walkthrough.md |
| Production checklist | docs/pilot/production-checklist.md |
| Architecture decision records | docs/adr/ |
| Contributing, tests, CI | CONTRIBUTING.md |
- Latest release and version history: CHANGELOG.md.
- Strategy, pains, and execution tracker: rivet_roadmap.md — the single source of truth for what is shipped and what is open.
