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.

License

rivers is licensed under the Apache License, Version 2.0.

Metadata

Release files for rivers 0.4.3

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.3
File
rivers-0.4.3-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
rivers-0.4.3-cp310-abi3-musllinux_1_2_x86_64.whl CPython 3.10 abi3 Linux musl 1.2+ x86-64 Details
rivers-0.4.3-cp310-abi3-musllinux_1_2_aarch64.whl CPython 3.10 abi3 Linux musl 1.2+ ARM64 Details
rivers-0.4.3-cp310-abi3-manylinux_2_28_x86_64.whl CPython 3.10 abi3 Linux glibc 2.28+ x86-64 Details
rivers-0.4.3-cp310-abi3-manylinux_2_28_aarch64.whl CPython 3.10 abi3 Linux glibc 2.28+ ARM64 Details
rivers-0.4.3-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
rivers-0.4.3-cp310-abi3-macosx_10_13_x86_64.whl CPython 3.10 abi3 macOS 10.13+ x86-64 Details

Total release size: 226.8 MB

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

Download URL rivers-0.4.3-cp310-abi3-win_amd64.whl
Size 32.9 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
015b0e7c45c8be56574d8b1726748306defce6169d4565e77f3d6009acd4c99d
BLAKE2b-256 checksum
How to use checksums
6204046c7d1285594e67c17ed6fcd7ea93ce9388fe1dcfda1d2355fa2e7081d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

Download URL rivers-0.4.3-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
3c9da70819fd85212a4ed2e1df5fef30f77fb2ce080165e20b9e3f4171098e75
BLAKE2b-256 checksum
How to use checksums
3183702f915cee5a38b2eafa8633c7521e0c0c5be02b6acb1bbb0e983b51ffe5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

Download URL rivers-0.4.3-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
7b403355fe02e24864ab57b0b842e8a272dbbe06f5ca8a05639b1d09973c96d3
BLAKE2b-256 checksum
How to use checksums
01ac8f0eed8f22656700796b5f9957f08c3d89238388c67adbad658c7b658046
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

Download URL rivers-0.4.3-cp310-abi3-manylinux_2_28_x86_64.whl
Size 30.6 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
2e8ea9de634cfd892cb017debf2994277daa8d79c2051a6e49db49e7bcf80871
BLAKE2b-256 checksum
How to use checksums
8a9682db5f1d57d11710b3b523a4f0e10e8131127b056ed6f243c42b87b863a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

Download URL rivers-0.4.3-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
c1fd6b7170b268262c3393317bcb003a76d8ad914ee4432d5ba27ef0eb0e1155
BLAKE2b-256 checksum
How to use checksums
4975e7e4427919f16bc6e604599aebceb0c4fbd0f7c632c25bc2e56b9b4f1bd2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

Download URL rivers-0.4.3-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
6f9ec0ad20cce0d3cc82f7693100a136fd1d0c52a9a7459db913386be380ccf5
BLAKE2b-256 checksum
How to use checksums
52dc6cb22095a19649ddbc12bcd629a04eb8df36450fca09b973aa36fff03e80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

Download URL rivers-0.4.3-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
27546a741dbcb5916d86772e0e8df7667c54372be2d7227bd63d772a37ffe073
BLAKE2b-256 checksum
How to use checksums
46383898d8227fe9a6fa52c2cad7adeeabc5093c3ee08b8570789c2e844b9e35
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

This release

0.4.3 This release

7 release files

0.4.2

7 release files

0.4.1

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