Who it is for
Laravel developers, tech leads and teams who need to understand, audit or speed up an application they did not write — or wrote a long time ago.
The problem it solves
When a request is slow, teams usually guess: add an index, add a cache, rewrite a query. Without a trace of where the time actually went, optimisation effort lands in the wrong place. The same goes for site health — missing security headers or broken structured data rarely show up until something goes wrong.
What you can do today
- Runtime request traces. Install the open-source flow-laravel package (composer require zerethonapp/flow-laravel) and every HTTP request is captured as a trace — request lifecycle, controller, database queries, plus any service or external calls you wrap with Flow::traceService() / Flow::traceExternal().
- Deterministic bottleneck detection. Each node in a trace is scored by its share of the total time and the slowest one is named with an explanation (for example "UserService.fetch — 90ms, 90% of the request; database 2%"). No black-box model is involved.
- Offline and Connected modes. By default traces stay in a local file (.zerethon/flow-history.json). Add three environment variables and traces are also pushed to the Flow dashboard for the project.
- Website scans. Point Flow at a URL and it crawls the site, checking titles and meta descriptions, canonical tags, heading structure, missing alt text, security headers (CSP, HSTS, framing, MIME sniffing), JSON-LD validity, llms.txt and AI-crawler access, and OpenAPI specs it can discover.
- Scan comparison. Two scans of the same project can be compared to see what was fixed, what is new and what is still open.
How it works
- The Laravel adapter registers a global middleware and listens to Laravel's database events; it measures each step of a request and writes a trace made of nodes (request, controller, query, service, external) and the edges between them.
- SQL text and query bindings are not captured unless you enable them, and the adapter never initiates outbound calls on its own — it only pushes traces when Connected mode is configured.
- Website scans run in Flow's engine, which fetches the real pages and HTTP responses and attaches the exact header, tag or measurement behind every finding.
Current limitations
Being clear about what a product doesn't do yet is part of describing it honestly.
- The runtime adapter is Laravel-only today. Other frameworks would need an adapter that speaks the same HTTP+JSON protocol; none is published yet.
- Distributed tracing across services, queue/job tracing and automatic service discovery are not supported yet.
- Pull-request checks, scan alerts and failing a build on regressions are planned, not available.
Where to use it
Dashboard at flow.zerethon.com (sign in with a Zerethon account). The Laravel adapter is MIT-licensed on GitHub and Packagist.