The 3-step migration
Step 1 — install the agent
# Keep laravel/nightwatch installed. Add NightOwl's agent package:
composer require nightowl/agent
php artisan nightowl:installStep 2 — configure PostgreSQL
# The installer will prompt you for:
# - PostgreSQL connection (host, port, database, credentials)
# - NightOwl account ID / app token
# - Environment (production, staging, etc.)
# Migrations run automatically to create the nightowl_* tables.Step 3 — configure destinations (validation period)
// config/nightwatch.php
return [
'destinations' => [
'cloud' => ['enabled' => env('NIGHTWATCH_CLOUD_ENABLED', true)],
'nightowl' => ['enabled' => env('NIGHTOWL_ENABLED', true)],
],
];Both destinations now receive telemetry. Run for 1-2 weeks to compare. Once you're confident, disable the cloud destination:
# In .env:
NIGHTWATCH_CLOUD_ENABLED=false
NIGHTOWL_ENABLED=true
php artisan config:clear
php artisan queue:restartValidation checklist
- Request throughput in NightOwl matches Cloud within ~1%
- Exception count matches
- Query patterns are grouped identically
- Queue job classes appear with the same runtime stats
- Scheduled tasks appear with last-run timestamps
- Alert channels in NightOwl fire on the same conditions
What stays with Nightwatch Cloud
Historical data in your Cloud account. You can access it read-only until the plan ends. Export critical reports before you cancel if you need them for long-term records.
Cancel the Cloud subscription
Once NightOwl has been running as your sole destination for a week without issues, cancel Nightwatch Cloud via your account settings. The Nightwatch package continues to function — only the cloud destination is removed.
Pricing at your volume
Break-even point for most teams: Nightwatch Cloud is free under 300K events/month, then usage-based. NightOwl is from $5/month flat. At ~500K+ events/month, NightOwl is cheaper; at low volume, Cloud's free tier is cheaper. Most apps that outgrow the free tier benefit from switching.
Rollback
If you want to go back: flip the destination config, re-enable the Cloud integration, done. NightOwl's data stays in your PostgreSQL for future reference. Nothing to rebuild.
AFTER MIGRATION
Same instrumentation, your database
The Laravel team's nightwatch package still powers your telemetry. The dashboard is ours. The storage is yours. From $5/month flat.