River is an open-source Python library for online machine learning, where models learn incrementally from streaming data one observation at a time. It has collected about 6,100 stars on GitHub, is licensed under BSD-3-Clause, and is actively maintained with updates in 2026.
Most ML libraries assume a fixed dataset you train on once. River is built for the opposite world: data that arrives continuously, distributions that drift over time, and models that must update in real time. It provides online versions of common algorithms, from linear models and trees to anomaly detection and recommender systems, together with tools for progressive evaluation, concept-drift detection and streaming feature engineering. Its API deliberately mirrors scikit-learn conventions, so practitioners can move from batch to streaming workflows without relearning everything.
River is the successor of the creme library and has become the reference toolkit for streaming ML in Python, used in both academic benchmarks and production systems that cannot pause for batch retraining. Its design keeps memory footprints small enough for edge and high-throughput scenarios, and its modular pipeline API lets you compose preprocessing, modeling and evaluation into a single online workflow. The project maintains extensive documentation with worked examples covering classification, regression, anomaly detection and incremental recommendation on real streaming datasets.
River is completely free and open source under the BSD-3-Clause license. There are no paid plans; install it from PyPI and use it in research or production at no cost.
River is for data scientists and engineers working with streaming or time-evolving data, such as fraud detection, sensor analytics, recommendations and monitoring, where retraining from scratch is too slow or wasteful.