Point your sources at Basalt.
Kafka topics, Postgres change streams, webhooks and SDK calls land in one ordered log. Retries are deduplicated, so every event counts once.
Basalt catches every event the moment it lands and sets it into typed, joined tables you can query in milliseconds. Write SQL. Read an API. Skip the pipeline.
-- live, last 60 seconds SELECT region, event, count(*) AS per_min, p99(latency_ms) AS p99 FROM stream.events WHERE ts > now() - '1 minute' GROUP BY 1, 2 ORDER BY per_min DESC;
Kafka topics, Postgres change streams, webhooks and SDK calls land in one ordered log. Retries are deduplicated, so every event counts once.
Write a view once. Basalt keeps joins, windows and aggregates current with each event, with lineage back to the raw row.
Every view is a REST, GraphQL and Postgres endpoint the moment it exists, served from the closest of 38 regions.
Hot rows stay in memory beside the view that produced them. Your app, dashboards and models read the same answer at the same speed.
Click a cell and see the exact events that produced it, down to the column.
Replicas follow your traffic with sub-second failover.
Add or retype a field with no migration window.
Query any view as of any second in the last 30 days. Answer last Tuesday's question with last Tuesday's rows.
Idempotent writes with per-key ordering. Retries, replays and network splits never count a payment twice.
Fraud models need the last thirty seconds of behavior. Basalt joins payments, sessions and device signals as they happen and serves a fresh feature row in milliseconds.
Inventory, pricing and carts change every second across warehouses and storefronts. Basalt keeps one live view of each SKU, so you only sell what is on the shelf.
Agents act on what they can read. Basalt exposes live, row-level context as typed tools, so an agent sees the order that shipped a second ago and follows the same access policies as your app.
Fleets, meters and machines report in bursts and out of order. Basalt orders every reading by event time, windows it per device and keeps the latest state ready for dashboards and alerts.
Across every customer cluster, trailing 12 months.
Median customer, down from 11 ms on their previous stack.
Queues, jobs and caches retired per team in year one.
From sign-up to the first query on live events.
“Our ledger and our fraud checks finally read the same numbers. Reconciliation used to take a day. Now it runs as a view and nobody thinks about it.”
“We track 60,000 trucks. Late GPS pings used to scramble our ETAs. Basalt orders them by event time, and dispatch trusts the map again.”
“Our agents read customer state through one typed tool. It is fresh to the second and respects every tenant boundary. That was months of work we never had to do.”
Most teams run their first query on live events in under ten minutes. Create a workspace, connect a source with the CLI or the dashboard, and write a view in SQL.
No. Basalt reads your existing topics with consumer-group offsets and exactly-once commits. Many teams keep Kafka as the transport and retire the stream processors, jobs and caches behind it.
By events ingested. Hobby is free up to 10M events a month, Scale is $249 a month with 1B events included, and Enterprise is a custom annual agreement. Seats and queries are never billed.
In the regions you choose. Scale lets you pick three of our 38 regions. Enterprise adds private regions and bring-your-own-cloud deployments in your AWS, GCP or Azure account.
Yes. Every table supports time travel. Query any view as of any second in the last 30 days on Scale, or a custom window on Enterprise.
Free up to 10M events a month. No card, no sales call. Your first pipeline is live in about four minutes.