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), Delta Lake with merge support, and Apache Iceberg with upserts.
  • 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[iceberg]   # Apache Iceberg 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.6.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.6.0
File
rivers-0.6.0-cp315-abi3.abi3t-win_amd64.whl CPython 3.15 abi3t, abi3 Windows x86-64 Details
rivers-0.6.0-cp315-abi3.abi3t-musllinux_1_2_x86_64.whl CPython 3.15 abi3t, abi3 Linux musl 1.2+ x86-64 Details
rivers-0.6.0-cp315-abi3.abi3t-musllinux_1_2_aarch64.whl CPython 3.15 abi3, abi3t Linux musl 1.2+ ARM64 Details
rivers-0.6.0-cp315-abi3.abi3t-manylinux_2_28_x86_64.whl CPython 3.15 abi3t, abi3 Linux glibc 2.28+ x86-64 Details
rivers-0.6.0-cp315-abi3.abi3t-manylinux_2_28_aarch64.whl CPython 3.15 abi3, abi3t Linux glibc 2.28+ ARM64 Details
rivers-0.6.0-cp315-abi3.abi3t-macosx_11_0_arm64.whl CPython 3.15 abi3, abi3t macOS 11.0+ ARM64 Details
rivers-0.6.0-cp315-abi3.abi3t-macosx_10_13_x86_64.whl CPython 3.15 abi3t, abi3 macOS 10.13+ x86-64 Details
rivers-0.6.0-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
rivers-0.6.0-cp314-cp314t-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 Details
rivers-0.6.0-cp314-cp314t-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64 Details
rivers-0.6.0-cp314-cp314t-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64 Details
rivers-0.6.0-cp314-cp314t-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64 Details
rivers-0.6.0-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
rivers-0.6.0-cp314-cp314t-macosx_10_13_x86_64.whl CPython 3.14 CPython 3.14 free-threading macOS 10.13+ x86-64 Details
rivers-0.6.0-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details
rivers-0.6.0-cp311-abi3-musllinux_1_2_x86_64.whl CPython 3.11 abi3 Linux musl 1.2+ x86-64 Details
rivers-0.6.0-cp311-abi3-musllinux_1_2_aarch64.whl CPython 3.11 abi3 Linux musl 1.2+ ARM64 Details
rivers-0.6.0-cp311-abi3-manylinux_2_28_x86_64.whl CPython 3.11 abi3 Linux glibc 2.28+ x86-64 Details
rivers-0.6.0-cp311-abi3-manylinux_2_28_aarch64.whl CPython 3.11 abi3 Linux glibc 2.28+ ARM64 Details
rivers-0.6.0-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details
rivers-0.6.0-cp311-abi3-macosx_10_13_x86_64.whl CPython 3.11 abi3 macOS 10.13+ x86-64 Details

Total release size: 829.1 MB

Release files / rivers-0.6.0-cp315-abi3.abi3t-win_amd64.whl

Download URL rivers-0.6.0-cp315-abi3.abi3t-win_amd64.whl
Size 41.2 MB
Tags CPython 3.15 Windows x86-64 abi3 abi3t
SHA-256 checksum
How to use checksums
533d11af6c4a7482d87b3672b288f1d925c78b068079dc888ab09de408a3c3de
BLAKE2b-256 checksum
How to use checksums
cf1371d8256c77d2b91f89c67471e132c25686d38202af4480f45b9a90c758fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.6.0-cp315-abi3.abi3t-musllinux_1_2_x86_64.whl

Download URL rivers-0.6.0-cp315-abi3.abi3t-musllinux_1_2_x86_64.whl
Size 44.4 MB
Tags CPython 3.15 Linux musl 1.2+ x86-64 abi3 abi3t
SHA-256 checksum
How to use checksums
0210aa3a1d1fcc643ba96b270809788d5ffa6abd34e3ca5b0ddd167c6aa734fb
BLAKE2b-256 checksum
How to use checksums
10eac629aea26c72ac0024a98e4f3b33ad7441640bdb6924a728e9b2929c0816
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.6.0-cp315-abi3.abi3t-musllinux_1_2_aarch64.whl

Download URL rivers-0.6.0-cp315-abi3.abi3t-musllinux_1_2_aarch64.whl
Size 42.7 MB
Tags CPython 3.15 Linux musl 1.2+ ARM64 abi3 abi3t
SHA-256 checksum
How to use checksums
4ba2baf7268a6011b149767926d91e3daa1dfe545545aec1d41829029a0a2a86
BLAKE2b-256 checksum
How to use checksums
ed78ffaa5124bbf3c1c14b2fedee3237bf1ad3718a924d6ad9b33caec0124e86
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.6.0-cp315-abi3.abi3t-manylinux_2_28_x86_64.whl

