Skip to main content
rivers

Orchestration platform for tasks and assets, fully backed by Rust.

rivers is a Rust-powered orchestration platform built around data assets. Define pipelines in Python; rivers resolves the graph, plans execution - no Python interpreter on the control plane.

Documentation · Issues · Discussions

Key features

  • Asset-based orchestration — define data assets as Python functions; rivers resolves the dependency graph automatically.
  • Rust core — graph resolution, execution planning, partition logic, and the scheduler all run in compiled Rust.
  • Multiple asset types — single, multi-output, graph (composing Tasks into sub-DAGs), and external assets.
  • Partitioning — static, time-window (daily/hourly/custom cron), multi-dimensional, and runtime-extensible dynamic partitions.
  • Pluggable IO — built-in handlers for in-memory, pickle (any object store), and Delta Lake with merge support.
  • Parallel & distributed execution — Executor.parallel() for concurrent subprocess workers, Executor.kubernetes() for one-pod-per-step on K8s.
  • Schedules, sensors, and automation conditions — declarative triggers (cron, event-driven, dep-aware) executed by the rivers daemon.
  • Backfills — partition-range execution with multi-run, single-run, and per-dimension strategies.
  • Persistent storage — embedded SurrealDB + RocksDB for local dev, SurrealDB server for production.
  • Concurrency control — run-queue limits, tag concurrency, and step-level concurrency pools.
  • Single-binary dev experience — rivers dev <module> boots SurrealDB (embedded RocksDB), the scheduler, and the web UI on :3000 in one process.

Performance

Hot paths run in compiled Rust: graph resolution, partition mapping, execution planning, the scheduler. Python is the API surface only. Plan times stay sub-millisecond on graphs with thousands of nodes. The UI is Rust too — Leptos SSR + WASM on axum, state read straight from SurrealDB and pushed to the browser via Server-Sent Events.

Kubernetes-native

rivers ships with a Kubernetes operator and CRDs. Declare a repo as a CodeLocation:

apiVersion: rivers.io/v1alpha1
kind: CodeLocation
metadata:
  name: analytics
spec:
  image: ghcr.io/acme/pipelines
  tag: v0.2.0
  module: pipelines.analytics

The operator resolves the image to a digest, reconciles a Deployment + Service running rivers serve, registers it with the UI's discovery registry, and re-polls the registry to keep the digest fresh. Multi-arch images (linux/amd64, linux/arm64) and Helm charts are published to ghcr.io on every release with SLSA build-provenance attestations.

See the installation guide for the full setup — helm install commands, common values, and an architecture overview with the reconciliation and run sequence diagrams.

Install

pip install rivers

Optional extras for IO handlers:

pip install rivers[delta]     # Delta Lake support
pip install rivers[pyarrow]   # PyArrow table support
pip install rivers[polars]    # Polars DataFrame support

Quick example

import rivers as rs

@rs.Asset
def raw_data():
    return {"users": 100, "events": 5000}

@rs.Asset
def summary(raw_data: dict):
    return f"{raw_data['users']} users, {raw_data['events']} events"

repo = rs.CodeRepository(assets=[raw_data, summary])
result = repo.materialize()

print(repo.load_node("summary"))  # "100 users, 5000 events"

See the Getting Started guide for partitioning, jobs, IO handlers, and the K8s executor.

Contributing

Contributions are welcome. See CONTRIBUTING.md for development setup (just develop, just test, just pre-commit), code conventions, and the test matrix. The docs/ directory hosts both the user-facing guides and architectural notes for contributors.

Metadata

Release files for rivers 0.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for rivers 0.4.1
File
rivers-0.4.1-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
rivers-0.4.1-cp310-abi3-musllinux_1_2_x86_64.whl CPython 3.10 abi3 Linux musl 1.2+ x86-64 Details
rivers-0.4.1-cp310-abi3-musllinux_1_2_aarch64.whl CPython 3.10 abi3 Linux musl 1.2+ ARM64 Details
rivers-0.4.1-cp310-abi3-manylinux_2_28_x86_64.whl CPython 3.10 abi3 Linux glibc 2.28+ x86-64 Details
rivers-0.4.1-cp310-abi3-manylinux_2_28_aarch64.whl CPython 3.10 abi3 Linux glibc 2.28+ ARM64 Details
rivers-0.4.1-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
rivers-0.4.1-cp310-abi3-macosx_10_13_x86_64.whl CPython 3.10 abi3 macOS 10.13+ x86-64 Details

