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

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

Total release size: 226.7 MB

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

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

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

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

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

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

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

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

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

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

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

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

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

Download URL rivers-0.4.2-cp310-abi3-macosx_10_13_x86_64.whl
Size 30.5 MB
Tags CPython 3.10 abi3 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
508b53390e5a02476d1857e44d635fb2da486fc77eec3211a882d7a0aaff4695
BLAKE2b-256 checksum
How to use checksums
27b2b35bfa8a54ae571ed3e5bf3280bc7956832a53282c85cda021bb67c68ee7
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

This release

0.4.2 This release

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