
WaveHouse
Open source real time API gateway for ClickHouse with SSE streaming and access control
Gallery
About WaveHouse
WaveHouse is an API gateway that sits between your frontend and ClickHouse, handling the operational headaches that come with exposing an analytics database to applications. It takes care of batched ingestion to avoid the infamous too many parts error, validates incoming data against your schema at the edge before it touches the database, and pushes live events to clients over Server Sent Events. The framing is Supabase for ClickHouse or an open source alternative to Tinybird with real time push capabilities. It abstracts away the sharp edges that make ClickHouse powerful for analytics but punishing for application developers who just want to write and query data.
ClickHouse is exceptionally fast at analytical queries but unforgiving if you try to write to it naively from an application. Every small insert creates a part, and too many parts will grind your instance to a halt or trigger merge storms that tank query performance. WaveHouse solves this with async buffered ingestion. Writes land in a durable NATS JetStream write ahead log and return a 200 immediately, so your application never blocks waiting for ClickHouse. A background worker batches those writes and flushes them on a schedule that keeps part counts healthy. Failed inserts go to a dead letter queue for inspection rather than silently disappearing or crashing your ingest pipeline. This pattern means you can accept high frequency event streams without writing batching logic in your application layer.
The real time push layer is what elevates this beyond a reverse proxy or ingestion buffer. Every event that arrives is broadcast to SSE subscribers before it flushes to ClickHouse. If you are building a dashboard that shows live metrics, you get instant updates without polling and without standing up a separate Kafka or Redis pub sub stack. Late connecting clients automatically backfill from JetStream history, so they catch up without you implementing replay logic. The TypeScript SDK provides a live query primitive that handles reconnection and state sync, coming in at around 1.4 KB gzipped, small enough that you do not think twice about including it in a frontend bundle.
Access control follows the Hasura model with per table, per role column and row policies that use JWT claim templating. You define policies that reference fields from the user token, so a query automatically filters to only the rows that user should see without you writing that filtering logic in every endpoint. Policies store in NATS KV with file based bootstrap for reproducible deployments and automatic cluster synchronization. This lets you expose ClickHouse to end users with fine grained permissions rather than blanket read access or building a custom authorization layer on top.
Schema validation happens at ingest time by reading ClickHouse system tables. If a write contains an unknown field, a type mismatch, or a null where one is not allowed, WaveHouse rejects it at the edge before it ever reaches the database. Combined with optional deduplication using ReplacingMergeTree strategies and unique ID tracking via an embedded Pebble store, this catches bad data early rather than discovering corruption later in query results. Named pipes support parameter binding and per role restrictions, giving you endpoint level control over what queries can run and with what permissions.
Query caching protects dashboards from thundering herd problems. An in process Ristretto cache combined with Go singleflight coalesces identical concurrent queries, so when fifty users load the same dashboard at once, ClickHouse only runs the query once. This happens automatically without additional infrastructure or cache invalidation logic on your end.
WaveHouse is open source under Apache 2.0 and ships as a single binary containing the API, batch worker, embedded NATS JetStream, and optional Pebble deduplication store. ClickHouse is the only external dependency, which keeps the deployment footprint minimal compared to architectures that require Kafka, Redis, or a separate caching layer. You can self host it in front of your existing ClickHouse cluster or use the managed WaveHouse Cloud offering, which bundles managed ClickHouse plus the gateway with autoscaling and usage based pricing. The project is currently in alpha with published documentation, support cadence, and security policies.
If you are building user facing analytics, live dashboards, or any product that queries ClickHouse from a frontend, WaveHouse handles the plumbing so you can ship features instead of operating infrastructure. It fills the gap between raw ClickHouse and the kind of developer experience that Supabase provides for Postgres, without requiring you to give up control over where your data lives or how your cluster is configured.
Key Features
- Async buffered ingest with write ahead log
- Real time SSE streaming to frontends
- Hasura style row and column access control
- Schema aware validation at ingest
- TypeScript SDK with live queries
- Single binary self hosted deployment
Pros & Cons
What we like
- Solves ClickHouse write batching and parts issues automatically
- Real time push without separate event infrastructure
- Fine grained access control lets you expose data to end users
- Open source and self hostable under Apache 2.0
Room for improvement
- Only works with ClickHouse, not other databases
- Requires NATS JetStream for durable ingestion
- Managed cloud pricing details not fully published
- Currently in alpha with smaller community than Supabase
Frequently Asked Questions
What is WaveHouse?
Is WaveHouse free?
How does WaveHouse handle ClickHouse write batching?
Can I use WaveHouse for real time dashboards?
Best For
Featured in
Alternatives to WaveHouse
MongoDB Atlas
The fully-managed cloud version of MongoDB with built-in search, vector search, time series, and serverless tiers.

Neon
Serverless Postgres with database branching, scale-to-zero compute, and a generous free tier.

Airtable
Spreadsheet-database hybrid with linked records, multiple views, automations, and an interface designer for internal apps.

DataExpert.io Academy
Live and self-paced academy that trains you for real data engineering and AI jobs
Reviews (0)
Badge builder
Add WaveHouse to your website
Choose a badge style and size, preview it here, then copy the generated HTML. Badge images are self-contained SVGs and do not require an external script.
<a href="https://toolindex.net/tools/wavehouse?ref=badge" target="_blank" rel="noopener">
<img src="https://toolindex.net/badge/wavehouse/medium.svg" alt="WaveHouse - Listed on Tool Index" width="180" height="50" />
</a> How to use the badge
- 1. Pick the style, size, and theme that fit your layout.
- 2. Copy the generated HTML from the code block.
- 3. Paste it into your footer, homepage, or press page.
Standard badge available
The standard listing badge is available now. Score and circle badges are limited to tools currently ranked in the top 10 of a category.
Badge clicks return visitors to this profile with a referral tag so the source remains identifiable.
Related Tools

Supabase
The open source Firebase alternative
Sleep Suivour
Track your sleep, improve your rest

Upstash
Serverless Redis, Kafka, and QStash for modern applications
PlanetScale
Serverless MySQL platform with branching and zero-downtime migrations
Work on WaveHouse? Request listing access or correction