Ciaren
Export the pandas/polars code you'd write by hand. No lock-in.
Prototype data and ML pipelines on a canvas, preview every step on real data, run locally, and keep readable pandas, polars, or lazy polars code with no proprietary runtime.
Nodes, connectors, storage, engines, exporters, validators, and AI capabilities are extension points, not afterthoughts.
Every flow can become standalone pandas, polars, or lazy polars code that you can review, version, and run outside Ciaren.
Run on your machine or self-hosted infrastructure. Use SQLite by default, keep data under your control, and avoid SaaS lock-in.
Ingest, clean, validate, engineer features, train, evaluate, predict, export, schedule, and automate from one workflow model.
Inspect row samples, schema changes, and node results before committing to a full run.
Package plugins as portable .ciarenplugin files, sign them, audit permissions, and install only what you trust.
Alpha software
Ciaren is in early development. APIs, the data model, generated code, and plugin contracts may change between releases. It is already useful for learning, experimentation, prototypes, and controlled internal workflows, but you should test carefully before using it for critical production jobs.
From Two Sources to a Model — on One Canvas
Join a CSV file and a SQL table, clean each side, train a classifier, preview the result on real data, and export it as clean Polars — without leaving the editor.

See the Whole System
Ciaren is not only a drag-and-drop editor. It is a local workflow platform with a transparent execution model: every canvas node maps to an understandable dataframe operation, every run leaves inspectable results, and every flow can be exported to ordinary Python.

Why People Try It
Use the demo project or upload a small CSV, add cleaning and aggregation nodes, preview the result, run it, and export Python.
For Python engineersKeep the generated code readableExport pandas, polars, or lazy polars code that looks like code a person would write, with no hidden runtime dependency.
For contributors and buildersExtend the platform instead of forking itAdd custom nodes, connectors, model providers, engines, validators, and exporters through the plugin architecture.
Install and Open the Demo
For the PyPI package, the fastest way to evaluate Ciaren is a normal
Python install. The wheel bundles the web UI, so ciaren serve can start the
API, scheduler, and visual editor at one URL.
python -m pip install ciaren
ciaren serve
Open http://localhost:8055, then open Projects → Demo. You can inspect,
preview, run, and export working flows before uploading your own data.
Prefer an isolated container instead?
git clone https://github.com/ciaren-labs/Ciaren.git
cd Ciaren
docker compose up --build
Use the Installation guide for PyPI alpha installs, Docker, source installs, optional ML extras, database drivers, and development setup.
What Makes It Different
| Decision | What it means in practice |
|---|---|
| Local-first | Your data does not need to leave your machine. SQLite works out of the box, and external services are opt-in. |
| Python-native | Visual work stays portable because flows export to readable dataframe code. |
| Plugin-first | Niche connectors, internal APIs, custom model providers, and specialized nodes can live outside core. |
| Multi-engine | polars is the default engine, pandas is available per run, and the engine contract is designed to grow. |
| Data quality included | Assertions for not-null, uniqueness, value ranges, expressions, row counts, and allowed values are first-class nodes. |
| Automation-ready | Use the CLI, REST API, webhook trigger, scheduler, and Python SDK for controlled local or self-hosted workflows. |
Export to Portable Python
There is no black box. A simple read → clean → aggregate → write flow can export to code like this:
import polars as pl
df_sales = pl.read_csv('sales.csv')
df_sales = (
df_sales.drop_nulls(subset='amount')
.group_by('region')
.agg(pl.col('amount').sum())
)
df_sales.write_csv('summary.csv')
For larger files, export the lazy polars variant (scan_* → collect()) to use
pushdown and query optimization where the engine supports it.
Learn about engines →
From Cleaning to Machine Learning
Cleaning, validation, feature engineering, training, prediction, and evaluation are all workflow nodes. You can move from raw data to a tracked model without switching tools, and still export or inspect the underlying Python.

The Built-In Toolbox
- Input and output: CSV, TSV, Excel, Parquet, JSON/JSONL, text, SQL databases, S3, GCS, and Azure Blob
- Cleaning: drop/fill nulls, remove duplicates, rename/select/drop columns, cast types
- Transformation: filters, joins, group by, aggregate, calculated columns, maps, pivots, windows
- Data quality: assert not-null, unique, value ranges, row count, expressions, allowed values
- Machine learning: split, train, cross-validate, predict, evaluate, feature engineering, importance
- Operations: run history, scheduling, REST API, CLI, webhook trigger, Python SDK
Built for Extension
Ciaren's plugin API defines provider contracts for capabilities that should not be hard-coded into core:
| Extend | Examples |
|---|---|
| Nodes | Custom transforms, validators, AI-assisted steps, domain-specific operations |
| Connectors and storage | Internal APIs, SaaS tools, warehouses, object stores, document databases |
| Model providers | Local models, scikit-learn estimators, organization-specific training logic |
| Execution engines | Alternative dataframe engines and future runtime targets |
| Exporters | New code targets, deployment bundles, validation reports |
The open core stays focused on the shared platform. When you need a niche integration, the preferred path is a plugin that can be packaged, signed, shared, and versioned independently.
Pick Your Next Step
License
Ciaren Core is AGPL-3.0-only. The public Plugin API/SDK is Apache-2.0, and plugins may use the license selected by their authors.