Real Chromium, real hardware
Playwright + raw CDP. No synthetic CPU throttle, no datacenter detour. Numbers match what your users feel.
Real-Chromium Core Web Vitals on your hardware. Closed agent fix loop with Mann-Whitney U statistical proof, not vibes. ~99% cross-origin iframe coverage via per-frame CDPSession. MCP-native for Claude · OpenCode · Cursor.
Hit Measure and pick CLI · Chrome extension · MCP server on the next screen — no backend required to start.
Real CLI output from tradeit.gg — verified 2026-05-21
16
MCP tools
9
Surfaces
387
Tests passing
~99%
OOPIF coverage
The killer loop
One conversation turn. Mann-Whitney U at α=0.05 proves the patch improved the metric — or it doesn’t, and the agent knows.
measure
Real CWV · trustScore · servability
propose_patch
Ranked, applicability-aware fixPlan
verify_fix
Mann-Whitney U at α=0.05
Why this exists
Capabilities
Playwright + raw CDP. No synthetic CPU throttle, no datacenter detour. Numbers match what your users feel.
Target.setAutoAttach + per-frame CDPSession. Lighthouse goes opaque inside OOPIFs — we go all the way in.
measure → propose_patch → verify_fix in one conversation turn. Mann-Whitney U at α=0.05 proves the fix worked.
trustScore, fixPlan, servability, originClass precomputed. Agents act in one tool call instead of multi-hop reasoning.
Synthetic Input.dispatchMouseEvent over CDP fires a trusted-event pipeline. INP attribution lands without humans.
longestScript.sourceLocation lifts script URLs back to repo paths. Stage-2 VLQ decode in v0.3.
CoV > 20% triggers trustScore: low + recommendedAction. We do not pretend 3-run measurements are precise.
Every metric, audit, reporter is a plugin. cwv, axe-core, third-parties built-in. Bring your own custom-metric plugin.
@ohmyperf/eslint-plugin catches no-document-write, no-sync-xhr, prefer-loading-lazy at editor-save time.
Drag report.json onto /viewer — full LCP/INP/CLS breakdown rendered in browser. No backend required.
servability classifies real-page vs bot-challenge-suspected vs error-page. Agents skip un-actionable measurements.
real for honest variance, ci-stable for cross-runner comparability (pre-flight CPU calibration + Fast 4G throttle).
Nine surfaces, one engine
All powered by frozen @ohmyperf/core 1.0.0 — 45 exports, Playwright + raw CDP, plugin runtime, calibration, outlier rejection, diff.
Single binary. Run on your laptop, in CI, or via npx for zero-install probes.
npx -y @ohmyperf/cli@latest run https://example.com
16 tools — measure, propose_patch, verify_fix, get_fix_plan and more. Drop into Claude / OpenCode / Cursor.
npx -y @ohmyperf/mcp-server@latest
Frozen 1.0.0 public API. Import { runEngine, measure } and embed in your own tooling.
import { runEngine } from "@ohmyperf/core"chrome.debugger driver. Click the toolbar icon on any tab to measure the current page.
Cmd+Shift+P → "OhMyPerf: Measure URL". Reports stream into the editor.
Drag report.json onto the page. Full breakdown rendered in browser. No upload, no signup.
Open viewer →7 CWV-linked rules: no-document-write, prefer-loading-lazy, prefer-fetchpriority, more.
npm i -D @ohmyperf/eslint-plugin @typescript-eslint/parser
Archetype registry + proposePatches() engine. 4 archetypes shipped, more in v0.3.
import { proposePatches } from "@ohmyperf/fixers"Cloudflare Workers + R2 + D1, or Node + S3-compatible + SQLite. Self-host or use ours.
Get started in 30 seconds
# CLI npm install -g @ohmyperf/cli ohmyperf run https://your-site.com # MCP server — drop into Claude / OpenCode / Cursor npx -y @ohmyperf/mcp-server@latest # Zero-install one-off npx -y @ohmyperf/cli@latest run https://your-site.com
Requires Node ≥ 22. Playwright Chromium auto-downloads on first run (~150 MB).