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

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.1
File
rivers-0.6.1-cp315-abi3.abi3t-win_amd64.whl CPython 3.15 abi3, abi3t Windows x86-64 Details
rivers-0.6.1-cp315-abi3.abi3t-musllinux_1_2_x86_64.whl CPython 3.15 abi3, abi3t Linux musl 1.2+ x86-64 Details
rivers-0.6.1-cp315-abi3.abi3t-musllinux_1_2_aarch64.whl CPython 3.15 abi3t, abi3 Linux musl 1.2+ ARM64 Details
rivers-0.6.1-cp315-abi3.abi3t-manylinux_2_28_x86_64.whl CPython 3.15 abi3t, abi3 Linux glibc 2.28+ x86-64 Details
rivers-0.6.1-cp315-abi3.abi3t-manylinux_2_28_aarch64.whl CPython 3.15 abi3t, abi3 Linux glibc 2.28+ ARM64 Details
rivers-0.6.1-cp315-abi3.abi3t-macosx_11_0_arm64.whl CPython 3.15 abi3t, abi3 macOS 11.0+ ARM64 Details
rivers-0.6.1-cp315-abi3.abi3t-macosx_10_13_x86_64.whl CPython 3.15 abi3t, abi3 macOS 10.13+ x86-64 Details
rivers-0.6.1-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
rivers-0.6.1-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.1-cp314-cp314t-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64 Details
rivers-0.6.1-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.1-cp314-cp314t-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64 Details
rivers-0.6.1-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
rivers-0.6.1-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.1-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details
rivers-0.6.1-cp311-abi3-musllinux_1_2_x86_64.whl CPython 3.11 abi3 Linux musl 1.2+ x86-64 Details
rivers-0.6.1-cp311-abi3-musllinux_1_2_aarch64.whl CPython 3.11 abi3 Linux musl 1.2+ ARM64 Details
rivers-0.6.1-cp311-abi3-manylinux_2_28_x86_64.whl CPython 3.11 abi3 Linux glibc 2.28+ x86-64 Details
rivers-0.6.1-cp311-abi3-manylinux_2_28_aarch64.whl CPython 3.11 abi3 Linux glibc 2.28+ ARM64 Details
rivers-0.6.1-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details
rivers-0.6.1-cp311-abi3-macosx_10_13_x86_64.whl CPython 3.11 abi3 macOS 10.13+ x86-64 Details

Total release size: 830.1 MB

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

Download URL rivers-0.6.1-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
097ce8eb3f7c1876a6c0b498cd222ef71201dfa6a9c5d33c499775e655bd05cb
BLAKE2b-256 checksum
How to use checksums
96e33658889a4b76b4f566370625ec7475f7e825816c0d9e9a1380ce95bfa4a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

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

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

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

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

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

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

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

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

Download URL rivers-0.6.1-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
03ed1966925c5b284895cfeac9f5bc4ce73f7868c88d250535097abf3ff3b477
BLAKE2b-256 checksum
How to use checksums
44474cbb5ae7d2255c00b9f5c1ba1224a9b8e025fa060a7d5f143b2216169eba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

Download URL rivers-0.6.1-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
9963d1b63f4ed0bea4572eafc862f0f980558e0f15537fc3ed977b5ef3d484a4
BLAKE2b-256 checksum
How to use checksums
862d77fae5827560e18533f0416a271725dea3eca88dea5a8d1a453ca5c90a45
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

Download URL rivers-0.6.1-cp314-cp314t-win_amd64.whl
Size 41.1 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
a83078c5c7290a43f092e3af00349b93dfc3a8bd517378dd2efdb7ff879f251e
BLAKE2b-256 checksum
How to use checksums
9581ee01591b1a41c25e11bdad6b1ff38313588c0128b64c84621af095d01c18
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

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

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

Download URL rivers-0.6.1-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
0b75e878dde3a84fb62514547e82bd5c5519cff9d247a4000a3868e6fad22a93
BLAKE2b-256 checksum
How to use checksums
c91b901e3b662c71993f1d4ea866dc02d81ead18edcd83249bdccf3269cf0721
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

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

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

Download URL rivers-0.6.1-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
16423b6b1cd06d2d0dcf747c26318914cf5ca0e65eb661aa02e013c17738b1f9
BLAKE2b-256 checksum
How to use checksums
bed432150a38a0dddfd9d3b37da1d30c0afcffabdc015abb152bcbd4260ef081
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

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

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

Download URL rivers-0.6.1-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
178d29aa8a1e0b094b936d7d704b910b70687785a454b66ec9e203515abb103a
BLAKE2b-256 checksum
How to use checksums
462976bc2f36158d928c8b31a882ca2dd583331a14a9912ff505dc5809794b6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

Download URL rivers-0.6.1-cp311-abi3-win_amd64.whl
Size 41.1 MB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
e1de019d39c6eeda1364e9042fbc1ed0023d516234b63a6552f726cbfeffba17
BLAKE2b-256 checksum
How to use checksums
12f5019c1685f512041efd862ec155dd2672680179bc21a25e7ec904bbb2efb5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

Download URL rivers-0.6.1-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
0a74574a2c70f2cb7d73e25fd8a320f0e91c28fef0f6b1cd298843cacec92b68
BLAKE2b-256 checksum
How to use checksums
eb1344e0a8834bb1330d70a988685a704557a6cc5270ea7ac87f07c9a25b82fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

Download URL rivers-0.6.1-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
62793f499750f3787af0dc9f3fbf7fc9d63b0df14d043dd8b1a8d841a5b90bb9
BLAKE2b-256 checksum
How to use checksums
b8281be09eab6d483ffbeae162e0716b5dc498b2c2d85987c50b63f848e63d33
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

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

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

Download URL rivers-0.6.1-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
33019e29a5e941618c0df2e051b08f1ebefbd147e987406349276d49b9bdf2a5
BLAKE2b-256 checksum
How to use checksums
0b08a51f111056348ff25ca4aebbece240e7fb0f4198d0f63b6035ef72dc9ecd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

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

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

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

Download URL rivers-0.6.1-cp311-abi3-macosx_10_13_x86_64.whl
Size 37.6 MB
Tags CPython 3.11 abi3 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
52a38a5da65964d8795ef5e242dd57dc9e2d2273b62468d4fe55ce206751916d
BLAKE2b-256 checksum
How to use checksums
1c2dea689dea513d32dec5c52fb5ad6346475208c7f66442df53fe55f18c50d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Security for rivers 0.6.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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