Patent-pending · Source-available engine

Statistics on your data —
without moving it.

AirStat turns the data already in your cloud storage into compact, queryable AirTrees — then answers percentile, distribution and heatmap questions in milliseconds. Nothing to deploy. Your data never leaves your account.

Try it GitHub
request latency {{ hn }}
{{ hbig }}
{{ hsmall }}
Drag to query the AirTree — the raw data is never rescanned.
{{ s.big }}
{{ s.label }}
Three names, one idea
{{ nm.name }}
{{ nm.tag }}
{{ nm.desc }}

The flow a user experiences

{{ st.no }}
{{ st.title }}
{{ st.body }}
It reads your data for a single request and writes results back to your own account — it doesn't keep a copy.
What you can ask
{{ c.t }}
{{ c.d }}
Inputs: Parquet · CSV · raw binary numeric data — in your cloud storage.
Get started

Summarize once. Query forever.

Run the source-available engine yourself, get the hosted service the moment it launches, or have us walk you through it on your own data.

AirTree · source-available
Run the engine yourself
The histogram engine is published openly, source-available for non-commercial use. Build it, then generate and query AirTrees from C++ or Python — on your own machine, today.
Try it on GitHub
AirStat · coming 2026
Get it hosted on Azure
The fully-hosted service — point at a file in your own cloud storage and query in place. Launching first on Azure in 2026, with more clouds to follow; leave your email and we'll tell you when it's live.
Talk to us
See it on your data
Prefer a guided walkthrough? We'll run AirStat against a file in your own storage and show you setup, signing and a live query.
How AirTree works

A number is already an address. AirTree just files it.

Each value's leading digits are the broad region, its trailing digits the exact street. AirTree files every value into a tree, keeping only the addresses that actually have residents — and counting them as it goes, in a single pass.

Filing values into the tree
now filing {{ treeCurrent }}
{{ row.label }}
{{ cell.n }}
Only the highlighted path is stored. Values sharing leading digits — like the cluster around 68xx — collapse onto the same branches, so common regions cost almost nothing.
{{ treeFiled }}
values filed
{{ treeOccupied }}
occupied addresses
busiest addresses
{{ t.addr }} ×{{ t.c }}
Read a few levels for a coarse view of the data's shape; more levels for a fine view. Built in one pass.
{{ p.t }}
{{ p.d }}
1.3–2.0 GB/s per core
Ingest throughput, measured across real public datasets. AirTree fingerprints in a single pass over the data, so building scales linearly as you add cores.
What makes it different
{{ d.a }}
{{ d.b }}
Use cases

One compact structure. Many shapes of question.

Each card below is a real public dataset summarized into a tiny AirTree, then queried live in your browser — every chart is drawn live from the AirTree. Drag the band or hover a cell to query.

{{ card.cat }}
{{ card.title }}
{{ card.source }} ↗
original
airtree
{{ card.note }}
{{ card.raw }}
{{ card.at }}
{{ card.ratio }}
{{ card.caption }}
$ {{ card.query }}
→ {{ card.result }}
{{ card.xlabel }}drag to select
{{ card.sub }}
{{ card.count }} {{ card.noun }} · exact
{{ card.tag }}
{{ card.cat }}
{{ card.title }}
{{ card.source }} ↗
original
airtree
{{ card.note }}
{{ card.raw }}
{{ card.at }}
{{ card.ratio }}
{{ card.caption }}
$ {{ card.query }}
→ {{ card.result }}
{{ card.xlabel }} × {{ card.ylabel }}exact counts
{{ card.info }}
{{ u.t }}
{{ u.d }}
Security & trust

Your data stays yours. Every answer is verifiable.

{{ s.t }}
{{ s.d }}
FAQ

Questions, answered.

{{ f.a }}
Still curious how it fits your data?
Blog

How we build, in the open.

The AirMettle engineering blog — where the team writes about the ideas we're inventing, the systems we ship, and the real-world problems they solve. AirTree and AirStat are part of the story, not all of it.

{{ b.t }}
{{ b.d }}

Read the engineering blog.

Deep-dives, research notes and benchmarks from the AirMettle team.

Read the blog
{{ ctaTag }}
{{ ctaTitle }}
{{ ctaBody }}
{{ ctaFoot }}
{{ ctaThanksTitle }}
{{ ctaThanksBody }}