helipod
Get Started

Performance

How fast helipod is, measured under matched conditions with every caveat stated plainly.

helipod's performance is measured, not asserted. Every number on this page comes from a reproducible benchmark you can run yourself (bun run bench:*), reported with the conditions it was measured under.

The short version: a clean-room TypeScript engine that lands in the same league as the Rust reference implementation it's modeled on (Convex), with fast reactive push and honest, well-understood ceilings on one node and across many.

How to read these numbers

Benchmarks are easy to get wrong, usually by accident, by comparing two things under different conditions. The classic trap: run your own system natively and the competitor inside a Docker container (which adds real overhead on a Mac), and you'll look dramatically faster. But you've measured the container, not the software.

Ballparks, not guarantees

An early helipod-vs-Convex run fell into exactly that trap and showed a 60x win. The win evaporated the moment both systems were put in identical containers. So, on this page: comparisons are same-substrate (both systems in identical containers) or they're not reported. Numbers come from a single machine; Docker Desktop on macOS taxes absolute latency, loopback has no WAN jitter, and several cells are co-located rather than genuinely distributed. The shapes (single-writer flatness, sub-linear scale-out, log-scaling fan-out) hold on other hardware. The absolute milliseconds will differ, so run the benchmarks on your own substrate before relying on any figure.

The honest headline is almost never "we beat X." It's "we're in the same ballpark, here's the cost of each feature, and here's the next ceiling." Reproduce it yourself shows how to run each axis.

The numbers, by benchmark family

The core product is push: when a mutation commits, every client subscribed to affected data gets the new result over its live connection. End to end, from a write committing to a watcher receiving the push, over a real network, that takes about 4 ms. Effectively instant.

In a fair, same-container comparison against Convex (50 subscribers, matched app):

metrichelipodConvex
propagation p508.6 ms13.4 ms
propagation p9913.7 ms27.3 ms

The headline here isn't "faster than Convex." It's that a clean-room TypeScript engine landed in the same range as a polished commercial system written in Rust, which validates the architecture. Convex is more feature-complete and does more per operation, so "faster in one test on one laptop" doesn't mean "better."

Fan-out stays cheap at scale. A write only notifies the subscriptions whose data it actually touched. The matcher that finds them is index-backed (an augmented interval tree), so it stays sub-millisecond even at 10,000 live subscriptions. An earlier linear-scan version took about 6.72 ms p50 at 10,000 subscriptions on a selective write; the interval-indexed matcher brought that down to about 0.24 ms.

The honest limits

  • One writer per shard. Single-shard write throughput is a fixed rate; concurrency queues rather than parallelizes. This is a correctness guarantee, not a bug.
  • Scale-out is currently sublinear (about 2.6 to 2.85x at 8 in-process shards, about 1.75x at 3 fleet nodes) because shards share one Postgres. True linear scaling needs per-shard storage, which isn't built yet.

Reproduce it yourself

The benchmark harness lives in benchmarks/ and runs from the repo:

bun run bench:reactive       # reactive push latency + fan-out
bun run bench:writes         # write throughput + overhead + group commit
bun run bench:sharded        # single-node sharding scale-out (Postgres)
bun run bench:connections    # concurrent-connection scale
bun run bench:dockerfleet    # cgroup-budgeted Docker capacity
bun run bench:compare        # percentage-delta comparison vs a saved baseline

The same-substrate Convex comparison harness is under benchmarks/convex-comparison/. The full write-ups, including the methodology lessons behind every caveat above, are in benchmarks/docs/ (the reactive fan-out, the Convex comparison, multi-node throughput, the connection-scale and Docker-capacity findings each have their own report).

On this page