🦞 ClawMetry
See your agent think. Real-time observability for 26 AI agent runtimes: OpenClaw, NVIDIA NemoClaw, Claude Code, OpenAI Codex & 22 more. One dashboard for your whole agent fleet.
🌐 Read this in: English · 简体中文 · 日本語 · 한국어 · Español · Português (BR) · Français · Deutsch · हिन्दी · العربية · Русский · more →
One command. Zero config. Auto-detects everything.
pip install clawmetry && clawmetry
Opens at http://localhost:8900. Zero config: it finds the agent runtimes you already have, reads them read-only, and changes nothing about how they run.
Works with 26 agent runtimes
Free in the open source app: 🦞 OpenClaw · 🟩 NVIDIA NemoClaw · 🪿 Goose
On a paid plan: ◆ Claude Code · Cursor · 🐙 GitHub Copilot · ⬡ OpenAI Codex · ♊ Gemini CLI · 🖇 Cline · 🙌 OpenHands · opencode · Aider · 🔗 n8n · ◈ Qwen Code · 🅳 Devin · 🪐 Antigravity · Grok · ⚡ Hermes · Pi · Deep Agents · 🌙 Kimi CLI · 🐋 DeepSeek Harness · 🦾 Exo · NanoClaw · PicoClaw · QM
Every runtime gets the same dashboard. Run several at once and the header switcher re-scopes every tab to one of them.
Built your own agent on an SDK instead? The interceptor tracks its LLM calls too. See docs/SDK_TRACKING.md.
What you get
- Sessions & transcripts: what each agent did, turn by turn, with replay
- Cost & tokens: per runtime, model, session and day, with anomaly flags
- Flow: live diagram of messages moving through channels, models and tools
- Brain: the reasoning and tool-call event stream as it happens
- Context blowout: window utilization sized per provider, compaction vs forced overflow, plus a per-runtime map of what we can't see (how)
- Memory & skills: the files and skills each runtime actually loaded
- Health & logs: disk, memory, error rates, rate limits, live log stream
- Alerts: budget caps, error spikes, agent-offline, routed to Slack, Discord, PagerDuty, Telegram, Email
- Approvals: pause risky tool calls before they run and approve from your phone (how)
Context blowout, and what watching costs
Two questions worth answering before you trust any agent-comparison tool.
How does it handle context-window blowout across runtimes?
A utilization percentage is only as honest as what it divides by. ClawMetry sizes the window per provider from a table you can read and PR, covering Anthropic, OpenAI, Google, xAI, DeepSeek, Kimi, Qwen, Mistral, Llama and GLM. It does not measure all 26 runtimes with one vendor's ruler. That matters: a 300K GPT-5 turn scored against Anthropic's 200K reads ">100%, blown" when it is really at 75% of GPT-5's 400K. The same ruler hides a genuinely overflowed 130K DeepSeek turn as a comfortable 65%.
Every window ships with its provenance: model_table, explicit_marker,
observed_floor, or an honest default when we don't know the model. A
gauge built on a guess never renders with the same authority as one built on
a lookup.
ClawMetry can only see compaction events on some runtimes. So
GET /api/context-coverage reports, per runtime, whether a zero means
"ran clean" or "we're blind". A 0 that actually means blind says so.
Full detail
What does the instrumentation cost?
| Path | Added to your agent | Default? |
|---|---|---|
| Session-file tailing (all 26 runtimes) | 0. Separate process, no ClawMetry code in your agent | on |
HTTP interceptor (CLAWMETRY_INTERCEPT=1) |
+0.44 ms per LLM call, or 0.009% of a 5s call | off |
| Pre-tool hook gate (warm cache) | +44 ms per gated tool call, over a 36 ms interpreter floor | off |
| Enforcement proxy | +9.7 ms per LLM call | off |
Daemon host cost: 2,762 events/sec ingest, 710 bytes/event on disk (67.7 MB per 100k events), and ~12% of one core sustained on a busy install. That last number is over our own stated 5-10% budget, so it is published as a bug to chase rather than left off the page.
Measured on an Apple M2 Pro with benchmarks/overhead.py. The harness runs
each condition in a separate process, alternates their order, and refuses
to print a number when the rounds disagree on its sign. Run it on your own
machine in a minute:
pip install clawmetry && python -m benchmarks.overhead
Every path is measured, including the hook gates and the enforcement proxy, and the harness runs on Linux, macOS and Windows in CI. Two results worth knowing: the proxy costs about seven times more on Windows than on Linux, and the daemon currently sustains about 12% of one core, over our own 5-10% budget. The raw JSON, the method, and what is still unmeasured are in docs/OVERHEAD.md.
Pricing
| Plan | What it covers | Price |
|---|---|---|
| Free | OpenClaw + NVIDIA NemoClaw + Goose, full dashboard, local only | $0 |
| Starter | Every other runtime above, fleet view, cloud sync | $9 per node / month |
| Pro | Starter + control and evaluation: approvals, tool-risk policies, evals, anomaly detection, cost optimizer, OTel export, tamper-evident audit log | $19 per node / month |
Annual plans, Enterprise and the current numbers live at
clawmetry.com/pricing. Self-hosted license
keys work without the cloud (clawmetry license). The exact free/paid split is
in docs/ENTITLEMENTS.md.
Your data stays on your machine
ClawMetry reads local session files and logs. No session data leaves your box
unless you run clawmetry connect — no prompts, replies, tool arguments, file
contents or log lines. When you do connect, the snapshot is end-to-end encrypted
with a key that never leaves your machine, and decrypted in your browser. If a
node has no key, the upload is skipped rather than sent in the clear, and no
server response can turn that off.
Two things do run by default before you connect, both opt-out and neither carrying session data: an anonymous install ping and a version check against PyPI. A default install also looks up your public IP once for a startup banner line. Every destination, what it carries and how to switch it off is listed in docs/EGRESS.md; self-hosted, repointed and air-gapped installs make no discretionary outbound calls at all.
The decryption happens in your browser, in code we serve you. That used to be
a promise; it is now something you can check. Every line that touches your key
lives in one readable file, clawmetry/static/js/cm-e2e.js,
which ships inside the wheel and is served verbatim, pinned with a Subresource
Integrity hash. To confirm the browser runs what we published:
curl -s https://app.clawmetry.com/static/js/cm-e2e.js -o served.js
pip download --no-deps clawmetry==$(clawmetry --version | tr -d 'a-z ') -d /tmp/cm
unzip -p /tmp/cm/clawmetry-*.whl clawmetry/static/js/cm-e2e.js > published.js
diff served.js published.js && echo identical
What that does not prove: we serve the page that loads the file, so we could serve a different page. Integrity hashes protect you from a compromised CDN, not from the vendor. What you gain is that any substitution has to be deliberate, visible in the page source, and different from an artifact on PyPI that anyone can fetch. Self-hosting or staying local-only removes the dependency entirely.
Install
pip install clawmetry # then: clawmetry
Or the one-liner: curl -sSL https://raw.githubusercontent.com/vivekchand/clawmetry/main/install.sh | bash
Needs Python 3.8+ on macOS, Linux or Windows, and at least one agent runtime on the same machine. Docker instructions: docs/DOCKER.md.
Docs
| Runtime compatibility | What each adapter reads, and how to add a runtime |
| Context blowout | Per-provider windows, compaction vs overflow, per-runtime coverage |
| Overhead | What instrumentation costs, measured, with the harness to reproduce it |
| Entitlements | Free vs paid, tier matrix, license CLI |
| Approvals & policies | Pre-execution gating, risk scoring, phone approvals |
| OpenTelemetry | Export traces anywhere, ingest OTLP from anything |
| SDK tracking | Cost attribution for agents you built yourself |
| Chat channels | The chat adapters shown in Flow |
| NemoClaw / OpenShell | Sandboxed NVIDIA NemoClaw setups |
| Docker | Image, compose, volume mounts |
| Architecture · Development | How it works inside; running from source |
| Telemetry | The anonymous install and desktop-open pings, and how to turn them off |
Screenshots
Every number below is from one real machine, read-only, with nothing seeded.
It tells you when something is wrong, not just what happened. Two anomaly banners at the top: spend running 7x the daily average, and a 4.2x cost spike. Below them, 324 of 667 recent sessions carrying a waste signal, itemised by cause.
It shows you the money you can get back. $4,058.92 spent this month, about $3,668/mo of it itemised as recoverable (trim long conversations, route short tasks to a smaller model, trim thinking), and $35,572/mo already saved by cache reuse.
Detection runs without you configuring anything. The built-in detectors are on from install: agent went quiet, telemetry feed stopped, cost spike, token burst, errors climbing, error spike, budget threshold, threat signature matched, security tool finding, security posture changed. Your own rules are optional on top.
More, per runtime: docs/RUNTIME_SCREENSHOTS.md.
Star History
License
MIT · Built by @vivekchand · clawmetry.com
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file clawmetry-0.12.772.tar.gz.
File metadata
- Download URL: clawmetry-0.12.772.tar.gz
- Upload date:
- Size: 5.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c72646f76b17072cfc6a2584577ac3385f1f41c00591278f9a4b105879df0e7a
|
|
| MD5 |
e72edc48fda5a0d05769fa184542548d
|
|
| BLAKE2b-256 |
3e7379afb316d430a6752e38373eb7b3b56073f802b2d92825131e46acbf5cce
|
File details
Details for the file clawmetry-0.12.772-py3-none-any.whl.
File metadata
- Download URL: clawmetry-0.12.772-py3-none-any.whl
- Upload date:
- Size: 5.0 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c754a03427c9bf87163e3ff2bca5761fe39803cffe6d95193edf65bd1579c6a0
|
|
| MD5 |
b6be6d71c77fdf948132ee56ddbafa7d
|
|
| BLAKE2b-256 |
ebecebf3a5083b755f3a30a82fcfeafce7ca4096e6f60a032bab2ae784077c95
|