Snoop¶

Snoop is an on-device inspector for network traffic and analytics events, built for Compose Multiplatform. Both streams land on one timeline, so you can see a request and the events around it without leaving the app — on Android and iOS.
Network inspection in KMP is a solved problem, but nothing unifies network + analytics in one Compose surface, and no tool inspects analytics events independently of the vendor SDK. Snoop does both.
Features¶
- Unified timeline — network calls and analytics events interleaved, filterable by type and
channel, searchable, and collapsible into per-screen groups opened by the analytics event of your
choice (
screen_viewby default). - Rich detail — headers, pretty-printed JSON bodies, timing, cURL export; event parameters with channel and annotations.
- Redaction at capture — headers, query parameters and form-body fields are replaced with a
visible
██before anything reaches the store; raw secrets never land in memory. - Web viewer — an embedded HTTP server streams the same timeline to a desktop browser over SSE.
- Live notification — a persistent notification lists the latest captures and reopens the inspector (Android and iOS).
- No-op mirrors — release builds swap in API-identical stubs that capture nothing and drop the UI/retention overhead.
Modules¶
You add one artifact per capture source, plus snoop-ui for the on-device inspector; snoop-core
arrives transitively.
| Artifact | What it does |
|---|---|
snoop-ktor |
Ktor client plugin that captures traffic |
snoop-analytics |
Vendor-agnostic log(name, channel, properties) sink |
snoop-ui |
Compose Multiplatform inspector UI and the live notifications |
snoop-core |
Models, store, redaction and the web viewer (transitive) |
snoop-*-no-op |
Empty mirrors with the identical API for release builds |
snoop-ui is the only artifact that depends on Compose — leave it out and you get the web viewer
with no Compose in your graph.
See Getting started to install, then Integration to open the inspector.