Firefly

Know how longit should take.

Firefly is a deterministic performance diagnostics app. It models how a computer should behave, compares that with what actually happened, and explains where the missing time went.

Expected t
Observed t′

Δ is the missing time. Where did it go?

Local-first, no account needed
Deterministic, explainable model
Web app and Tauri desktop app

Most performance tools measure one component in isolation. Real machines do not fail in isolation. Firefly models the whole path, from source storage through the buses, memory and CPU to the destination, before it judges the result.

From a question to an answer.

Model the path

Every stage of the data path gets a service-rate ceiling. The slowest one is the primary bottleneck.

Predict the time

From those ceilings and the workload, Firefly computes the expected time, t.

Compare with reality

You enter the observed time, t′. The gap between the two is the delta.

Explain the delta

The gap is broken into causes, and a plain-language diagnosis comes first, with the full ledger below it.

Example: copy 20 GB, internal NVMe to external SSD
Expected t0 s
Observed t′0 s
Delta0 s
Source NVMe read3,200 MB/s
PCIe 4.0 x4 link7,000 MB/s
Chipset bridge3,900 MB/s
Memory copy20,000 MB/s
USB 3.2 link1,000 MB/s
External SSD write850 MB/s
t = 24 s
Observed t′
Thermal throttling 8 sLink below max 5 sOS overhead 4 s
Thermal conditions explain most of the delta.

Three jobs. One model.

Diagnose

Why is this slow?

Plain-language cards first: the negotiated PCIe link is below its maximum, the bridge is saturated, thermals explain the delta. The detailed ledger sits right behind them.

Compare

Did this change help?

Capture a before, make a change, capture an after. Firefly shows whether the real ceiling moved, or only the noise, and whether a new bottleneck appeared downstream.

Design

What should this machine do?

Build a theoretical machine from named CPUs, GPUs, memory, storage, networks and topologies, and estimate its expected transfer rate before benchmarking anything.

Play with the model.

A toy version of Firefly’s idea. Pick a path and see the expected time, the bottleneck, and where each penalty adds time.

compression ratioPCIe lanesbridge bandwidthCPU transform ratequeue depthconcurrent jobs+ 11 more inputs
Expected time0 s

Illustrative constants only. They are not Firefly’s catalog values.

What ships with it.

Benchmark engine

Six bounded probes: RAM copy, burst write, read, sustained write, tiny-file queue pressure and a guided DMI/PCH test. Temporary files only.

Hardware probe

Best-effort adapters for macOS, Linux and Windows. Serial numbers, UUIDs, MAC and IP addresses are redacted.

npm run probe

Sourced hardware catalog

PCIe, Ethernet, USB and bridge ceilings, plus PCI and USB ID matches and Wikidata links, with provenance labels.

npm run catalog:update

PDF reports

Expected time, observed time, delta, bottleneck, warnings and confidence notes, generated locally in the browser.

Native helper layer

A Rust command surface in the Tauri app. Deeper counters are gated behind a signed-helper manifest and your consent.

Local-first by default

No account, no cloud service for modeling, no kernel driver or root helper installed silently.

Run it locally.

Firefly needs Node.js 22 or newer. The desktop app also needs the Rust stable toolchain and the Tauri prerequisites for your OS.

terminal
npm install npm start # then open http://127.0.0.1:4173/app.html npm test npm run desktop:dev # Tauri desktop app
  1. 1Open Design and choose a machine profile
  2. 2Run a safe benchmark probe
  3. 3Apply the result to the model
  4. 4Enter the observed runtime
  5. 5Read the diagnosis, export a PDF
  6. 6Capture before and after to compare

A reasoning engine, not an oracle.

Firefly shows which inputs were measured, probed, sourced, derived or assumed, so you can judge how far to trust each answer. It is open source under Apache-2.0.

View on GitHubRun it locally