Now in 38 regions
Every event, set in stone.
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.
p99
4.2 ms
Throughput
1.28M ev/s
Setup
9 min median
Query
Views
Lineage
-- 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
;
Region
Event
p99
eu-north-1
payment.succeeded
2.1 ms
us-east-2
model.inference
3.4 ms
ap-south-1
session.started
1.8 ms
eu-west-3
cart.updated
2.7 ms
us-west-1
sensor.reading
1.2 ms
812 rows · 3.1 ms · eu-north-1
Refreshing every event
Trusted by 2,400+ teams
How it works
Three moves, no glue code.
Step 01
Connect
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.
Step 02
Model
Shape it with plain SQL.
Write a view once. Basalt keeps joins, windows and aggregates current with each event, with lineage back to the raw row.
Step 03
Serve
Read it as an API.
Every view is a REST, GraphQL and Postgres endpoint the moment it exists, served from the closest of 38 regions.
Capabilities
Solid under every load.
Serving
Live
p50
1.7
ms
p99
3.9
ms
Reads
412k
/s
p99 latency · last 60 s
ms
Single-digit milliseconds, every read.
Hot rows stay in memory beside the view that produced them. Your app, dashboards and models read the same answer at the same speed.
Lineage
Column level
stream.orders
stream.payments
orders_enriched
api / v1
Trace any number to its source.
Click a cell and see the exact events that produced it, down to the column.
Network
38 regions
Close to every user.
Replicas follow your traffic with sub-second failover.
Schema
v14
Schemas that evolve.
Add or retype a field with no migration window.
History
30 days
Time travel on every table.
Query any view as of any second in the last 30 days. Answer last Tuesday's question with last Tuesday's rows.
Delivery
Guarantee
Exactly once, end to end.
Idempotent writes with per-key ordering. Retries, replays and network splits never count a payment twice.
Use cases
One layer, many shapes.
Fintech
Commerce
AI agents
IoT
Use case · Fintech
Score every payment before it settles.
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.
Payments, ledgers and KYC events in one ordered log
Per-account features updated on every transaction
Exact replay for auditors with 30-day time travel
Decision time
3.8 ms
False positives
-31%
After the switch
Proof from production.
Events dropped
0
Across every customer cluster, trailing 12 months.
p99, 11 → 4.2 ms
4.2
ms
Median customer, down from 11 ms on their previous stack.
Pipelines replaced
14
avg
Queues, jobs and caches retired per team in year one.
Median setup
9
min
From sign-up to the first query on live events.
Customers
Teams that stopped babysitting pipelines.
Ferrous
Payments
RJ
Ragnheiður Jónsdóttir
Head of Platform, Ferrous
Halcyon
Logistics
DO
Daniel Okafor
Staff Engineer, Halcyon
kiln.dev
AI agents
PR
Priya Raman
Co-founder, kiln.dev
FAQ
Before you start.
How long does it take to get started?
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.
Do I have to replace Kafka?
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.
How is Basalt priced?
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.
Where does my data live?
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.
Can I query data as it looked in the past?
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.

