Ciaren

Open source · runs on your machine

Low-code data pipelines that export Python

Ciaren is a low-code tool for data pipelines. You build a flow from nodes and forms, with no code required to start. Each node maps to one pandas or Polars operation, so the whole flow exports as a readable Python script that runs without Ciaren.

Low code, real code

Build with
Nodes and forms
Nodes
80 in 9 categories
Custom code
Python Transform node
Exports
pandas, Polars, lazy Polars
Runtime needed
None for exports

What it is

Forms for the common steps, code when you want it

Low-code tools let you build with forms and diagrams and add code only where you need it. Ciaren applies that idea to data preparation. You drop a node, pick columns and options in a form, and connect it to the next step.

Each node maps to one dataframe operation, so the logic stays visible. Every run leaves results you can inspect, and every flow can become a pandas or Polars script. If you stop using Ciaren, you keep the code.

It suits analysts who want to clean and reshape data without writing every step by hand. It also suits Python learners who want to see how a visual step becomes pandas or Polars code.

How it works

Configure, reuse, and check a flow

Configure

Set each step in a form

Click a node to open its settings: columns, operators, target types, and aggregations. Each node maps to exactly one dataframe operation.

  • Forms validate as you type
  • The server validates the config again on run
The flow editor
Flow editor · config panel
Ciaren config panel with a Fill Nulls node selected, showing the strategy dropdown and the column selector

Reuse

One flow, different inputs

Declare typed parameters and reference them in any node field as {{ name }}. Supply new values when you run, preview, schedule, or export the flow.

  • Per-run values override per-schedule values and defaults
  • Exported scripts declare parameters as plain variables at the top
Flow parameters
Flow parameters
Ciaren flow parameters dialog with an Add parameter button and a hint for the {{ name }} syntax

Check

Profile a dataset before you build on it

The Profile tab shows per-column types, null counts, distinct values, and numeric ranges. Use it to decide which cleaning nodes a dataset needs.

  • Uploaded datasets keep immutable versions
  • Each run records the dataset versions it read
Projects, datasets, and runs
Dataset profile
Ciaren dataset Profile tab with per-column null counts, distinct values, type badges, and numeric ranges

Building blocks

What you work with

80 built-in nodes

Inputs, cleaning, columns, reshape, analytics, data quality, charts, machine learning, and outputs.

Python when a node is missing

A Python Transform node runs the body of a transform(df) function you write and passes the result on.

Data quality asserts

Six assert nodes check not-null, unique, value ranges, allowed values, row counts, and expressions.

Recipes

Short guides for common jobs: convert Excel to Parquet, fill missing values, pivot a table, remove duplicate rows.

Three export dialects

pandas, eager Polars, and lazy Polars. Lazy Polars reads with scan functions, so Polars can skip columns and rows it does not need.

Readable generated code

Frames are named after your files, and straight chains of steps become one method chain.

Exported code

The same flow as pandas

A flow that reads sales.csv, drops rows with no amount, and sums the amount by region exports to this pandas script. Switch the tab in the export dialog to get Polars instead.

From the Engines guide
python
import pandas as pd

df_sales = pd.read_csv('sales.csv')

df_sales = (
    df_sales.dropna(subset='amount')
    .groupby('region')
    .agg({'amount': 'sum'})
    .reset_index()
)

df_sales.to_csv('summary.csv', index=False)

Limits

Where low code stops

  • Logic the built-in nodes cannot express needs Python, in a Python Transform node or a plugin.

Project status: pre-1.0 alpha

Ciaren is pre-1.0 alpha software for small and medium datasets on one machine. It is not built for distributed or streaming pipelines, datasets of 100 GB or more, or multi-user collaboration.

FAQ

Common questions

Is Ciaren low-code or no-code?

Both, depending on the flow. You can build, preview, run, and schedule a flow without writing code. When a step needs custom logic, a Python Transform node or a plugin covers it.

Does the exported code need Ciaren?

No. Each export is a standalone pandas or Polars script. Paste it into a script or a Jupyter notebook and it runs on its own.

Can I turn a Python script into a flow?

No. Export goes from the flow to code. You edit the flow in Ciaren, and the exported script is yours to change afterward.

Should I export pandas or Polars?

Pick pandas for existing pandas code and team familiarity. Eager Polars is the default and is fast and light on memory. Lazy Polars suits large files, because Polars can push filters and column selection down to the read.

Can one flow handle a new file each month?

Yes. Declare a parameter such as input_path or run_date and reference it in the input node. Each run or schedule can pass a different value.

Read next

Docs and related pages

Try a low-code flow on your data

Install Ciaren with pip, build a flow, and export the Python behind it.