Open source observability in active development

Query with PromQL
LogQL and TraceQL

PulsusDB brings familiar observability APIs to a ClickHouse® database backend built for large telemetry volumes. Ingest with OpenTelemetry, preserve existing clients and dashboards, and scale the stateless API tier independently from durable storage.

OpenTelemetry ingestion Query-optimised data models AGPLv3
observability.query live
OPEN TELEMETRY
logs12.8k/s
metrics48.2k/s
traces6.4k/s
profiles1.7k/s
PulsusDB compile + plan
COMPILED SQL SELECT service, count() FROM log_samples PREWHERE ts BETWEEN … GROUP BY service
query completed42 ms
INGEST AND QUERY INTERFACES
OpenTelemetry PromQL LogQL TraceQL ClickHouse database
What changes underneath the query API

Existing observability interfaces backed by a different execution model

PulsusDB separates the interface engineers use from the physical execution plan. PromQL, LogQL and TraceQL remain at the edge while purpose-built data models, columnar reads and SQL pushdown handle the volume underneath.

Explore the architecture →
01

Search retained logs through LogQL

Stream selectors narrow the read while word indexes prune candidate granules before LogQL pipelines process the matching lines.

02

Add stateless query capacity

Scale readers and writers independently without moving durable state away from the ClickHouse database tier.

03

Read the most efficient metric rollup

Automatically route eligible PromQL ranges to the coarsest resolution that preserves the requested result.

04

Run complex work beside the data

Compile filters, grouping, joins and eligible aggregation into SQL, reducing traffic between the stateless and database tiers.

The query is the contract

Familiar expressions compile into efficient database plans

PulsusDB parses each expression, selects the physical read path and pushes exact filters, grouping and eligible aggregation into the ClickHouse database. Only the required result crosses back to the stateless tier.

logs.queryLogQL
{service_name="checkout"} |= "timeout"

Resolve labels first. Word indexes prune indexable terms; substring-only filters scan the selected streams.

generated.sqlCLICKHOUSE
SELECT ts, labels, body
FROM log_samples
PREWHERE ts BETWEEN $start AND $end
AND fingerprint IN (…)
WHERE body LIKE '%timeout%'
ORDER BY ts DESC LIMIT 100
primary key pruned4,096 rows read
Prometheus HTTP API Product-neutral query APIs Optional compatibility endpoints WebSocket live tail
Deployment model

Stateless PulsusDB processes
Stateful ClickHouse database tier

Start with one process, then scale ingestion and query independently as traffic changes. Durable telemetry, rollups and distributed execution remain in the ClickHouse database tier.

SHIP
OTel CollectorOTLP + remote write
logsmetricstracesprofiles
TRANSLATE
PulsusDBsingle Rust binary
STATELESS
writerparse + batch
readerquery + plan
modeallwriterreader
STORE
ClickHouse databasedurable state + distributed compute
One binary

Start small with all mode and a single ClickHouse node.

Independent scale

Split writer and reader modes as the workload grows.

No new state tier

Restart and load-balance PulsusDB freely; caches are rebuildable.

Client and dashboard compatibility

Use the tools already built around these query APIs

Connect Prometheus-compatible clients and observability tools to the APIs they already understand while PulsusDB changes the storage and execution path underneath them. Product-neutral endpoints remain available alongside optional compatibility routes.

PULSUS_COMPAT_ENDPOINTS=true
Open source development

Review the code and follow implementation decisions

PulsusDB is an AGPLv3 digitalis.io product under active development. Source code, architecture documents, query examples and implementation issues are public.

pulsusdb / main

$ git clone digitalis-io/pulsusdb

Cloning into 'pulsusdb'...

$ cd pulsusdb

$

RUSTAGPL-3.0API REFERENCE ↗