Multi-tenant by design
Organizations → Applications → Environments. Each environment gets its own rotatable ingest token.
Self-hosted · Laravel · Open source
Nightkeeper is a self-hosted implementation of
Laravel Nightwatch's
cloud dashboard. Keep the official nightwatch:agent exactly as it ships —
just point it at a server you control instead of a hosted one.
Nightwatch's local agent streams request, query, exception, job, and command telemetry from your app to a hosted dashboard over a small HTTP contract — nothing about that contract is tied to Laravel's own servers. Nightkeeper re-implements just that half: it authenticates the agent, accepts its ingest batches, and renders the same categories of data your monitored app already produces. No telemetry leaves infrastructure you control, and there's no recurring bill for the privilege of seeing your own exceptions.
Organizations → Applications → Environments. Each environment gets its own rotatable ingest token.
Requests, queries, exceptions, commands, scheduled tasks, jobs, outgoing requests, cache, mail, and notifications — grouped and aggregated.
Every trace reconstructed span-by-span, from bootstrap through termination, for a single request or job.
Unhandled exceptions grouped by class, file, and line — occurrence counts, affected users, real stack traces with source context, open/close workflow.
Short-lived HMAC-signed JWTs issued per environment. Rotate a token without touching any other environment.
Laravel, Inertia, React, Tailwind. Self-host it with a stack you're probably already running.
POST /api/agent-auth with the environment's ingest token returns a short-lived signed JWT.
Gzip'd JSON batches of request, query, exception, and job records are POSTed to /api/ingest.
Events are grouped, aggregated, and rendered across the same dashboards a hosted product would give you.
Run Nightkeeper itself:
composer install
cp .env.example .env
php artisan key:generate
php artisan migrate
php artisan serve
Dashboard is now at http://127.0.0.1:8000. Point a Nightwatch agent at it:
NIGHTWATCH_BASE_URL=http://127.0.0.1:8000
NIGHTWATCH_TOKEN=<your environment's ingest token>
Full setup, including production notes, lives in the README.