Pathway
ActiveDescription
Pathway is a Python ETL framework for stream processing, real-time analytics, LLM pipelines, and RAG applications.
Key Features
- Rust-powered engine — Scalable Rust engine based on Differential Dataflow with multithreading, multiprocessing, and distributed computation
- Unified batch & streaming — Same code works for local dev, batch jobs, stream replays, and live data processing
- Rich connectors — Built-in connectors for Kafka, GDrive, PostgreSQL, SharePoint; Airbyte connector covers 300+ data sources
- LLM & RAG toolchain — LLM wrappers, parsers, embedders, splitters, and in-memory real-time Vector Index with LlamaIndex/LangChain integration
- Stateful transformations — Joins, windowing, sorting with Rust-accelerated implementations for high performance
- Persistence & consistency — Computation state can be persisted for crash recovery; at-least-once (community) and exactly-once (enterprise) consistency
Use Cases
💡 Build real-time ETL pipelines to continuously process and transform data streams from message queues like Kafka
💡 Set up private RAG applications with Ollama and Mistral AI for document-based real-time Q&A systems
💡 Convert unstructured data to structured SQL queries on-the-fly for dynamic data analysis
💡 Build adaptive RAG systems that automatically select retrieval strategies based on query complexity
💡 Implement multimodal RAG combining text and image processing with GPT-4o for mixed-document analysis
Strengths & Limitations
✅ Strengths
- • Actively maintained, recent updates
- • High community interest (62.5k stars)
- • Established track record (3 years in production)
- • Responsive to issues, low backlog
⚠️ Limitations
- • No clear open-source license
Categories
Quick Start
pip install -U pathway
import pathway as pw
# Read data from a CSV file
table = pw.io.csv.read("data/input.csv")
# Transform the data
result = table.select(col1=pw.this.col1, col2=pw.this.col2 * 2)
# Write results to output
pw.io.jsonlines.write(result, "output.jsonl")
# Start the real-time processing pipeline
pw.run()