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.3.0-cp310-abi3-win_amd64.whl (31.6 MB view details)

Uploaded CPython 3.10+Windows x86-64

rivers-0.3.0-cp310-abi3-musllinux_1_2_x86_64.whl (36.3 MB view details)

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

rivers-0.3.0-cp310-abi3-musllinux_1_2_aarch64.whl (35.0 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

rivers-0.3.0-cp310-abi3-manylinux_2_28_x86_64.whl (29.5 MB view details)

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

rivers-0.3.0-cp310-abi3-manylinux_2_28_aarch64.whl (28.5 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

rivers-0.3.0-cp310-abi3-macosx_11_0_arm64.whl (28.8 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

rivers-0.3.0-cp310-abi3-macosx_10_13_x86_64.whl (29.9 MB view details)

Uploaded CPython 3.10+macOS 10.13+ x86-64

File details

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

File metadata

  • Download URL: rivers-0.3.0-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 31.6 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.3.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 3115e3399aa45a54ba4139d8008efbbf629517684caf3eb014f347c716841976
MD5 c3f06b52ee58e8d3ffa8f738ac7e774d
BLAKE2b-256 a5744909cc9c9d1b9ca0096268f5502f5ef97f7a43376cfb6e3142fd647b641f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rivers-0.3.0-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 58831766fb7cefbe0130751e9a741cbc0fdda58fce9083a6713c823387561fdf
MD5 1f9b4fed6bde571ccd162ad07504162b
BLAKE2b-256 c24053b0a0f7619bf46e5198cb483df9858164859f1df75be4468f4451b31f8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rivers-0.3.0-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ee3d8622d130b7347dac0fa4e6a88ec9d097b0d855f74a9804efcdfde6d9c2f8
MD5 ccbf4776f390a1e80b7c2707e81c824a
BLAKE2b-256 319cac4e160c1283d09d396dd621c1ae5d6b4cdd463ea662b4b971aa834fcccd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rivers-0.3.0-cp310-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f539fc155c1fb62d3b0b10d2d879e7558f8145148c59146aaa637866aef8e2f7
MD5 5a5669c69c03843022982ee1783c942e
BLAKE2b-256 1ca5b48cb523a21f8d53ec22fb8f49c8df57691a21b3241c153209f9a7f8520c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rivers-0.3.0-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bf30f0b0ecf05d011917bc1c7e8f185690d549cdf298f45afa4ad6eb82fb66f8
MD5 1d848f00e214395e239eaa5f7b8ba8aa
BLAKE2b-256 75d8bcc1874a13bfa48e9aaadf7ee43318a8a5fca643cc19a839574b4257b0e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rivers-0.3.0-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 18e5d74c67e237c3476ae5c65a5592afacaa688939f112748d25dcead519fd97
MD5 c23d5faa0b34f28c3ba7ce552699af1f
BLAKE2b-256 714b13149f8ab5006bdea6d8fe2a9f218c27149fe88a7e993df1c71fc7b8c38b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rivers-0.3.0-cp310-abi3-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 ef417905e8e40d0c8bc9b24acf0b0887c3363be6fe9f93d7745f0c08215d85ce
MD5 ad291c90949a8400204283444695190f
BLAKE2b-256 4c2a008fda25828871916f4b81bcd1fbb6016fb9cdc22ea6f2de8e8483a95795

See more details on using hashes here.

Release history Release notifications | RSS feed

0.4.0

7 files

This release

0.3.0 This release

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