# strobe

> Open-source CLI and MCP server that lets coding agents measure, explain and verify the performance of web pages, Electron and native apps on Windows, macOS and Linux.

strobe is an open-source performance tool by Luke Parker that lets a coding agent find what is slow in an app, fix it, and prove the fix worked with measured numbers. It covers web pages, Electron apps, Bun and Node processes, and native apps on Windows, macOS and Linux. The project describes itself as measuring what users actually feel and explaining it down to the line of code, the native stack, threads, wake-ups, allocations, frames, GPU use and VRAM.

## What It Is

strobe is a command-line tool written in Rust with a built-in MCP server and an agent skill, so an AI coding agent can drive it directly. It records a target on one timeline and answers with verdicts plus short handles for recordings and experiments that the agent can drill into. A core design rule is that strobe refuses measurements it cannot defend, for example a frame metric from a headless browser, and reports the refusal as the answer rather than a misleading number. It also never slows the target with CPU or network throttling.

## Benchmarks as Code

Benchmarks are TypeScript files built with the `@hona/strobe` npm package. Each bench names its targets, such as a local URL, an installed app or a native executable, and its cases, each with a primary metric, a run step and a reset step. `strobe bench` compares a base and head variant, which can be git refs, folders or installed apps, and runs paired measurements until the result is decided. It can bisect a regression across commits, gate on maximum allowed slowdowns, compare screenshots, and plan how many runs a target effect size needs.

## Recording and Diagnosis

`strobe record` captures a page, an app profile from the repo's `strobe.json`, or any running process by PID or name. Probes add timing, code attribution, memory leak runs, native stacks and off-CPU waits. `strobe query` turns a recording into hotspots, threads, frames, layout, garbage collection, memory and waits, or the difference between two recordings. `strobe look` shows the screen as strobe sees it, `strobe open` loads the full recording in Perfetto, and recordings can include video.

Pages run in an isolated Chromium, Chrome or Edge by default, with optional Firefox and WebKit engines and mobile or touch emulation. Native apps can be measured from outside through operating system events, or from inside through a native bridge that reports UI work and frames.

## Pull Request Results

`strobe report` turns an experiment into a pull request summary with a 1200 by 630 result card in light and dark versions, or a one-line badge, and can attach it to a pull request through the GitHub CLI. The card leads with the main win, such as less CPU time or memory, and shows how many measured pairs improved.

## Setup

Install the package as a dev dependency with Bun and run `strobe up` once per machine. Setup checks the machine, installs a helper for operating system performance events where needed, installs the `strobe` agent skill and registers the MCP server with OpenCode. App profiles build and launch each variant in a throwaway home directory so benchmarks never touch real user data, and `strobe status` reports what the machine can measure and which permission is missing.

## Features
- Agent-native CLI with a built-in MCP server
- Installable strobe agent skill
- TypeScript bench files with the @hona/strobe SDK
- Base vs head comparisons across git refs, folders or installed apps
- Paired runs that keep going until a result is decided
- Regression bisecting across commits
- Slowdown budgets that fail a bench when a metric gets worse
- Screenshot comparison between variants
- Run planning for a target effect size
- Record pages, app profiles or any process by PID or name
- Timing, attribution, memory leak, native stack and off-CPU wait probes
- Hotspot, thread, frame, layout, GC and memory queries
- Diffs between two recordings
- Perfetto export of full recordings
- Video capture of benchmark runs
- Chromium, Firefox and WebKit page engines
- Mobile and touch emulation
- Native app measurement from outside or through a native bridge
- GPU use and VRAM tracking
- PR result cards and badges attached through the GitHub CLI
- Throwaway app profiles via strobe.json
- Refuses measurements it cannot defend instead of reporting them
- Machine capability and permission check with strobe status

## Integrations
Model Context Protocol (MCP), OpenCode, Perfetto, GitHub CLI, Bun, Node.js, Electron, Chrome, Microsoft Edge, Chromium, Firefox, Safari, WebKitGTK, Playwright

## Platforms
WINDOWS, MACOS, LINUX, CLI, DEVELOPER_SDK

## Pricing
Open Source

## Version
0.17.0

## Links
- Website: https://github.com/Hona/strobe
- Documentation: https://github.com/Hona/strobe/blob/main/SPEC.md
- Repository: https://github.com/Hona/strobe
- EveryDev.ai: https://www.everydev.ai/tools/strobe
