OpenPlait

OpenPlait

One portable query contract for every observability datasource — compile once, normalize everywhere.

Built for one contract across backends

OpenPlait separates product intent from datasource execution without hiding native capabilities when you need them.

Portable Query IR

Describe intent with semantic fields, filters, grouping, time ranges, and limits instead of backend syntax.

Normalized dataframes

Every adapter emits the same typed, columnar result contract for tables, charts, alerts, and analysis.

Multiple datasources

Resolve named datasource instances by scope without putting credentials or vendor details into dashboards.

ClickHouse, Tempo, Loki, Prometheus, Jaeger

Ship with first-party adapters for OpenTelemetry stores and Grafana-style backends — including Jaeger Query HTTP.

Native escape hatches

Keep TraceQL, LogQL, PromQL, and SQL available when semantic mode is not enough.

Application-neutral

OpenLIT owns vault, SSRF, and product UI. OpenPlait stays a portable contract any host can adopt.

Intent in. Portable frames out.

Adapters own compilation and execution. Applications own credentials, routing, and presentation.

Applications
OpenLIT
Dashboards
Alert engines
OpenPlait
Query IR + validation
Datasource registry + runtime
Normalized dataframes
Backends
ClickHouse
Tempo · Loki · Prometheus
Jaeger

From install to portable query

Register server-side adapters, then execute the same resource through the runtime — TypeScript today, Python alpha alongside.

npm install @openplait/core \
  @openplait/adapter-sdk \
  @openplait/runtime \
  @openplait/adapter-clickhouse \
  @openplait/adapter-jaeger