Know which decisions you can't trust.
OnlyMetrix traces data quality from source table to business decision. Not just which table is broken — which board decision depends on it.
Works on Snowflake, Postgres, and ClickHouse. Imports from dbt. No dbt required.
Two approaches to data reliability
Table-level monitoring
- row count changed
- column has nulls
- freshness violated
You know the table is broken
You don't know what decisions depend on it.
Decision-level tracing
- table → column → metric
- metric → dashboard
- metric → decision
Auto-inferred tests from the IR
Drift detection on source tables
You know exactly which decisions to distrust.
Data breaks. You find out from the CFO.
Every data team knows the feeling:
- A pipeline fails silently. A table goes stale.
- A metric returns wrong numbers for days.
- Someone makes a board decision based on broken data.
Existing observability tools tell you:
- which table is broken
- which column has nulls
- which pipeline failed
They don't know which business decisions depend on it.
Three layers. One platform.
Most tools operate at one layer. OnlyMetrix spans all three — and the layers compound.
Compiler + IR
Compiles metrics into an intermediate representation: source tables, aggregation logic, join paths, time columns, downstream dependencies.
Validation + Drift
Auto-inferred tests from the IR. No YAML. SUM implies non-negative. time_column implies freshness. Plus volume, null rate, and schema drift detection.
Reasoning + Agents
Deterministic investigation agents. The LLM picks which commands to run. The Rust engine executes. Every action is signed.
Auto-inferred tests
6 test rules derived from the IR. No config files. No YAML. The compiler figures it out.
Drift detection
Volume, null rates, mean shifts, cardinality, schema changes. Baselines established automatically.
Decision tracing
Every business decision linked to the metrics it depends on. When data breaks, you know which decisions to distrust.
Built for production
Rust core. 15-minute reliability cycle. Compound reliability scoring. Sub-millisecond overhead.
Infrastructure you can pipe, script, and automate
40+ CLI commands. Full Python SDK. dbt integration via manifest.json. MCP server for Claude and Cursor. Every command returns structured JSON.
omx reliability check
Overall metric health, right now. See which metrics are healthy, degraded, or unreliable.
omx reliability affected-by
What breaks when a table breaks. Traces the full chain: table → metric → dashboard → decision.
omx validation run
Run compiler-inferred tests. 6 rules, zero config. See what tests were inferred and why.
omx dbt sync
Read manifest.json, compile your dbt models into the IR. One command.
omx agent "..."
Deterministic investigation. The LLM picks commands. The Rust engine executes. Every action audited.
Works With Your Stack
Connect your warehouse, install the SDK, or deploy as an MCP server. OnlyMetrix fits where you already are.
Snowflake
liveNative Snowflake connector with session management and token refresh
PostgreSQL
liveConnection pooling, read-only enforcement, statement timeouts
ClickHouse
liveHTTP API integration with secure and standard modes
Python SDK
livepip install onlymetrix - query metrics from any Python app
MCP Protocol
liveConnect any MCP-compatible agent - Claude, GPT, custom agents
dbt
liveSync metric definitions and column descriptions from dbt manifests
Where OnlyMetrix fits in your stack.
- Metric compiler + IR
- Auto-inferred data tests
- Drift detection
- Table → decision tracing
- Table-level monitoring
- Manual test configuration
- Row count alerts
- No downstream impact
OnlyMetrix complements dbt — it doesn't replace it. Your transformation layer stays in dbt. Your reliability layer lives here.
24 tests inferred. Zero written by you.
The compiler reads your metric IR and infers validation tests automatically. No YAML. No config.
# 24 tests inferred. 0 written by you. ✓ total_revenue non-negative · HIGH ✓ total_revenue freshness · HIGH ✓ churn_rate bounded 0–1 · HIGH ✓ revenue_by_country sum consistency ✗ total_revenue non-negative · FAILING FAILURE DETAIL severity HIGH rows affected 1,847 (2.3% of 80,300) first seen today (new failure) inspect SELECT * FROM invoices WHERE total_amount < 0 LIMIT 10
The compiler infers the tests
SUM aggregation → non-negative check. time_column → freshness check. COUNT/COUNT → bounded 0-1. Join paths → referential integrity. No configuration required.
Real numbers, not promises
Dashboards built from governed metrics
Every chart, KPI, and table pulls from the compiled IR. Reliability badges are live. Click any card to trace to source.
Visual investigation from source to insight
Drag metrics, analysis primitives, and filters onto a canvas. Connect them. Run the pipeline. Get structured findings.
See the dependency graph. Know what breaks.
Every metric traces back to source tables. Every decision traces forward to the data it depends on. Reliability scores propagate through the graph.
Built by someone who spent years as a data analyst firefighting broken dashboards with no way to trace which upstream table caused the issue.
Know which decisions you can trust.
Connect your warehouse. The compiler infers tests. You see which decisions to distrust — automatically.