Download URL rivers-0.6.0-cp315-abi3.abi3t-manylinux_2_28_x86_64.whl
Size 37.8 MB
Tags CPython 3.15 Linux glibc 2.28+ x86-64 abi3 abi3t
SHA-256 checksum
How to use checksums
d767197f81f60d5878943b4fb55b6eeed6eb4e509b9dfbdfb38d65ab6179c839
BLAKE2b-256 checksum
How to use checksums
6a0c383a11aefd013f84dc1d54a572ac58c38f9fbb73ceabf4564dbec50f26b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.6.0-cp315-abi3.abi3t-manylinux_2_28_aarch64.whl

Download URL rivers-0.6.0-cp315-abi3.abi3t-manylinux_2_28_aarch64.whl
Size 36.3 MB
Tags CPython 3.15 Linux glibc 2.28+ ARM64 abi3 abi3t
SHA-256 checksum
How to use checksums
af316a9c32dd99247aaa5747fb9b77e34e115bc2c078a5b8df32559d07a7192d
BLAKE2b-256 checksum
How to use checksums
b9f5e3615f88f0cd61d74b5b7ee1b62119466da8aaf9f1e934cf4a401cafeeab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.6.0-cp315-abi3.abi3t-macosx_11_0_arm64.whl

Download URL rivers-0.6.0-cp315-abi3.abi3t-macosx_11_0_arm64.whl
Size 36.6 MB
Tags CPython 3.15 abi3 abi3t macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
060c523ba1f5379df1f72e47c4843b49c11b2ab417975209c68f98eb550cf32a
BLAKE2b-256 checksum
How to use checksums
5dc09ba8405a7466b35e0b4ed282e097c933fc2ebb872c1eed968285ef66fca5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.6.0-cp315-abi3.abi3t-macosx_10_13_x86_64.whl

Download URL rivers-0.6.0-cp315-abi3.abi3t-macosx_10_13_x86_64.whl
Size 37.7 MB
Tags CPython 3.15 abi3 abi3t macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
bda3624ae2cf45218ea0d4903d62d1f8581cc3c5b542eeddfb7b5fc30a0183a8
BLAKE2b-256 checksum
How to use checksums
0135214c583314ee8c908db64297b146373f493473d0528db1dc44ca7b6866db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.6.0-cp314-cp314t-win_amd64.whl

Download URL rivers-0.6.0-cp314-cp314t-win_amd64.whl
Size 41.0 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
08d4d839a7e9978ffb65d7df8bf10af092f14724f0bedc4f578ac5705969b13d
BLAKE2b-256 checksum
How to use checksums
4e8004b5fb288617f82c25b6795dc3dd2c9dae7b31b797a346733b2dee210653
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.6.0-cp314-cp314t-musllinux_1_2_x86_64.whl

Download URL rivers-0.6.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Size 44.3 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
bd8362886c829a19136d18b5840fb75f2f6875bb96825447576e3244d086a307
BLAKE2b-256 checksum
How to use checksums
efc92703fe8fbb194864427b26c6800ac2eb6db2b5d04e4f6be518739cbcdefb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.6.0-cp314-cp314t-musllinux_1_2_aarch64.whl

Download URL rivers-0.6.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Size 42.7 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
2e02490f0789e95008b9dd0578d9687daee862249b4f2dde422100c848a779ad
BLAKE2b-256 checksum
How to use checksums
fd2067b6081006410409e17ecbd9d566d02b5c22981281e4652dbe80920ebed6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.6.0-cp314-cp314t-manylinux_2_28_x86_64.whl

Download URL rivers-0.6.0-cp314-cp314t-manylinux_2_28_x86_64.whl
Size 37.7 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b8f1a512ad91eebbfef82dfec59d50639c492d77add57ae4bcfd9562c63dfd51
BLAKE2b-256 checksum
How to use checksums
5963164e4e8ffa5449f20e3f2f8f1f74b28dc647e85d26c0b91f26a849c0b6e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.6.0-cp314-cp314t-manylinux_2_28_aarch64.whl

