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

Uploaded CPython 3.10+Windows x86-64

rivers-0.2.2-cp310-abi3-musllinux_1_2_x86_64.whl (36.1 MB view details)

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

rivers-0.2.2-cp310-abi3-musllinux_1_2_aarch64.whl (34.9 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

rivers-0.2.2-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.2.2-cp310-abi3-manylinux_2_28_aarch64.whl (28.3 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

rivers-0.2.2-cp310-abi3-macosx_11_0_arm64.whl (28.6 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

rivers-0.2.2-cp310-abi3-macosx_10_13_x86_64.whl (29.6 MB view details)

Uploaded CPython 3.10+macOS 10.13+ x86-64

File details

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

File metadata

  • Download URL: rivers-0.2.2-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.2.2-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 4ff923947c0a0ce63edc9bbdfad8b5bdb68214ec601a6884c47a1cb91153b56a
MD5 0630984c53675ff51711a761eb5c67de
BLAKE2b-256 ba34fdf963250c441defeb5a1e13ab9785b21282b5285dafeb8681ce7410906e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rivers-0.2.2-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2a17fbfbd3cbcdfedebddbd19ffaf87c176b02d805b13a5505a50851d928919a
MD5 bdb47c7bd824b82a138219ecda76e30b
BLAKE2b-256 c4636b6d135fb4e88c37f7eb32a090383a9e1054c3484068f2ff90136c6b4f27

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rivers-0.2.2-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 421ca045c1b6ff3c78fafb1ca0d49bc0b3b59bcf4c7c01de0ae0ac8590f85c5a
MD5 628948defda2a20181f0971c324d5420
BLAKE2b-256 ca81902384a6cd2a1d68f3e26e8fff4a29417ad988faa3d815d607ea181e91a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rivers-0.2.2-cp310-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6c8b893641843aa1d280875fc3e51a1041e8b250b98f2ad2da02ad6e8e360aa3
MD5 20121466a45dab10dd4427cca0930237
BLAKE2b-256 05282afb84ad47c5d0cbcd27afe88b4e42660f4b2c22eb9511ffd4f8f3c29115

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rivers-0.2.2-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0e53c817a4aa4288ad57178abc7653f134d2c9853477ce67fce67076b01f88b1
MD5 b9ec98d5e9c462a11cb06e57b6680722
BLAKE2b-256 40462277735b7d947a76ca8201a8fba80b69578671632abaacab95c9aa94b741

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rivers-0.2.2-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5ec9bbecf2d711b0de6f9ac7eaf116d03c07d48012e5282264c187b7e8ec98c6
MD5 443829d258bb85d5b5c19e9fd9c7320d
BLAKE2b-256 11d20073bf1f4bd3607d33b0750343129613e9e70923241de6f944b5dafe9c9b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rivers-0.2.2-cp310-abi3-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 eb02e8b611a64bb99d3c5d5f9f55780d280deba3525c5b3ed8cd2338b3d91165
MD5 441d15e223fa0f2119ec258286b05bee
BLAKE2b-256 e9c23b4fcd2800025b4ce84122028506eb403217c6fc136f864a11df1b5f034a

See more details on using hashes here.

Release history Release notifications | RSS feed

0.4.0

7 files

0.3.0

7 files

This release

0.2.2 This release

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