Total release size: 227.0 MB

Release files / rivers-0.4.1-cp310-abi3-win_amd64.whl

Download URL rivers-0.4.1-cp310-abi3-win_amd64.whl
Size 33.0 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
72b8e60e80164bdd97a145a4eb10173e703133a855b43d9bca4ab811554a1ae4
BLAKE2b-256 checksum
How to use checksums
2368b15e161927804405947ade6825baa04487ac7fca6af04b3583b7b3509c09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.4.1-cp310-abi3-musllinux_1_2_x86_64.whl

Download URL rivers-0.4.1-cp310-abi3-musllinux_1_2_x86_64.whl
Size 37.4 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
d4c938c7d742b33874be6c1b53ecd912695b16b8a078c9f153d298c6a57287fb
BLAKE2b-256 checksum
How to use checksums
a590425ae56b3670b1015750867e068c0a2101a557643d634fcbce06ff431e54
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.4.1-cp310-abi3-musllinux_1_2_aarch64.whl

Download URL rivers-0.4.1-cp310-abi3-musllinux_1_2_aarch64.whl
Size 35.9 MB
Tags CPython 3.10 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
7b993ce706e78d360f4632628fb165b5ae10ecfb8f22d917e56b528b9a92c5b0
BLAKE2b-256 checksum
How to use checksums
75d949139bccf7f4f4e4aea7d06f57315510ecf529ac957a68773503cff23464
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.4.1-cp310-abi3-manylinux_2_28_x86_64.whl

Download URL rivers-0.4.1-cp310-abi3-manylinux_2_28_x86_64.whl
Size 30.7 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
74db2992de114c8d56156190d00abbc16ed89094d9c989d494fc107e0116d356
BLAKE2b-256 checksum
How to use checksums
3f0d526a5932386f5ca40eac7bb1a08eefaef12ad83785b3be11ac2d47107df3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.4.1-cp310-abi3-manylinux_2_28_aarch64.whl

Download URL rivers-0.4.1-cp310-abi3-manylinux_2_28_aarch64.whl
Size 29.6 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
c8cc586d35e61d282c2b13aaf87eb4dd3c76d18d4fb7f8d8bc8916a71f0a2c6e
BLAKE2b-256 checksum
How to use checksums
aa4fd731ab595a6163917bfb83703b77e8ced1bbf32dde09c863ffd539885f46
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.4.1-cp310-abi3-macosx_11_0_arm64.whl

Download URL rivers-0.4.1-cp310-abi3-macosx_11_0_arm64.whl
Size 29.8 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2a2b2ee2d9d00db0939e0e15a7df67f61508a854f4ef08bb9e4a5027e827e8d1
BLAKE2b-256 checksum
How to use checksums
0b61c710314550d54b7fa29ecb46cd172b9755996e452d013aa650320362057a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.4.1-cp310-abi3-macosx_10_13_x86_64.whl

Download URL rivers-0.4.1-cp310-abi3-macosx_10_13_x86_64.whl
Size 30.6 MB
Tags CPython 3.10 abi3 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
635506ff0fc91525ab34ec40111526239e99cb661dcb813557a3ec8abfc9db3e
BLAKE2b-256 checksum
How to use checksums
2fc9060eacf761e2354b214d836e6b7663b282c96310dd25ee8bf64a0f71384c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release history Release notifications | RSS feed

0.6.0

21 release files

0.5.0

7 release files

0.4.4

7 release files

0.4.3

7 release files

0.4.2

7 release files

This release

0.4.1 This release

7 release files

0.4.0

7 release files

0.3.0

7 release files

0.2.2

7 release files

0.2.1

7 release files

0.2.0

7 release files

0.1.4

7 release files

0.1.3

7 release files

0.1.2

7 release files

0.1.1

7 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page