Desktop client plugin
Drops in beside an existing MCP config. Every tool invocation becomes an OTel span with no code change from the user.
Product
Three layers, one loop: an open-source collector at the edge, a self-hosted fleet dashboard that makes sense of it, and a policy layer that turns what you can see into what you can control.
01
The collector
Ships open source. Stores locally, syncs encrypted batches to your aggregation node — nothing is routed through us.
Drops in beside an existing MCP config. Every tool invocation becomes an OTel span with no code change from the user.
Swift and Kotlin instrumentation for agents running on phones, a surface most observability tooling ignores.
VS Code and JetBrains. Captures the MCP configs engineers wire up themselves, including the ones nobody registered.
A drop-in process for agents inside your own apps. Language-agnostic: Rust, Swift, Python, Node, Go.
What every span carries
tool.namewhich MCP tool was invokedtool.paramsredacted at the edge, per policytool.latency_mswith upstream breakdowntool.statussuccess, failure, timeouttokens.in / outcost attribution per calldevice.id / user.idfleet drilldown keys02
The fleet dashboard
Deployed on your Kubernetes cluster, or a single Docker Compose file for smaller fleets.
TOOL CALL STREAM
LATENCY DISTRIBUTION
03
Roadmap
A zero-code instrumentation layer that wraps an MCP client and captures every tool call: name, redacted parameters, latency, success or failure, token usage. Stores locally, syncs encrypted batches.
A self-hosted web UI on Kubernetes or Docker that turns raw spans into a fleet view — with drilldown all the way to a single device.
Observability becomes control: rules that decide which tools may run, on which devices, for which teams — with an audit trail behind every decision.
From visibility to control
The same telemetry decides which tools may run, where, and for whom.