Download URL rivers-0.6.0-cp314-cp314t-manylinux_2_28_aarch64.whl
Size 36.3 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
05ae4eedb5cafb91934b91c31e8b017ab4f5a8654bb87cad559fc6919778c1fd
BLAKE2b-256 checksum
How to use checksums
7ddd231b5ad19cfab46e68c24880e1b1f1d9fd466cdbc60830a14b95182dbbb0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.6.0-cp314-cp314t-macosx_11_0_arm64.whl

Download URL rivers-0.6.0-cp314-cp314t-macosx_11_0_arm64.whl
Size 36.5 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
94a9bbaa9ac099b4e80145892ec6c58a77da9acd32c88dc43be75e6b1006c574
BLAKE2b-256 checksum
How to use checksums
f578fae90c78c2336b3f6de52032159f18d5947ac468b0ce1669d4b9c9a0673b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.6.0-cp314-cp314t-macosx_10_13_x86_64.whl

Download URL rivers-0.6.0-cp314-cp314t-macosx_10_13_x86_64.whl
Size 37.6 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
2381918448de8391ea95986431c6223428f9fe6a22f4d9d5715a905eac63a638
BLAKE2b-256 checksum
How to use checksums
0372383705365baf2e3414ef33eff72c35acc887a29760025a5a99170b15f214
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.6.0-cp311-abi3-win_amd64.whl

Download URL rivers-0.6.0-cp311-abi3-win_amd64.whl
Size 41.0 MB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
46c9a13ee1eecf62fd4d9c3be044b6834782cb9c943d2e4825934f4e5199ef4e
BLAKE2b-256 checksum
How to use checksums
6a90016d415416f038b836d12b37837af85417cc2250e6d27f020a12af68d39a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.6.0-cp311-abi3-musllinux_1_2_x86_64.whl

Download URL rivers-0.6.0-cp311-abi3-musllinux_1_2_x86_64.whl
Size 44.4 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
338e654345ee6bb2761e325944ee8706b318741d31940ca8c2f1d8326f90fb3c
BLAKE2b-256 checksum
How to use checksums
06d4077e3c4a09915b9db7d33180413e9084bace0e3c41ae6d68fc5eff16ea8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.6.0-cp311-abi3-musllinux_1_2_aarch64.whl

Download URL rivers-0.6.0-cp311-abi3-musllinux_1_2_aarch64.whl
Size 42.7 MB
Tags CPython 3.11 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
92ae1f70bf4e8337e9d7fc5ff3ba6533401dd8c74cabd0b4a13d9c1c0238e6bc
BLAKE2b-256 checksum
How to use checksums
fa02dc3fefbb4698c228e8310f911d5ec221ee1c5400e64058bf05803b8e5090
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.6.0-cp311-abi3-manylinux_2_28_x86_64.whl

Download URL rivers-0.6.0-cp311-abi3-manylinux_2_28_x86_64.whl
Size 37.7 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
531cefd301e68bc5d04dadeb30ad0e7ab057b208d6ef1e9658ea536b96044b6c
BLAKE2b-256 checksum
How to use checksums
38f6fd5df0ab6d52290544d0cd6686e689c47f522f6d078632ec3dca6e505660
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.6.0-cp311-abi3-manylinux_2_28_aarch64.whl

Download URL rivers-0.6.0-cp311-abi3-manylinux_2_28_aarch64.whl
Size 36.3 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
35c858b46d128beb22524a743d8b286c621b59944dbc89c64733a348e9e307a0
BLAKE2b-256 checksum
How to use checksums
c0eed882ba1e54ee72588df6b55d47d16b028c8c8bb96952b296c223de253aa1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.6.0-cp311-abi3-macosx_11_0_arm64.whl

Download URL rivers-0.6.0-cp311-abi3-macosx_11_0_arm64.whl
Size 36.5 MB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ca321b6188bfbd809e1c0da8f2be2bbefccfae1b74ff79f387f296338fd363bf
BLAKE2b-256 checksum
How to use checksums
bd86e9c0b70c71030e5ace05c802da74cd138d5ec72f095fd266a766a3981740
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / rivers-0.6.0-cp311-abi3-macosx_10_13_x86_64.whl

Download URL rivers-0.6.0-cp311-abi3-macosx_10_13_x86_64.whl
Size 37.5 MB
Tags CPython 3.11 abi3 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
0ba5e46f0d23c25e62587da588b01f4b8d724043d8eeff90e8e206088ab64aa3
BLAKE2b-256 checksum
How to use checksums
93ac8d45ce9b522e0915af4f895beb6399d62ee2f33e15bf54975ce50b1f6b83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release history Release notifications | RSS feed

This release

0.6.0 This release

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

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