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

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

Total release size: 259.7 MB

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

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

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

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

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

Download URL rivers-0.5.0-cp310-abi3-musllinux_1_2_aarch64.whl
Size 40.5 MB
Tags CPython 3.10 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
8752cd8a6f14708c29548dbc4ec0f8c4185eca3a98c2972675de76092cefa292
BLAKE2b-256 checksum
How to use checksums
6169846f5d75ac04a8233547c8266c7665f7e141c348081699c7d757930a04fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

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

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

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

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

Download URL rivers-0.5.0-cp310-abi3-macosx_11_0_arm64.whl
Size 34.3 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e5b961fc8393be0cc44976e845fbef057554f34fe4177422981136ddbd487cd3
BLAKE2b-256 checksum
How to use checksums
75b92b9d1bc645bbac8cb357846790dd47aeffa872abe30e90912396cfdb537a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

Download URL rivers-0.5.0-cp310-abi3-macosx_10_13_x86_64.whl
Size 35.4 MB
Tags CPython 3.10 abi3 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
508e88ca778e3d030661fda28d0c8843960f80888efd709d2e07c224c6dc293d
BLAKE2b-256 checksum
How to use checksums
36c233c38718238d828b8f4613338ea2cc6cb9b76aa99c6441d4aee33333ad69
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

This release

0.5.0 This release

7 release files

0.4.4

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