Self-hosted application monitoring for Laravel — track everything, own your data.
Features • Quick Start • Client Integration • Architecture • Production • License
LaraOwl is a open-source, self-hosted monitoring platform built specifically for Laravel applications. Unlike SaaS alternatives, you deploy it on your own infrastructure — your data never leaves your servers.
Drop in a single Composer package on any Laravel app, point it at your LaraOwl server, and instantly get real-time dashboards for requests, exceptions, queries, jobs, and more.
| Category | What's Tracked |
|---|---|
| Requests | Every HTTP request — method, path, status code, duration, middleware timing, response size |
| Exceptions | Automatic grouping, stack traces, occurrence count, first/last seen, resolution status |
| Database Queries | Slow query detection, N+1 identification, execution time, connection info |
| Jobs & Queues | Job processing status, duration, failures, retry tracking |
| Commands | Artisan command execution, exit codes, runtime duration |
| Scheduled Tasks | Cron health, execution history, failure alerts |
| Cache Events | Hit/miss ratios, key-level analytics |
| Mail & Notifications | Outbound mail tracking, notification channel analytics |
| Outgoing Requests | HTTP client calls to external APIs — host, status, latency |
| Logs | Centralized application log aggregation with search |
- Live updates via WebSockets (Laravel Reverb) — no page refresh needed
- Interactive charts with time-series breakdowns (Recharts)
- Flexible time filters — 1h, 24h, 7d, 14d, 30d, or custom date ranges
- Per-page pagination that preserves active filters
- Authenticated vs. guest request breakdown
- Per-user request volume, error rates, and last-seen timestamps
- User activity drill-down with full request history
- Automatic health checks every 30 seconds
- Status code tracking with response time history
- Instant alerts when your site goes down
- Cron job and scheduled task health verification
- Configurable check-in intervals
- Alerts when a heartbeat stops reporting
- Built-in WAF analysis — detects SQL injection, XSS, path traversal, command injection, LFI/RFI
- Risk scoring engine with configurable thresholds (Medium / High / Critical)
- IP-based threat tracking with automatic pattern recognition
- Security audit dashboard with threat timeline
- Direct Cloudflare API connection for WAF management
- Firewall rule CRUD from the dashboard
- Traffic analytics and audit log visualization
- One-click IP blocking
Send alerts to the channels your team already uses:
| Channel | Supported |
|---|---|
| Slack | ✅ Rich block messages with action buttons |
| Discord | ✅ Embedded messages with fields |
| Telegram | ✅ Markdown-formatted bot messages |
| ✅ Plain-text notifications | |
| Webhooks | ✅ JSON payload to any endpoint |
Alert triggers:
- New exception detected
- High latency / slow performance
- Uptime down
- Heartbeat failure
- Error spike (configurable window & threshold)
- Throttle control to prevent alert fatigue
Set custom performance budgets per project:
- Route response time limits
- Job execution time limits
- Query execution time limits
- Command runtime limits
- Automatic issue creation when thresholds are exceeded
- Per-project retention policies — 1, 3, 7, 14, 30, 60, 90 days, or never delete
- Automatic daily pruning
- Teams with role-based access
- Multiple projects per team
- Per-project settings, API tokens, and integrations
- Team invitations via email
- All incoming data is processed via Laravel Queues
- Zero-latency API responses — data is queued immediately
- Broadcasting happens in the background worker
- PHP 8.3+
- Node.js 18+
- Composer
- MySQL 8.0+ or PostgreSQL
- A queue worker
Choose one of the following methods to install the LaraOwl server:
composer create-project laraowl/laraowl laraowl
cd laraowlOnce the files are ready, complete the setup:
# Install frontend dependencies
npm install
# Environment setup
cp .env.example .env
php artisan key:generate
# Configure your database in .env, then:
php artisan migrate
# Build frontend assets
npm run build
# Start the server
php artisan serveLaraOwl needs these processes running alongside the web server:
# Process queued records (required)
php artisan queue:work
# WebSocket server for real-time updates (required)
php artisan reverb:start
# Scheduler for uptime checks & data pruning (required)
php artisan schedule:workIn the Laravel application you want to monitor:
composer require laraowl/clientRun the interactive setup command:
php artisan laraowl:installOr manually add to your .env:
LARAOWL_SERVER_URL=https://your-laraowl-server.com
LARAOWL_TOKEN=your_project_api_tokenYou can find the API token in Project Settings → API Keys within the LaraOwl dashboard.
To forward application logs to LaraOwl:
LOG_STACK=stack,laraowlThat's it. Your application will immediately begin sending telemetry data to the LaraOwl server.
┌──────────────────┐ HTTPS POST ┌──────────────────────┐
│ Your Laravel │ ──────────────────────────▶ │ LaraOwl Server │
│ Application │ /api/ingest │ │
│ │ (API Token Auth) │ ┌────────────────┐ │
│ laraowl/client │ │ │ IngestController│ │
│ package │ │ └───────┬────────┘ │
└──────────────────┘ │ │ │
│ Queue Dispatch │
│ │ │
│ ┌───────▼────────┐ │
│ │ ProcessIngested │ │
│ │ Records (Job) │ │
│ └───────┬────────┘ │
│ │ │
│ ┌───────▼────────┐ │
│ │ IngestService │ │
│ │ • Store records │ │
│ │ • Group issues │ │
│ │ • Check threats │ │
│ │ • Fire alerts │ │
│ └───────┬────────┘ │
│ │ │
│ WebSocket Push │
│ (Reverb) │
│ │ │
│ ┌───────▼────────┐ │
│ │ React Dashboard │ │
│ │ (Inertia + SSR) │ │
│ └────────────────┘ │
└──────────────────────┘
Data flow:
- The client package hooks into Laravel's service container and captures requests, exceptions, queries, jobs, etc.
- Captured data is sent via authenticated HTTP POST to the server's
/api/ingestendpoint. - The server immediately queues the payload and responds with
200 OK(zero processing delay). - A queue worker processes the records: stores them, calculates fingerprints for grouping, runs security analysis, and checks alert thresholds.
- A WebSocket event (
ProjectDataIngested) is broadcast so the dashboard updates in real-time.
Key variables to configure for production:
APP_ENV=production
APP_DEBUG=false
APP_URL=https://your-domain.com
# Database
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=laraowl
DB_USERNAME=laraowl
DB_PASSWORD=your-secure-password
# Queue (use Redis for best performance)
QUEUE_CONNECTION=redis
# Broadcasting
BROADCAST_CONNECTION=reverb
# Reverb WebSocket
REVERB_HOST="your-domain.com"
REVERB_PORT=8080
REVERB_SCHEME=httpsExample Supervisor configuration for the queue worker:
[program:laraowl-queue]
process_name=%(program_name)s_%(process_num)02d
command=php /path/to/laraowl/artisan queue:work --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
numprocs=2
redirect_stderr=true
stdout_logfile=/var/log/laraowl/queue.log
[program:laraowl-reverb]
command=php /path/to/laraowl/artisan reverb:start
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/laraowl/reverb.logAdd to your server's crontab:
* * * * * cd /path/to/laraowl && php artisan schedule:run >> /dev/null 2>&1
This handles:
- Uptime checks — every 30 seconds
- Data pruning — daily cleanup based on retention settings
| Section | Description |
|---|---|
| Overview | High-level project health — requests, errors, performance at a glance |
| Requests | HTTP traffic analysis with route-level breakdown |
| Exceptions | Grouped errors with stack traces and occurrence tracking |
| Jobs | Queue job monitoring — processed, failed, duration |
| Commands | Artisan command execution history |
| Scheduled Tasks | Cron job health and execution log |
| Queries | Database query analytics — slow queries, N+1 detection |
| Notifications | Outbound notification tracking by channel |
| Email delivery monitoring | |
| Cache | Cache hit/miss analytics by key |
| Outgoing Requests | External HTTP call monitoring |
| Users | Authenticated user activity tracking |
| Uptime | Site availability monitoring |
| Logs | Centralized log viewer with search |
| Security | Threat detection dashboard |
| Firewall | Cloudflare WAF management (traffic, rules, audit) |
| Settings | General, Integrations, Alert Rules, Thresholds, API Keys, Cloudflare |
Contributions are welcome! Please feel free to submit a Pull Request.
LaraOwl is open-source software licensed under the Apache License 2.0.