Ran out of Nightwatch events halfway through the month?
Laravel monitoring without an event quota
NightOwl runs on the same laravel/nightwatch package and keeps every request, job, query and exception in your PostgreSQL. $15 a month for a team, whether it's a quiet month or a launch.
No credit card needed.
- 20,000+ installs of the agent on Packagist
- 120+ stars on GitHub
- laravel/nightwatch Built on Laravel's own instrumentation package
Event quotas run out in the months you need monitoring most
Nightwatch counts every request, query and job against a monthly quota. A few scheduled jobs or a batch import can use a large share of it in a day. When the quota runs out, ingestion pauses unless you pay for extra events, so the gap lands during the launch or the incident. Sampling stretches the quota, but at a 10% request sample, nine requests in ten never reach the dashboard.
NightOwl has no quota. It keeps every event in your own PostgreSQL and costs the same whatever you send.
| Events/moEvents a month | Nightwatch | NightOwlNightOwl Team |
|---|---|---|
| 10M10 million | $28.75 | $15 |
| 50M50 million | $130 | $15 |
| 200M200 million | $340 | $15 |
Nightwatch: the cheapest plan for each volume, from laravel.com/nightwatch/pricing on September 27, 2026. NightOwl Team plan. NightOwl writes your events to a PostgreSQL database you provide, which you host and pay for separately.
From the symptom to the line of code
A customer says something is broken. NightOwl already has the request, the payload it carried, the queries it ran and the exception it threw.
Exceptions become issues. Stack trace, file and line, every occurrence. Assign it, comment on it, resolve it.
Every request has a timeline. This checkout took 301 ms, and 275 ms of it was waiting on the payment provider.
See exactly what was sent. Payloads and response bodies for any status code, not only 500s.
One customer at a time. Filter every chart and request down to the account that wrote to support.
Skipped runs, not just failed ones. A scheduled task that quietly stops running shows up the minute it starts.
Hear about it before your customers do
Alerts where you already look. Email through your own SMTP, Slack, Discord, or a webhook signed with HMAC-SHA256.
Thresholds on anything slow. Cross one, and NightOwl opens an issue and tells you by how much.
- Routes
- Jobs
- Queries
- Commands
- Scheduled tasks
- Outgoing hosts
- Notifications
- Cache
One app for every environment. Production, staging and local share a token, and staging noise never mutes a production alert.
Running in about five minutes
- 1
Install the agent. One Composer package. It brings the laravel/nightwatch package with it.
- 2
Point it at PostgreSQL. A database you already run, or a free Supabase or Aiven tier.
- 3
Start it and open the dashboard. Requests, jobs and exceptions show up within a minute.
Already on Nightwatch? The package you use keeps doing the capturing. NightOwl changes where the data goes.
Read the setup guideNo database yet? Start on a free tier: Supabase, Neon, Aiven, Neon via Vercel.
# Install the agent (it brings laravel/nightwatch with it)
composer require nightowl/agent
# Add the token and your PostgreSQL details to .env
NIGHTOWL_TOKEN=your-agent-token
NIGHTOWL_APP_ID=your-app-id
NIGHTOWL_DB_HOST=your-pg-host
NIGHTOWL_DB_DATABASE=nightowl
NIGHTOWL_DB_USERNAME=nightowl
NIGHTOWL_DB_PASSWORD=your-password
# Create the tables, then start the agent
php artisan nightowl:install
php artisan nightowl:agent Watch it catch real problems
A three-minute tour, then one-minute stories filmed on a live test shop. Every number on screen comes from a real run.
Laravel Monitoring in 3 Minutes: NightOwl Product Tour
A three-minute tour of NightOwl, monitoring built for Laravel. It follows one afternoon on a Laravel shop: a P95 spike on the dashboard, the checkout route behind it, a slow request whose time went to the payment provider, and the issue those failures opened.
Length 0:57NightOwl finds the problem, you fix it
Length 0:56Debugging a Laravel 422 You Can't Reproduce
Length 0:55Laravel API Slow but No Errors? Find the Slow Third-Party Call
Length 0:53Laravel App Slow but Nothing Is Broken: PHP Worker Saturation What it records
Nightwatch captures it, NightOwl links it together by trace, so you can move from any event to the request or job that caused it.
Requests
Status codes, P95 and timing per route.Status codes, P95 and a timing breakdown per route.
Exceptions
Grouped by fingerprint, per environment.Grouped by fingerprint, counted per environment.
Queries
By shape, with the file and line.Grouped by shape, with the file and line that ran them.
Jobs
Attempts, retries and queue wait.Attempts, retries and time spent waiting in the queue.
Scheduled tasks
Every run, skipped ones too.Every run, including the skipped ones.
Outgoing requests
Each outside API call, by host.Each call to an outside API, by host.
Mail and notifications
What went out, and what sent it.
Cache
Hits, misses and writes per pattern.Hits, misses and writes for each key pattern.
Users
Everything one account did.Everything one account did, in one place.
Logs
From the request that wrote them.Opened from the request that wrote them.
Commands
Artisan commands and duration.Artisan commands and how long they took.
Agent health
Ingest rate and buffer depth.Ingest rate and buffer depth for each agent.
Your coding agent can read it too
You hand the issue to your coding agent. It pulls the same data over MCP, confirms the problem and writes the fix. Available on the Team and Agency plans.
-
ClaudeClaude Code
-
Codex
-
Cursor
-
Windsurf
-
Zed
Pricing
One flat price with no event quota. Every plan starts with a 14-day free trial.
One app for a side project. Issues and alerts, with a 14-day dashboard window.
Start my 14-day trialUp to 3 apps and 5 people per team. Full history, the MCP server, data clearing and agent health.
Start my 14-day trialUnlimited client apps and people, one overview of every app, and apps you can hand over.
Start my 14-day trialFrequently asked questions
Anything else, write to support@usenightowl.com
Do I need Laravel Nightwatch installed?
You don't install it separately: laravel/nightwatch is a Composer dependency of the NightOwl agent, so it gets pulled in automatically when you require nightowl/agent. Nightwatch captures the telemetry, and the agent routes it to your PostgreSQL instead of the hosted Nightwatch Cloud.
Do I have to run a database?
Yes. NightOwl stores your data in a PostgreSQL database you control, which is why the price doesn't grow with your traffic. Any PostgreSQL 14 or newer works. Small apps fit on a free Supabase or Aiven tier, and the setup guides walk through each one.
What's the performance overhead in my app?
Small. Laravel puts the Nightwatch package's overhead under 3ms per request. The package sends its data after the response, and a separate agent process does the database writes. In an ingest-only benchmark, one agent accepted 13,400 payloads a second.
Where does my data live?
In your PostgreSQL database. The hosted dashboard reads from it with credentials you provide, over TLS when your database offers it. You hold the keys, the backups and the retention policy.
What happens when my database fills up?
Nothing is deleted until you choose to. Schedule nightowl:prune and it keeps the number of days you set in NIGHTOWL_RETENTION_DAYS, so the database stays the size you want.
Can I leave without losing data?
Yes. The data is standard PostgreSQL with documented schemas. Cancel your subscription and the data stays exactly where it is, yours to query, archive, or import elsewhere.
How does it handle scale?
Run several agent instances for more ingest throughput, and raise the drain workers (up to 16 per agent) to write to your database in parallel. Each agent buffers incoming data in a local SQLite file, so a traffic spike waits there while the database catches up.
Try it on your own app
Your first requests show up within a minute of starting the agent. No credit card needed.
