Find the latency problem before it is politically expensive
Profilers explain what happened in a running system. They rarely explain why the user waited. LatencyLab executes explicit models of tasks, events, queues, delays and resource contention using deterministic scheduling and reproducible randomness, then runs them many times to produce concrete metrics.
Explicit models
A model is your architecture written down: tasks, the events that trigger them and the resources they queue behind. Nothing is inferred and nothing is hidden. The model is what you reason about.
Many seeded runs
One run tells you nothing; the spread across hundreds is the finding. Every run is seeded, so behaviour stays reproducible across versions. At scale the dominant behaviours become clearer, not noisier.
Critical paths and percentiles
The critical path is the chain of tasks and waits that decided how long the user waited in one run. Concrete critical paths name the work; percentiles are split for UI events and overall makespan because they answer different questions: UI-event percentiles describe when the interface responded to the user; makespan percentiles describe when the whole piece of work finished.
Yours, on your machine
The model is a plain JSON file and every output is a plain file beside it. A local CLI plus an optional desktop UI. No account, no server, no instrumentation of production code. Your models and results never leave your machine; the desktop app's one outbound call is an anonymous daily check of GitHub releases for a newer version, with an update prompt you can download, skip or defer.
It shows what the model produced and nothing it did not
The UI exists because text output alone was not enough to reason about timing, ordering and consequence. It is intentionally literal: it shows what ran, how often it ran and where time accumulated. Full keyboard navigation is treated as a constraint, not polish.
Install it and run the shipped example
One installer per platform, per-user on Windows, no administrator rights and no toolchain. Open the Examples menu, choose Checkout, press Run: you have a distribution and a critical path inside a minute, before you have written a model of your own.
Underneath the desktop application is a Python library with a CLI in front of it, reading a JSON execution model. Every run writes plain files you can plot or diff, whichever way you drove it.
summary.jsonAggregate latency and contention statistics for the whole run.
runs.csvPer-run metrics, suitable for analysis or plotting.
trace.csvOptional per-task-instance timing and causality data.
Where to next
Every page answers one question.