Columnar engine from scratch

Pure C17 Zero dependencies Lazy fusion Graph engine Python & Rust

Analytics and graph processing in one engine, without compromise. Columnar scans, joins, and aggregations at full speed—plus native graph traversal, pattern matching, and shortest paths. Everything built from the ground up.

01

Nothing to install

Pure C17 with zero external dependencies. No package manager, no vendored libraries. One public header file, cmake, and a C compiler. That's it.

02

Describe, don't execute

Build a pipeline of filter, group, sort, join, and graph traversal operations lazily. Nothing runs until you call .collect(). The optimizer rewrites your pipeline automatically—fusing passes, pushing predicates, eliminating dead branches.

03

Native graph engine

Graph traversal lives next to columnar analytics—same pipeline, same optimizer, no glue layer. Neighbor expansion, BFS, shortest path, and worst-case optimal joins for pattern matching. The optimizer prunes dead-end paths before traversal even begins.

04

Purpose-built internals

Custom buddy allocator with COW ref counting. Morsel-driven execution processes 1024-element tiles at a time. Thread pool with lock-free dispatch. Every layer designed for columnar workloads.

Built together, works together

Five repositories, one engine. From the C core to visual analytics.

teide

C17

The core engine. Columnar analytics and native graph processing in one library. Lazy DAG execution, 6-pass optimizer, CSR edge indices, worst-case optimal joins, factorized execution, and morsel-driven parallel executor. Single public header.

View repo

teide-rs

Rust

Rust bindings with SQL frontend, interactive REPL with syntax highlighting and tab completion, and PostgreSQL wire protocol server. Connect with psql, DBeaver, or any PG client.

View repo

teide-py

Python

Python bindings with lazy evaluation, automatic query optimization, morsel-driven parallel execution across all cores, and zero-copy NumPy interop for numeric columns.

View repo

Mirador

React Python

Visual data pipeline editor. Drag-and-drop nodes, SQL and form modes, live data grid and chart preview, PDF report engine with markdown templates, dashboard builder. Backed by Teide.

View repo

teide-bench

Benchmarks

H2O.ai benchmark suite on 10M-row datasets. Groupby, sort, and join queries across multiple engines. Results below.

View repo

Faster than you'd expect

H2O.ai benchmarks, 10 million rows. Teide vs DuckDB vs Polars.

2.4ms
Groupby q1 (SUM)
3.2x
vs DuckDB (28 thr)
9.8x
vs Polars
85ms
Inner join (3-key)
Query Teide DuckDB Polars
q1 — id1, SUM2.4ms7.6ms23.6ms
q2 — id1+id2, SUM5.7ms21.5ms125.7ms
q3 — id3, SUM+AVG18.2ms67.7ms131.5ms
q5 — id6, 3xSUM31.5ms52.8ms85.4ms
q7 — 6-key, SUM+COUNT84.7ms180.5ms789.0ms
sort s1 — id1 ASC101.9ms188.1ms334.6ms
sort s6 — 3-key ASC154.9ms442.2ms797.0ms
join j1 — inner, 3-key85.2ms94.3ms223.6ms

10M rows, H2O.ai datasets. DuckDB 1.4.3 (28 threads), Polars 1.35.2. See teide-bench for full methodology.

Build a lazy pipeline, call .collect()

Nothing executes until you ask for results. The optimizer handles the rest.

example.py
from teide import Context, col

with Context() as ctx:
    df = ctx.read_csv("measurements.csv")

    # Build pipeline — nothing executes yet
    result = (
        df.filter(col("region") == "EU")
          .group_by("product")
          .agg(
              col("revenue").sum(),
              col("price").mean(),
          )
          .sort("revenue_sum", descending=True)
          .collect()
    )

    print(result)

Up and running in seconds

No package manager needed. Just cmake and a C compiler.

C Core

git clone https://github.com/TeideDB/teide.git
cd teide

cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build

cd build && ctest --output-on-failure

Python

pip install teide

Or build from source:

git clone https://github.com/TeideDB/teide-py.git
cd teide-py
pip install -e .

Rust / SQL

git clone https://github.com/TeideDB/teide-rs.git
cd teide-rs
cargo build --all-features

# Interactive REPL
cargo run --features cli

# PostgreSQL server
cargo run --features server -- --port 5433

Mirador (Visual Editor)

git clone https://github.com/TeideDB/mirador.git
cd mirador

# Backend
uv sync && uv run uvicorn mirador.app:app --port 8000

# Frontend
cd frontend && npm install && npm run dev

Open localhost:8000 to start building pipelines visually.