odylabs / sentinel
Automatic production exception reporting for Laravel. Lightweight, secure, framework-native.
Requires
- php: ^8.1
- illuminate/http: ^10.0|^11.0|^12.0|^13.0
- illuminate/queue: ^10.0|^11.0|^12.0|^13.0
- illuminate/support: ^10.0|^11.0|^12.0|^13.0
Requires (Dev)
- mockery/mockery: ^1.6
- orchestra/testbench: ^8.0|^9.0|^10.0
- phpunit/phpunit: ^10.0|^11.0
This package is auto-updated.
Last update: 2026-07-28 18:31:21 UTC
README
Automatic production exception reporting for Laravel. Lightweight, secure, framework-native, and installable in under two minutes.
Sentinel watches your Laravel app for uncaught exceptions, queue job failures, and Artisan command failures, then ships a structured, signed report to your project on Odylabs Sentinel — with sensitive data masked automatically.
Features
- One-command installation
- Zero config beyond your project credentials
- Automatic exception, queue-failure, and Artisan-command-failure reporting
- Request, user, route, and SQL query context
- Full stack traces (configurable depth)
- Sensitive data masking (passwords, tokens, cookies, etc.)
- HMAC-signed, authenticated report delivery
- Automatic retries with backoff
- Async delivery via your queue when available, safe sync fallback otherwise
- Never interrupts your application — reporting failures are swallowed and logged locally
- MIT licensed client package
Requirements
- PHP 8.1+
- Laravel 10, 11, 12, or 13
Installation
- Register / log in at dev.odylabs.com and create a project. You'll get a Project ID and Auth Key.
- Install the package:
composer require odylabs/sentinel
- Run install with your credentials — this writes them straight to
.env:
php artisan sentinel:install --project-id=your-project-id --auth-key=your-auth-key
(Or run php artisan sentinel:install with no flags for manual copy-paste instructions instead.)
- Clear config cache and connect:
php artisan config:clear php artisan sentinel:connect
- Send a test report:
php artisan sentinel:test
Errors will now appear in your project dashboard at https://dev.odylabs.com/projects/{project_id}.
Usage
Sentinel reports uncaught exceptions automatically — no code changes required. For manual reporting:
use Odylabs\Sentinel\Facades\Sentinel; try { riskyOperation(); } catch (\Throwable $e) { Sentinel::report($e); // ...handle it however you normally would }
Attach extra context to a report:
Sentinel::withMetadata(['tenant_id' => $tenant->id])->report($e);
Delivery modes
Set SENTINEL_DELIVERY_MODE to control how reports are sent:
| Mode | Behavior |
|---|---|
sync |
(default) Always sends inline, in the same request — no queue worker needed |
queue |
Always dispatches to the queue (requires a running worker, or reports pile up unsent) |
auto |
Uses your queue if configured; falls back to sync otherwise |
Security
- Every installer reports to the same fixed Odylabs endpoint — there is no configurable webhook URL
- Reports are attributed to your project via a Project ID + Auth Key, issued from your portal account, sent as a Bearer token over HTTPS
- Configurable field-level masking for request bodies and headers
Configuration
Publish the config file to customize masking rules, ignored exceptions, capture toggles, and delivery settings:
php artisan vendor:publish --tag=sentinel-config
See config/sentinel.php for all available options.
Contributing
See CONTRIBUTING.md.
License
This client package is MIT licensed. See LICENSE.md. The Odylabs Sentinel portal and backend are proprietary.