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.4

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

Total release size: 221.0 MB

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

Download URL rivers-0.4.4-cp310-abi3-win_amd64.whl
Size 32.2 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
6d1fdf63feebf3f7a8b1764ba7fb806420855980c3266c17b040f31d414998ce
BLAKE2b-256 checksum
How to use checksums
a9d0d483da969d7fdd927c202b786430c5df346e4cf04e2187a5b2666d231ee5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

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

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

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

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

Download URL rivers-0.4.4-cp310-abi3-manylinux_2_28_x86_64.whl
Size 29.9 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
7349b846f91f447c9334f679641349a7c880153b6e315057e5f0e7376613a3e9
BLAKE2b-256 checksum
How to use checksums
7901b12996388ec3b1209e4dc02015ca9a79d40a9e1e5d5f98b28e594a893cee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

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

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

Download URL rivers-0.4.4-cp310-abi3-macosx_11_0_arm64.whl
Size 28.9 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7effb4aa662ab9793b3f141dd3c0dc39272c2ea50fb955cc6c65b5f18a6ea7a2
BLAKE2b-256 checksum
How to use checksums
761f7897deb8fb8b0900b9f390fd42048a7fd48c2fe7c9b38383d02155b8223a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

Download URL rivers-0.4.4-cp310-abi3-macosx_10_13_x86_64.whl
Size 29.9 MB
Tags CPython 3.10 abi3 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
48b9a0d3313a3817c1357f991eb153768b34bb324b80cec631c72582b5ee22ee
BLAKE2b-256 checksum
How to use checksums
d14fa13258a0cc839c995e79e7ad692a85fbec09477e182fdb35e366977793f2
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

This release

0.4.4 This release

7 release files

0.4.3

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