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 executionExecutor.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 experiencerivers 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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

rivers-0.4.0-cp310-abi3-win_amd64.whl (32.8 MB view details)

Uploaded CPython 3.10+Windows x86-64

rivers-0.4.0-cp310-abi3-musllinux_1_2_x86_64.whl (37.1 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ x86-64

rivers-0.4.0-cp310-abi3-musllinux_1_2_aarch64.whl (35.7 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

rivers-0.4.0-cp310-abi3-manylinux_2_28_x86_64.whl (30.5 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ x86-64

rivers-0.4.0-cp310-abi3-manylinux_2_28_aarch64.whl (29.5 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

rivers-0.4.0-cp310-abi3-macosx_11_0_arm64.whl (29.8 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

rivers-0.4.0-cp310-abi3-macosx_10_13_x86_64.whl (30.8 MB view details)

Uploaded CPython 3.10+macOS 10.13+ x86-64

File details

Details for the file rivers-0.4.0-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: rivers-0.4.0-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 32.8 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for rivers-0.4.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 8c82cb7fcf71a23f9677ddda1b56d2b1b7be45920c7deff33ee42d5768ee3cb8
MD5 09eceb20d37c0bebedaf068fbae39da5
BLAKE2b-256 bc152e73f8725f0691ff2287c0b8dd8546e2c41520c43291f53d1af406b9b0e0

See more details on using hashes here.

File details

Details for the file rivers-0.4.0-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for rivers-0.4.0-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9ba62fd80dbfda6a602c20218112ef38957542049f432da374b23d3a5401fead
MD5 f5df210bb6c2d31d41260ba97bd4ae08
BLAKE2b-256 895e47fe073b953dcc2087bd59710d16a2439e3db09a624fd6ff0fb30445118e

See more details on using hashes here.

File details

Details for the file rivers-0.4.0-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for rivers-0.4.0-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 928657a15e8dfe89e163a593a5eeea712e4a04480e820266ef4d02b5c66138a7
MD5 4cc56ed0965e04bddab212bf5ce972cf
BLAKE2b-256 8fe6ef2bf522c191335995a6ef8e58d78191b10b6c053c6f160cddc6c2be88ba

See more details on using hashes here.

File details

Details for the file rivers-0.4.0-cp310-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rivers-0.4.0-cp310-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0063d105a0722b8f41d22801d0399054056f148c8ce94e341612cc3a85186e34
MD5 c19c3953ad4403623f7e869430473d91
BLAKE2b-256 fe431d03bcc7909972213c6d11607374c02b4cb31c8001b2eb3258dcb0279e65

See more details on using hashes here.

File details

Details for the file rivers-0.4.0-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for rivers-0.4.0-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 acec93de3beded3862de9bdc3aed4daf4504cd2b9ff326b5ea7048d4b74f848b
MD5 8dc009c7017017c09558aebe34700d68
BLAKE2b-256 8877e3e65a37c01752b2653977ce80bcc8bdce09ee6bc6ad41200eaf0953b820

See more details on using hashes here.

File details

Details for the file rivers-0.4.0-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rivers-0.4.0-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8e816d40c46d626265cae9a0349220e29270ce9746ae740ef606c2731ef1c2f2
MD5 f966d9de0bf53261cbc8c98c2bb31a90
BLAKE2b-256 beccec73277f2ead4d33d83bd4864f19397048a3b34a4f60d4dbcc39b1c59481

See more details on using hashes here.

File details

Details for the file rivers-0.4.0-cp310-abi3-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for rivers-0.4.0-cp310-abi3-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 de7d74e5f7588faae81f8fd4914963ae120b6e1aaa87b7a701de6879f1ac96a0
MD5 d1803a076fc9db7b94b7fb8d50eda21a
BLAKE2b-256 c7ec3746496943d83988e49a32fd89b0c312b8c99f0a3e118a7238c794a61bf5

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.4.0 This release

7 files

0.3.0

7 files

0.2.2

7 files

0.2.1

7 files

0.2.0

7 files

0.1.4

7 files

0.1.3

7 files

0.1.2

7 files

0.1.1

7 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