Zero-copy WASM
Zig SIMD engine decodes columns directly from raw bytes. No Arrow conversion, no DataFrame construction.
Every query engine has a boundary between your code and the engine. Your code describes a query, the engine materializes data, runs fixed operators, serializes results back. QueryMode has no boundary — your app code IS the query execution.
import { QueryMode } from "querymode/local"
const demo = QueryMode.demo()const top5 = await demo .filter("category", "eq", "Electronics") .sort("amount", "desc") .limit(5) .collect()Zero-copy WASM
Zig SIMD engine decodes columns directly from raw bytes. No Arrow conversion, no DataFrame construction.
Multi-format
Parquet, Lance v2, Iceberg, CSV, JSON, Arrow. Same API regardless of format.
Edge-native
Runs on Cloudflare Workers + Durable Objects + R2. Same code works locally with Node/Bun.
Composable operators
Filter, Join, Window, Aggregate, Sort, TopK — all implement the same pull-based Operator interface.
R2 spill
Memory-bounded operators spill to R2 when budget exceeded. Grace hash join, external merge sort.
Page-level skip
Min/max stats per page mean non-matching pages are never read, never downloaded, never allocated.