Open sourceComing soon — register for early access

Now everybodycan builddata apps.

Describe what you need and your agent builds it — on an open framework that stays fast at millions of rows, without rerunning a script on every click.

Revenue overview

Updated just now · 8.2M rows

QuarterMonthWeek
FY25 ▾

Revenue

$4.82M

+12.4%

Active accounts

1,284

+3.1%

Churn

2.1%

-0.4%

Net revenuelast 9 quarters
Bookings by segmententerprise vs. self-serve

How it compares

An open runtime target for serious data apps

Script-based appsNotebook toolsBI productsVuon Data Apps
Heavy computeIn the browser / per rerunPer-cell PythonVendor engineServer-side DuckDB, Python when it pays
Incremental rerunsWhole scriptRe-run cellsVendor-managedGraph-aware — only affected nodes
Custom UIWidget setLimitedConstrainedHigh-performance visual components via the SDK
Source of truthApp scriptNotebookVendor projectapp.toml + SQL/Python in Git
Portable / self-hostVariesImplicit app shapeRarelyFiles, containers, pluggable cache
Agent-generatablePartialPartialNoDesigned for it

Real data apps outgrow the tools that build them

A serious data app has parameters, coordinated views, and enough data that browser-only execution becomes a product bug. Today you choose between tools that don’t scale and platforms you can’t own.

Python apps rerun the world

Every filter change re-executes the whole script top to bottom. Fine for a demo, painful the moment real data shows up.

Notebooks blur the boundary

UI, execution, cache policy, and data lineage get tangled in one file. Great for exploring, hard to trust as a product.

BI tools are vendor-shaped

Operationally mature, but not a clean standard for parameterized, app-like workflows — or for an agent to generate from scratch.

Your app is a graph that runs on the server

Describe the app as files. When a parameter changes, the runtime re-executes only the affected part of the graph, reuses valid cached results, and returns exactly what to render.

app.toml
[param.quarter]
type = "select"
options = ["FY25Q1", "FY25Q2"]

[node.revenue]
engine = "duckdb"
sql = """
  SELECT region, SUM(amount) AS net
  FROM warehouse.bookings
  WHERE quarter = ${param.quarter}
  GROUP BY region
"""

[viz.revenue_chart]
type = "bar"
data = "node.revenue"
  1. 01

    Parameters

    Filters, dates, and inputs produce values that flow into the graph.

  2. 02

    Source nodes

    Load from your warehouse through the open connector protocol.

  3. 03

    DuckDB nodes

    Join, aggregate, and materialize — server-side, on a fast engine.

  4. 04

    Python, when it pays

    Forecasts, anomaly detection, and modeling where Python earns its cost.

  5. 05

    High-performance visualizations

    Charts, tables, and custom components bind to materialized outputs.

Stays fast where script-based apps stall

The split between a DuckDB engine for tabular work and Python for what Python is good at is what keeps a generated app interactive as data grows — instead of rerunning a script for every interaction.

Server-side execution

Heavy joins and aggregations run on DuckDB, not in the browser. The page renders; the runtime computes.

Graph-aware reruns

Change one filter and only the affected nodes recompute. Valid cached results are reused automatically.

Million-row materializations

Coordinate dozens of charts, tables, and stats against the same filter without pushing the browser past its limits.

Explicit, inspectable cache

Cache policy and result descriptors are first-class, so the UI can page or fetch data deliberately.

Built for agents

The framework an agent can actually build on

Most data tools assume a human clicking through a UI. This one is plain files with a clear execution model — exactly the shape an agent generates well and a reviewer can trust.

Files an agent can generate

An app is app.toml plus SQL, Python, and UI components. A model can write the whole thing — no proprietary project format to reverse-engineer.

Inspectable in Git

Definitions live in version control. Diff a change, review it, roll it back. The app is the source of truth, not a hosted database.

Run locally, deploy anywhere

The runtime runs on your machine and in containers. No Postgres required locally — run state lives in memory, results in a pluggable cache.

You

“Build a churn dashboard for FY25 with a region filter and a forecast vs. actuals chart.”

agent scaffolding app.toml, nodes, and viz…
+ app.toml
+ nodes/revenue.sql
+ nodes/forecast.py
+ app/churn-dashboard.tsx
App ready · v dev running:3000

The engine is open. Own your data apps.

We’re releasing the runtime that builds and runs data apps as open source — so the apps you build stay portable, inspectable, and yours. Register your interest to get the launch the moment it ships.

The data-app runtime

app.toml engine, planner, and cache

Connector protocol

load any warehouse as source nodes

Visualization SDK

provider, hooks, and high-performance components

CLI

v dev, build, preview, and check

Build your first data app

See it on your data in a quick walkthrough — or get in line for early access and the open-source launch.