Debugger-first observability · PHP
Unravel what broke.
The layer between your production and your AI agent. Every request, query, job, socket and exception in your Laravel app, captured as one causal trace, then handed to your agent to fix. Everything below is a real production app.

A debugger, not a monitoring dashboard.
Trace volume never metered. You're billed on how long history is kept.
Free forever. The full debugger, on a 3-day window.
AI agents · MCP
Point your AI agent at production.
Connect Claude Code, or any MCP client, and it pulls the real context itself: the whole causal chain behind a failure, down to the query and the job that threw. An alert fires, you ask why checkout is failing, and it fixes it on the first try.

Async first
Async is where PHP apps break.
Websockets, queued jobs and scheduled work are traced like requests. A webhook fires four jobs, broadcasts over a socket, one throws, and it all stays in one causal story you can read top to bottom.

Causality
Causality, not log soup.
The backend interprets the raw stream for you. Queries are normalized into fingerprints, N+1s collapsed, every failed trace carries its immediate cause, and each request links back to what the same user did before it.

Alerting
Know before your users do.
Get notified when something breaks. Every alert carries the throw site, route, affected user and a deep link to the exact window, delivered to Slack, email or webhook.
New exception
Fires the first time production throws something it hasn't seen before.
Error rate
Fires when a route's failures cross a threshold you set.
Share a trace
One link, the whole story.
Any trace can be shared as a public read-only link, like a gist. Drop it in a pull request, an issue or a Slack thread, and whoever opens it reads the full timeline without a login, instead of squinting at a screenshot of your dashboard.
Scrubbed at share time
User data (bindings, bodies, payloads) is redacted by default. You pick what stays, per share.
Outlives retention
The link is a frozen snapshot of the trace, so it keeps working long after the trace itself has aged out.
Revocable
Shared the wrong thing? Revoke the link and it's gone for everyone, instantly.
Versus
Good tools, different job.
Telescope, Sentry and Nightwatch each earn their place. None of them is built to take one production incident apart. That's the job.
Requests, queries and jobs as flat lists on one machine. Invaluable in development, but it isn't built to run in production, and nothing connects one entry to the next.
Unravel keeps that depth, runs against production, and ties the same signals into one causal trace you can search back through.
Full comparisonBuilt around the exception: stack traces and alerting it does superbly. The N+1 above the error, the job that dispatched it, what the user did before: none of that is the product.
Unravel treats the exception as one event inside the trace that caused it: queries, jobs and the user's journey attached.
Full comparisonCharts and aggregates across the whole app, priced per event captured. Great at “is it healthy?”, less so at “what exactly happened here?”.
Unravel is debugger-first: built to take one incident apart. Trace volume is never metered.
Full comparisonLive demo
Don't take our word for it, walk through a live app.
A shared read-only project fed by a real Laravel storefront under constant traffic. Poke at its traces, exceptions and websockets exactly as you would your own.
A real app
Unravel Coffee, a Laravel shop with queues, schedules and Reverb websockets.
Real traffic
A robot browses, checks out and breaks things around the clock.
Real bugs, on purpose
N+1s, a flaky queued job, scheduled failures, the occasional 500. Things worth debugging.
One email to log in · no card · read-only
Safe in production
Built to stay out of your app's way.
It runs where it has to, in production, without getting between your users and the response they're waiting on.
Captured events buffer in memory and ship after your response is sent, so your users wait on your app, never on ours. The send is time-boxed; if our cloud is slow or unreachable, events drop, your request doesn't.
Known secrets are scrubbed and oversized payloads truncated before anything is sent. Client-key payload encryption is coming for the truly sensitive. How it's handled →
Within your retention window Unravel keeps every trace, minus known noise like health checks and scanners. The dashboard and your agent see all of it, with no sampling in between.
Why it exists
The layer between production and your agent.
We run realtime, async-heavy Laravel apps ourselves: queues, scheduled jobs, websockets broadcasting all day. No tool could trace one webhook, the jobs it fired and the broadcast as a single causal story, let alone hand that story to an AI agent. So we built the thing we needed, and dogfooded it in production before it was a product.
Install
Two lines. Zero config.
Unravel hooks the framework's own events, so you don't register a service provider, touch your code, or instrument anything by hand. Laravel today, Symfony next. Secrets are scrubbed and payloads truncated before anything leaves your server.
$composer require unravel/laravel+UNRAVEL_API_KEY=unrv_…#traces start flowingThe key comes from your dashboard: create a project at app.unravel.run, open Connect, and copy it.
Pricing
Pay for history, never volume.
Tiers scale projects and seats; paid tiers keep 30 days of history (Enterprise by contract). Trace volume is never metered: instrument as deeply as you want. Core debugging is on every plan, including free.
For solo founders shipping one app.
- 1 project
- 30-day retention
- 1 user
- +Alerting
- +AI agent access (MCP)
A small team on a couple of services.
- Up to 3 projects
- 30-day retention
- Up to 5 users
- +Alerting
- +AI agent access (MCP)
Many apps, deeper history.
- Up to 10 projects
- 30-day retention
- Unlimited users
- +Alerting
- +AI agent access (MCP)
- +Client-key payload encryptionsoon
Beyond the published tiers.
- Projects by contract
- Retention by contract
- Seats by contract
- +Alerting
- +AI agent access (MCP)
- +Client-key payload encryptionsoon
- +Bring-your-own databasesoon
Environments (prod, staging, local) are always free under a project. You're never charged per environment.
Stop reconstructing incidents from logs.
Connect your real app in two minutes. Free forever on a 3-day window, the full debugger included.
Start free