vekdb is a modern functional vector language and columnar database in one engine. Agent-first by design — LLMs and developers read, write, and reason about vek with equal fluency, over a vectorized engine that’s agent-ready out of the box.
// load a year of trades, group, and summarize — in three lines import hdb "data/market" as mkt; select vwap: wsum(size, price) / sum(size), vol: sum(size) by sym from mkt.trades where date >= 2024.01.01, price > 0.0; // sym vwap vol // AAPL 192.41 18.4M // MSFT 415.07 12.1M // NVDA 882.93 34.8M
vekdb gives you a high-level array language with first-class columnar tables, underpinned by a vectorized engine that spans streaming ingestion, in-memory analytics, and on-disk history — one query language, wherever the data lives. Modern surface syntax borrowed from the languages developers already reach for, over an array core in the lineage that pioneered vector computing.
An array-first language with modern syntax. Standard precedence, explicit parentheses, arrow lambdas, and method chaining — over a SIMD-accelerated vector engine.
Tables and dictionaries are values. Query with a
SQL-like select, transform with
functional primitives, and pass them anywhere a
value can go.
Real-time data lands in memory for sub-millisecond queries, then rolls over to a partitioned on-disk store. Same vek query, whether the data is a microsecond or a decade old.
Scalars broadcast over arrays, dicts, and entire tables. Arrays compose. Functions are values. Everything you write — from a one-line aggregation to a multi-stage pipeline — runs through the same vectorized engine that powers the database.
// vectors broadcast naturally xs = [1, 2, 3, 4, 5]; xs * 10 + 1 // → [11, 21, 31, 41, 51] // method chaining over a functional core xs.filter(x -> x > 2) .map(x -> x * x) .sum() // → 50 // running aggregates, in one pass returns.scan(+) // cumulative returns prices.deltas() // first differences // arrow lambdas, projections, composition double = *(2,); [1, 2, 3].map(double) // → [2, 4, 6]
// tables are first-class values trades = table{ sym: [`AAPL, `MSFT, `AAPL, `NVDA], price: [192.4, 415.0, 193.1, 882.9], size: [100, 250, 180, 75] }; // SQL-like select, but composable select vwap: wsum(size, price) / sum(size), n: count(i) by sym from trades where price > 100.0; // asof join — built for time-series asof([`sym, `time], trades, quotes);
Build tables dynamically. Query them with a familiar
select dialect that composes cleanly
with the rest of the language. Group, aggregate,
filter. Match across time. Persist to disk.
where clauses — selective
filters first, automatically
sum,
avg, wavg,
last, and more
sorted,
unique, parted,
grouped) for constant-time and
log-time lookups
Organize code into namespaces. Import
.vek files as modules. Call into shared
libraries with explicit type signatures, or load
native plugins that exchange vek values directly
with the runtime.
// group definitions into namespaces namespace stats { mean = x -> sum(x) / count(x); zscore = x -> { m = mean(x); (x - m) / dev(x) }; }; stats.zscore([10, 20, 30]); // import vek files as modules import "utils.vek" as u; from "trade.vek" import vwap; // typed C FFI — one declaration, native speed import cfn "libm" as m { sqrt: (float) -> float, pow: (float, float) -> float }; m.pow(2.0, 10.0); // → 1024.0
A clean-room Rust implementation, drawing on decades of array-language engineering. Surface syntax familiar from Rust, Python, and Julia; an array core distilled into a small set of orthogonal primitives — composing into anything from one-off scripts to multi-terabyte analytical pipelines.
SIMD-accelerated primitives, columnar layout, and zero-copy memory mapping by default.
Clear syntax and predictable semantics let agents generate accurate code with fewer tokens. A built-in MCP server lets them execute it directly.
Dates, months, minutes, timespans, and nanosecond timestamps — first-class scalars and vectors, with full temporal arithmetic.
A familiar select that returns a value
you can keep transforming.
In-memory tables roll over to mmap-backed partitions. Queries span both, transparently.
Time-series joins as a primitive, with multi-key support and group attributes.
Standard precedence, explicit calls, bracketed
arrays. Drop-in pmap for parallel
iteration without ceremony.
Native plugin API and typed C FFI for everything the standard library doesn’t.
vekdb includes a built-in language server and MCP server, so the editor you already use becomes a first-class vek environment. Highlighting, hover, goto-definition, completion, diagnostics, rename, and formatting from the LSP — plus an MCP endpoint that lets your AI assistant draft, validate, and run vek alongside you.
We’re building in private and opening access to a small group of teams working on high-throughput analytics, market data, and quantitative research. Leave your email — we’ll let you know the moment there’s something to try.