See what your PHP application does in production

Inspector records every HTTP request, background job and command, with the database queries and external calls inside them. It takes one Composer package, with nothing to install on your servers.

Free up to 30K transactions a month. No credit card.

Every request, job and command

See what your application handles, how long each task takes and how much memory it uses, grouped by endpoint so the slow ones surface first.

Transactions

NameTypeHitsDurationMemoryResult
GET /api/usersrequest57412 ms2.2 MB200
POST /api/ordersrequest23176 ms3.1 MB200
GET /api/invoices/{id}request986 ms1.9 MB500
orders:synccommand71.2 sec21.8 MBsuccess
App\Jobs\SendInvoicejob112640 ms12.4 MBsuccess

Slow queries in their execution context

The timeline shows what your ORM does behind the scenes, so you can spot an N+1 or a slow join inside the request that caused it.

GET /api/users

Duration
412.00ms
Segments
8
Result
200
  1. select * from `users`38.20ms
  2. select `offices`.*, `office_user`.`user_id` from `offices` inner join `office_user` on `offices`.`id` = `office_user`.`office_id` where `office_user`.`user_id` = ?48.10ms
  3. select `offices`.*, `office_user`.`user_id` from `offices` inner join `office_user` on `offices`.`id` = `office_user`.`office_id` where `office_user`.`user_id` = ?52.40ms
  4. select `offices`.*, `office_user`.`user_id` from `offices` inner join `office_user` on `offices`.`id` = `office_user`.`office_id` where `office_user`.`user_id` = ?44.70ms
  5. select `offices`.*, `office_user`.`user_id` from `offices` inner join `office_user` on `offices`.`id` = `office_user`.`office_id` where `office_user`.`user_id` = ?56.30ms
  6. select `offices`.*, `office_user`.`user_id` from `offices` inner join `office_user` on `offices`.`id` = `office_user`.`office_id` where `office_user`.`user_id` = ?48.90ms
  7. select `offices`.*, `office_user`.`user_id` from `offices` inner join `office_user` on `offices`.`id` = `office_user`.`office_id` where `office_user`.`user_id` = ?54.20ms
  8. redis:get22.60ms
6 identical queries in one request

Errors before your customers report them

Inspector groups each error with its stack trace, the source code around the failure and how often it happens.

Latest errors detected

MessageAppHitsLast seenAI Bug Fix
Call to a member function format() on nullshop-api482 minutes agoRead the fix
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entrybilling129 minutes agoTry AI Bug Fix
cURL error 28: Operation timed out after 5000 millisecondsshop-api71 hour agoTry AI Bug Fix

Alerts where your team already works

Set an alert on what matters to you, and send it to the channels your team already reads.

  • Email
  • Slack
  • Microsoft Teams
  • Discord
  • Telegram
  • Google Chat
  • Webex
  • PagerDuty
  • Pushover
  • Webhooks

Then let your coding agent fix it

Everything you see in the dashboard is available to your coding agent through the MCP server, so it can go from the data to a change in your code.

Coding agentInspector MCP connected

Why is GET /api/users slow in production?

  • worst_performing_transactions shop-api
  • transaction_details GET /api/users

N+1 query in UserController@index. It loads offices once per user, which adds 6 queries to every request.

app/Http/Controllers/UserController.php
- $users = User::all();+ $users = User::with('offices')->get();

Give your coding agent eyes on production

Install the package, connect your agent, and let it find the next problem before your customers do.

Free up to 30K transactions a month. No credit card.