explaingit

ion-elgreco/rivers

Analysis updated 2026-05-18

45RustAudience · dataComplexity · 4/5Setup · moderate

TLDR

A Rust powered orchestration platform for data and ML pipelines, defined in Python but scheduled by a fast Rust core.

Mindmap

mindmap
  root((rivers))
    What it does
      Orchestrates pipelines
      Resolves dependency graph
      Schedules and partitions runs
    Tech stack
      Rust core
      Python API
      SurrealDB
      Kubernetes operator
    Use cases
      Data pipelines
      ML pipelines
      Scheduled backfills
    Audience
      Data engineers
      ML engineers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Define a data pipeline as Python functions and let rivers resolve the run order automatically.

USE CASE 2

Run pipeline steps in parallel locally or deploy each step as its own pod on Kubernetes.

USE CASE 3

Backfill historical time partitioned data using declarative partition ranges.

What is it built with?

RustPythonSurrealDBRocksDBKubernetes

How does it compare?

ion-elgreco/riverssbhattap/claude-peefuninkina/openeffects
Stars454544
LanguageRustRustRust
Setup difficultymoderatemoderatemoderate
Complexity4/53/54/5
Audiencedatadeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Full production use needs a SurrealDB server and, for distributed execution, a Kubernetes cluster.

No license information is provided in the README.

In plain English

Rivers is an orchestration platform for data and machine learning pipelines. Orchestration means coordinating when and in what order your data processing steps run, for example pulling raw data, then transforming it, then writing the result, while handling dependencies, scheduling, and failures automatically. You define your pipeline in Python by decorating ordinary functions with an Asset decorator, and Rivers figures out the execution order by resolving the dependency graph automatically. Under the hood, graph resolution, execution planning, and scheduling all run in compiled Rust, so the control plane stays fast even on graphs with thousands of nodes. Python is only the interface you write against, it never runs on the scheduler itself. Rivers supports several asset types: single outputs, multi output, sub pipeline graphs, and external assets. It handles partitioning, slicing your data by time windows such as daily, hourly, or custom cron, by multiple dimensions, or by dynamic partitions defined at runtime. Built in storage handlers include in memory, pickle based object stores, and Delta Lake with merge support. For execution, you can run steps concurrently with parallel subprocess workers or deploy each step as its own pod on Kubernetes using the included operator and custom resource definitions. The single binary development experience boots the embedded database, scheduler, and web interface together in one command. Production deployments connect to a SurrealDB server backed by RocksDB instead. Rivers suits you when you need a pipeline tool light enough to run locally but structured enough to scale to Kubernetes without rewriting your definitions.

Copy-paste prompts

Prompt 1
Write a rivers pipeline in Python with two assets where one depends on the output of the other.
Prompt 2
Show me how to configure daily time-window partitioning for a rivers asset.
Prompt 3
Explain how to deploy a rivers CodeLocation on Kubernetes using the included operator and CRDs.
Prompt 4
Help me set up rivers with the Delta Lake IO handler for merge support.

Frequently asked questions

What is rivers?

A Rust powered orchestration platform for data and ML pipelines, defined in Python but scheduled by a fast Rust core.

What language is rivers written in?

Mainly Rust. The stack also includes Rust, Python, SurrealDB.

What license does rivers use?

No license information is provided in the README.

How hard is rivers to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is rivers for?

Mainly data.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.