PHPackages                             finity-labs/fin-sentinel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Debugging &amp; Profiling](/categories/debugging)
4. /
5. finity-labs/fin-sentinel

ActiveLibrary[Debugging &amp; Profiling](/categories/debugging)

finity-labs/fin-sentinel
========================

Exception monitoring and debug email channel for Filament.

v1.0.0(1mo ago)00MITPHPPHP ^8.2CI passing

Since Mar 28Pushed 1mo agoCompare

[ Source](https://github.com/finity-labs/fin-sentinel)[ Packagist](https://packagist.org/packages/finity-labs/fin-sentinel)[ RSS](/packages/finity-labs-fin-sentinel/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (10)Versions (2)Used By (0)

FinSentinel for Filament
========================

[](#finsentinel-for-filament)

[![finity-labs-fin-sentinel](https://private-user-images.githubusercontent.com/254747167/570749483-4fe187d8-c5d2-4ef8-a8cd-164a98b305b1.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NzMyNzUsIm5iZiI6MTc3NDY3Mjk3NSwicGF0aCI6Ii8yNTQ3NDcxNjcvNTcwNzQ5NDgzLTRmZTE4N2Q4LWM1ZDItNGVmOC1hOGNkLTE2NGE5OGIzMDViMS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyOFQwNDQyNTVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1lMTg2MTZiMGIyZjM5M2U2ZGExYTgwMzZlNzVkM2UyOWEzY2NlZWNiMDdjYWQ0OThhNzYzMmQzY2Q1MGZkYzE0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.aHvTBbq9YVSLO4Rh8tpTXt0SH5CMGBQy32f_ZVhp6c4)](https://private-user-images.githubusercontent.com/254747167/570749483-4fe187d8-c5d2-4ef8-a8cd-164a98b305b1.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NzMyNzUsIm5iZiI6MTc3NDY3Mjk3NSwicGF0aCI6Ii8yNTQ3NDcxNjcvNTcwNzQ5NDgzLTRmZTE4N2Q4LWM1ZDItNGVmOC1hOGNkLTE2NGE5OGIzMDViMS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyOFQwNDQyNTVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1lMTg2MTZiMGIyZjM5M2U2ZGExYTgwMzZlNzVkM2UyOWEzY2NlZWNiMDdjYWQ0OThhNzYzMmQzY2Q1MGZkYzE0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.aHvTBbq9YVSLO4Rh8tpTXt0SH5CMGBQy32f_ZVhp6c4)

[![FILAMENT 4.x](https://camo.githubusercontent.com/5b4c0b6fdfb4549d1f307a81659b179a61d677a1849d35e6ecabd4879b602ea5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f46494c414d454e542d342e782d4542423330343f7374796c653d666c61742d737175617265)](https://filamentphp.com/docs/4.x/panels/installation)[![FILAMENT 5.x](https://camo.githubusercontent.com/505caf6f77dd8ce71275a65163d71c3d96731f079069e1ff8a7d5d2a3c07d8a3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f46494c414d454e542d352e782d4542423330343f7374796c653d666c61742d737175617265)](https://filamentphp.com/docs/5.x/panels/installation)[![Latest Version on Packagist](https://camo.githubusercontent.com/f7fe549e7675b606c3bfeec78ed64cbe1061665f79be9181b2cbe40701640129/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f66696e6974792d6c6162732f66696e2d73656e74696e656c2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/finity-labs/fin-sentinel)[![Tests](https://github.com/finity-labs/fin-sentinel/actions/workflows/tests.yml/badge.svg)](https://github.com/finity-labs/fin-sentinel/actions/workflows/tests.yml)[![Code Style](https://github.com/finity-labs/fin-sentinel/actions/workflows/style.yml/badge.svg)](https://github.com/finity-labs/fin-sentinel/actions/workflows/style.yml)[![Total Downloads](https://camo.githubusercontent.com/a7483939d1b4f468426c9eb89d9a0e91fd9805583718694679c7307361e8300a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f66696e6974792d6c6162732f66696e2d73656e74696e656c2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/finity-labs/fin-sentinel)[![License](https://camo.githubusercontent.com/24cd1f4d2a019a5a4f45385d0e5a29ea034dca0174bbc31f3ccd292b93bc216b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f66696e6974792d6c6162732f66696e2d73656e74696e656c2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/finity-labs/fin-sentinel)

A Filament plugin that catches exceptions and emails them to your team, gives you a one-liner debug mail channel, and lets you browse log files from the admin panel -- no SSH required.

Features
--------

[](#features)

- **Automatic error emails** -- Stack traces, request context, and environment info delivered straight to your inbox when something breaks
- **Configurable ignore list** -- Skip exceptions you don't care about (like 404s and token mismatches)
- **Per-exception throttling** -- Same error won't flood your inbox; configurable cooldown period
- **Recursive loop guard** -- If the error email itself fails, it won't trigger more error emails
- **Sensitive data scrubbing** -- Passwords, tokens, API keys, and secrets are redacted automatically
- **Debug mail via Facade** -- `FinSentinel::debug($data)` sends whatever you're inspecting as a formatted email
- **Fluent builder** -- Chain `->subject()`, `->to()`, and `->send()` for full control over debug emails
- **Smart formatting** -- Arrays, Eloquent models, collections, and query builders are formatted into readable HTML
- **Event-based debug** -- Fire `SentinelDebug::dispatch($data)` from anywhere, including queued jobs
- **Log file browser** -- List, search, and filter your Laravel log files from the admin panel
- **File actions** -- View, download, email, or delete log files without touching the server
- **Memory-safe parsing** -- Handles 100MB+ log files using indexed two-pass pagination
- **Admin settings pages** -- Configure both channels (error and debug) from the UI
- **Shield integration** -- Optional page-level permissions via Filament Shield

Requirements
------------

[](#requirements)

- PHP 8.2+
- Laravel 11+
- Filament 5

Installation
------------

[](#installation)

```
composer require finity-labs/fin-sentinel
```

```
php artisan fin-sentinel:install
```

The install command will:

- Publish the config file and settings migrations
- Run migrations to create the settings tables
- Register the plugin in your selected Filament panel(s)

#### Non-interactive install

[](#non-interactive-install)

Pass panel IDs as arguments to skip the interactive prompt:

```
php artisan fin-sentinel:install admin
```

In non-interactive mode (e.g., CI), the command registers the plugin in all discovered panels automatically.

### Register the plugin

[](#register-the-plugin)

If you skipped the automatic registration during install, add it to your panel provider manually:

```
use FinityLabs\FinSentinel\FinSentinelPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            FinSentinelPlugin::make(),
        ]);
}
```

### Plugin options

[](#plugin-options)

```
FinSentinelPlugin::make()
    ->navigationGroup('Monitoring')      // string, UnitEnum, Closure, or null
    ->navigationSort(10)                 // ?int
    ->canAccess(fn () => auth()->user()?->is_admin)  // restrict access without Shield
    ->settingsCluster(MySettingsCluster::class)       // move settings to a custom cluster
```

The `canAccess` closure controls who can see all Sentinel pages. When omitted, every authenticated panel user has access. When [Filament Shield](#filament-shield-integration) is installed, its page-level permissions take priority.

The `settingsCluster` option lets you move the Error Channel and Debug Channel settings pages into a different cluster (e.g., a shared "Settings" cluster in your app). By default, they live in the built-in FinSentinelSettings cluster.

Usage
-----

[](#usage)

### Error Notifications

[](#error-notifications)

Once installed, the error channel works automatically -- there's no code to write. When an exception or message is logged at `error`, `critical`, `alert`, or `emergency` level, FinSentinel catches it, formats the stack trace and request context, scrubs sensitive data, and emails it to your configured recipients. Lower-severity log events (`debug`, `info`, `notice`, `warning`) are always ignored -- use the debug channel for ad-hoc inspection instead.

To get started, open the **Error Channel Settings** page in your admin panel and:

1. Toggle the channel on
2. Add one or more recipient email addresses
3. Save

That's it. Errors will start arriving in your inbox.

You can also configure:

- **Ignored exceptions** -- Common exceptions like `NotFoundHttpException` and `TokenMismatchException` are ignored by default. Add or remove classes from the settings page.
- **Throttle** -- Enable per-exception throttling to avoid duplicate emails within a configurable time window.

To customize the error email template, publish the views:

```
php artisan vendor:publish --tag=fin-sentinel-views
```

### Debug Channel

[](#debug-channel)

The debug channel gives you a quick way to email yourself any variable, model, or collection for inspection. It's like `dd()` but it lands in your inbox instead of killing the request. Every `FinSentinel::debug()` call also writes a `Log::debug()` entry, so you always have a log trail regardless of whether the email is enabled.

#### Using the Facade

[](#using-the-facade)

```
use FinityLabs\FinSentinel\Facades\FinSentinel;

// Quick one-liner -- sends to the configured recipients
FinSentinel::debug($user);

// With a custom subject
FinSentinel::debug($order, 'Order inspection');

// Fluent builder for full control
FinSentinel::debug($cart)
    ->subject('Cart contents')
    ->to('dev@example.com')
    ->send();
```

When you call `->send()`, the email goes out synchronously. If you don't call `->send()`, the builder queues the email automatically when it's garbage collected -- so you won't accidentally forget to send it.

#### Using the Event

[](#using-the-event)

If you prefer events (useful in queued jobs or when you don't want to import the Facade):

```
use FinityLabs\FinSentinel\Events\SentinelDebug;

SentinelDebug::dispatch($data, 'Optional subject');
```

The event listener always queues the email.

**Note:** The debug channel must be enabled in the admin settings before emails will be sent. The Facade and event both check the `debug_enabled` setting.

### Log Viewer

[](#log-viewer)

The log viewer lets you browse your Laravel log files from the admin panel. You'll find two pages under the Sentinel navigation group:

**Log File List** -- Shows all `.log` files in your `storage/logs` directory with file size and last modified date. From here you can:

- **View** -- Opens the log entry viewer with paginated entries
- **Download** -- Streams the file to your browser
- **Email** -- Sends the log file as an attachment to any address
- **Delete** -- Removes the file from disk (with confirmation)

**Log Entry Viewer** -- Displays individual log entries with:

- **Level filtering** -- Show only errors, warnings, or any combination of log levels
- **Text search** -- Filter entries by keyword
- **Stack trace modal** -- Click an entry to see the full stack trace with vendor frame detection
- **Copy buttons** -- Copy the message or full stack trace to your clipboard

The parser uses a two-pass approach (index first, then parse) so it can handle large log files without running out of memory.

### Settings

[](#settings)

FinSentinel has two settings pages, both accessible from the admin panel:

- **Error Channel Settings** -- Toggle the error channel on/off, manage recipients, configure ignored exceptions, and set throttle rules.
- **Debug Channel Settings** -- Toggle the debug channel, set recipients, and configure throttle behavior.

Configuration
-------------

[](#configuration)

Publish the config file:

```
php artisan vendor:publish --tag=fin-sentinel-config
```

The config file (`config/fin-sentinel.php`) contains:

**Email layout** -- Controls the max-width of error and debug notification emails. Stack traces and data tables benefit from extra space, so the default is wider than standard emails:

```
'email_max_width' => '90%',
```

The log file attachment email uses Laravel's default 600px width since it's a simple message.

**Sensitive data scrubbing** -- Values matching these keys are replaced with `[REDACTED]` in error and debug emails:

```
'scrub' => [
    'params'     => ['password', 'token', 'secret', '_token', 'credit_card', ...],
    'headers'    => ['authorization', 'cookie', 'x-api-key'],
    'env'        => ['DB_PASSWORD', 'APP_KEY', 'MAIL_PASSWORD', 'AWS_SECRET_ACCESS_KEY'],
    'trace_args' => ['password', 'secret', 'token'],
],
```

Each category targets a different data source. Keys are matched case-insensitively. Add your own keys to any category as needed.

Customization
-------------

[](#customization)

TagWhat it publishes`fin-sentinel-config`Configuration file`fin-sentinel-migrations`Settings migrations`fin-sentinel-views`Email templates (error and debug)`fin-sentinel-translations`Translation files```
php artisan vendor:publish --tag=fin-sentinel-views
php artisan vendor:publish --tag=fin-sentinel-translations
```

Filament Shield Integration
---------------------------

[](#filament-shield-integration)

FinSentinel pages use the `HasPageShieldSupport` trait, which integrates with [Filament Shield](https://github.com/bezhanSalleh/filament-shield) for page-level permissions. Shield is entirely optional -- without it, all pages are accessible to any authenticated user.

If you use Shield, generate the permissions:

```
php artisan shield:generate --panel=admin --option=policies_and_permissions
```

Uninstalling
------------

[](#uninstalling)

Run the uninstall command **before** removing the package:

```
php artisan fin-sentinel:uninstall
composer remove finity-labs/fin-sentinel
```

The uninstall command will:

- Remove `FinSentinelPlugin::make()` from your panel provider(s)
- Delete the published config file
- Optionally roll back settings migrations and clean up database entries

Use `--force` to skip confirmation prompts.

Testing
-------

[](#testing)

```
composer test
```

License
-------

[](#license)

MIT

Screenshots
-----------

[](#screenshots)

**🔍 Log Browser &amp; Viewer**
**Log Browser Dashboard**Browse, download, email, or delete system logs directly from the panel. [![log-files](https://private-user-images.githubusercontent.com/254747167/570749614-614c9038-7fab-484d-95b5-7cc1c749a456.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NzMyNzUsIm5iZiI6MTc3NDY3Mjk3NSwicGF0aCI6Ii8yNTQ3NDcxNjcvNTcwNzQ5NjE0LTYxNGM5MDM4LTdmYWItNDg0ZC05NWI1LTdjYzFjNzQ5YTQ1Ni5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyOFQwNDQyNTVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1iYzFkZjYzZTg4ZjRlNmFmNDM5ZjE3YmUxZjUyMWYyMzYzMzdiODNhOWYwNTgxOTkwYWQ2MzgwMzE0NGYyM2U4JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.tyQNJA2SilRe_v-PNsFsGE_bhDfxzRZMIu8j7wzGEhs)](https://private-user-images.githubusercontent.com/254747167/570749614-614c9038-7fab-484d-95b5-7cc1c749a456.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NzMyNzUsIm5iZiI6MTc3NDY3Mjk3NSwicGF0aCI6Ii8yNTQ3NDcxNjcvNTcwNzQ5NjE0LTYxNGM5MDM4LTdmYWItNDg0ZC05NWI1LTdjYzFjNzQ5YTQ1Ni5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyOFQwNDQyNTVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1iYzFkZjYzZTg4ZjRlNmFmNDM5ZjE3YmUxZjUyMWYyMzYzMzdiODNhOWYwNTgxOTkwYWQ2MzgwMzE0NGYyM2U4JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.tyQNJA2SilRe_v-PNsFsGE_bhDfxzRZMIu8j7wzGEhs)

**Detailed Log Viewer**Inspect individual log files and filter by log severity levels. [![view-log-file](https://private-user-images.githubusercontent.com/254747167/570749607-9390d89c-1a56-4437-9d14-e23f36ca7dd2.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NzMyNzUsIm5iZiI6MTc3NDY3Mjk3NSwicGF0aCI6Ii8yNTQ3NDcxNjcvNTcwNzQ5NjA3LTkzOTBkODljLTFhNTYtNDQzNy05ZDE0LWUyM2YzNmNhN2RkMi5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyOFQwNDQyNTVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1jNjZlMWM1YmIzODBmODU4Y2JjMjIwZDhlODI0YTViMmIzN2U3MDMwMzQ0ZTQyOTRlMGRmYmVhNTQ0YjE2Nzc1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.cW0CIMwpPRz5lO_qPBh_uaeRYskCpxK6toXt-XWNQXk)](https://private-user-images.githubusercontent.com/254747167/570749607-9390d89c-1a56-4437-9d14-e23f36ca7dd2.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NzMyNzUsIm5iZiI6MTc3NDY3Mjk3NSwicGF0aCI6Ii8yNTQ3NDcxNjcvNTcwNzQ5NjA3LTkzOTBkODljLTFhNTYtNDQzNy05ZDE0LWUyM2YzNmNhN2RkMi5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyOFQwNDQyNTVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1jNjZlMWM1YmIzODBmODU4Y2JjMjIwZDhlODI0YTViMmIzN2U3MDMwMzQ0ZTQyOTRlMGRmYmVhNTQ0YjE2Nzc1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.cW0CIMwpPRz5lO_qPBh_uaeRYskCpxK6toXt-XWNQXk)

**Email Log Files**Send specific `.log` files straight to your team. [![email-log-files](https://private-user-images.githubusercontent.com/254747167/570749612-63a221b3-5421-4f07-9617-a3f2032112ad.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NzMyNzUsIm5iZiI6MTc3NDY3Mjk3NSwicGF0aCI6Ii8yNTQ3NDcxNjcvNTcwNzQ5NjEyLTYzYTIyMWIzLTU0MjEtNGYwNy05NjE3LWEzZjIwMzIxMTJhZC5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyOFQwNDQyNTVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kNmQ2ZjY4ODllZTU5NzVmMDY4NmMwZTQ1MDc0NzdjNDUzMjg0MmYxNzUzNmRmOTU5MGMyMDRiZmVkYTAyZjQzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.Mk1uYZBSvsC4pwEAxgDCrYwQ3H6-qSiouCsKAd4NhaM)](https://private-user-images.githubusercontent.com/254747167/570749612-63a221b3-5421-4f07-9617-a3f2032112ad.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NzMyNzUsIm5iZiI6MTc3NDY3Mjk3NSwicGF0aCI6Ii8yNTQ3NDcxNjcvNTcwNzQ5NjEyLTYzYTIyMWIzLTU0MjEtNGYwNy05NjE3LWEzZjIwMzIxMTJhZC5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyOFQwNDQyNTVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kNmQ2ZjY4ODllZTU5NzVmMDY4NmMwZTQ1MDc0NzdjNDUzMjg0MmYxNzUzNmRmOTU5MGMyMDRiZmVkYTAyZjQzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.Mk1uYZBSvsC4pwEAxgDCrYwQ3H6-qSiouCsKAd4NhaM)

**⚙️ Channel Settings**
**Error Channel Settings**Configure recipients, set throttling rates, and ignore specific exceptions. [![error-channel-settings](https://private-user-images.githubusercontent.com/254747167/570749606-d5f79c74-6596-4707-abdf-99f1b3d390c4.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NzMyNzUsIm5iZiI6MTc3NDY3Mjk3NSwicGF0aCI6Ii8yNTQ3NDcxNjcvNTcwNzQ5NjA2LWQ1Zjc5Yzc0LTY1OTYtNDcwNy1hYmRmLTk5ZjFiM2QzOTBjNC5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyOFQwNDQyNTVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01ZTkyMTI1ODgyZmU0N2IzNWFiNGQyNDdlN2FiYjA1ZjdkNmYzNGYyMDkyNDA3YmI3ZDlmZTAxMTI2Y2NmNmE3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.4XiAORjE-w6Fkt7cdOSmhS27vtmRrw2b8FpwLCXeI24)](https://private-user-images.githubusercontent.com/254747167/570749606-d5f79c74-6596-4707-abdf-99f1b3d390c4.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NzMyNzUsIm5iZiI6MTc3NDY3Mjk3NSwicGF0aCI6Ii8yNTQ3NDcxNjcvNTcwNzQ5NjA2LWQ1Zjc5Yzc0LTY1OTYtNDcwNy1hYmRmLTk5ZjFiM2QzOTBjNC5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyOFQwNDQyNTVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01ZTkyMTI1ODgyZmU0N2IzNWFiNGQyNDdlN2FiYjA1ZjdkNmYzNGYyMDkyNDA3YmI3ZDlmZTAxMTI2Y2NmNmE3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.4XiAORjE-w6Fkt7cdOSmhS27vtmRrw2b8FpwLCXeI24)

**Debug Channel Settings**Manage your debug notifications with dedicated recipient lists. [![debug-channel-settings](https://private-user-images.githubusercontent.com/254747167/570749602-dede5577-a8cd-4162-a373-c264c6b28f60.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NzMyNzUsIm5iZiI6MTc3NDY3Mjk3NSwicGF0aCI6Ii8yNTQ3NDcxNjcvNTcwNzQ5NjAyLWRlZGU1NTc3LWE4Y2QtNDE2Mi1hMzczLWMyNjRjNmIyOGY2MC5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyOFQwNDQyNTVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yYmM2MGYzNDE1MGU5YTVkODMwMWMyNmJhMGFkZjI5MDA4ZTA3N2IwY2FiNjgwZTdmNTdmNDBjNzk3ZDA1YzJhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.D5kZ-2Dkh7UAKT0df8HTIuxLoHYnWh7g12OpXqSjRuA)](https://private-user-images.githubusercontent.com/254747167/570749602-dede5577-a8cd-4162-a373-c264c6b28f60.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NzMyNzUsIm5iZiI6MTc3NDY3Mjk3NSwicGF0aCI6Ii8yNTQ3NDcxNjcvNTcwNzQ5NjAyLWRlZGU1NTc3LWE4Y2QtNDE2Mi1hMzczLWMyNjRjNmIyOGY2MC5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyOFQwNDQyNTVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yYmM2MGYzNDE1MGU5YTVkODMwMWMyNmJhMGFkZjI5MDA4ZTA3N2IwY2FiNjgwZTdmNTdmNDBjNzk3ZDA1YzJhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.D5kZ-2Dkh7UAKT0df8HTIuxLoHYnWh7g12OpXqSjRuA)

**📧 Email Notifications**
**Exception Alerts**Get instantly notified with a clean stack trace when things break. [![exception-email-sample](https://private-user-images.githubusercontent.com/254747167/570749597-eb59ed99-90c2-42e3-a51d-3ed69b0ae698.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NzMyNzUsIm5iZiI6MTc3NDY3Mjk3NSwicGF0aCI6Ii8yNTQ3NDcxNjcvNTcwNzQ5NTk3LWViNTllZDk5LTkwYzItNDJlMy1hNTFkLTNlZDY5YjBhZTY5OC5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyOFQwNDQyNTVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04NjYyMGZlMmQ4ZThkMGUzY2NjMjAzYWYzMTZkNDY0ZjRiNjk3YjY0NTlkMTU3NmJlODg0N2YwNTk4N2M3YTBkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.NaQpxnqA0tWBg4Ddghe027gaJl4qQJKaMqPsNfsKLds)](https://private-user-images.githubusercontent.com/254747167/570749597-eb59ed99-90c2-42e3-a51d-3ed69b0ae698.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NzMyNzUsIm5iZiI6MTc3NDY3Mjk3NSwicGF0aCI6Ii8yNTQ3NDcxNjcvNTcwNzQ5NTk3LWViNTllZDk5LTkwYzItNDJlMy1hNTFkLTNlZDY5YjBhZTY5OC5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyOFQwNDQyNTVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04NjYyMGZlMmQ4ZThkMGUzY2NjMjAzYWYzMTZkNDY0ZjRiNjk3YjY0NTlkMTU3NmJlODg0N2YwNTk4N2M3YTBkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.NaQpxnqA0tWBg4Ddghe027gaJl4qQJKaMqPsNfsKLds)

**One-Liner Debug Emails**Trigger formatted debug emails containing environment details and custom payloads. [![debug-email-sample](https://private-user-images.githubusercontent.com/254747167/570749600-ca845a13-3f1a-4be1-9b69-cab9e50639f3.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NzMyNzUsIm5iZiI6MTc3NDY3Mjk3NSwicGF0aCI6Ii8yNTQ3NDcxNjcvNTcwNzQ5NjAwLWNhODQ1YTEzLTNmMWEtNGJlMS05YjY5LWNhYjllNTA2MzlmMy5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyOFQwNDQyNTVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1mNDFjMmJjZTRiNWZiM2VkYTIxMmYyZWJhYmQ3NTA2ZjljYTM2MDhhZTUwOGZlZTE3Y2UzNWQwMjExM2YxMWNjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.3tMEckJt4wlz8pevjzcZznCpq04ZD0VD0UNpuiO32Dg)](https://private-user-images.githubusercontent.com/254747167/570749600-ca845a13-3f1a-4be1-9b69-cab9e50639f3.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NzMyNzUsIm5iZiI6MTc3NDY3Mjk3NSwicGF0aCI6Ii8yNTQ3NDcxNjcvNTcwNzQ5NjAwLWNhODQ1YTEzLTNmMWEtNGJlMS05YjY5LWNhYjllNTA2MzlmMy5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI4JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyOFQwNDQyNTVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1mNDFjMmJjZTRiNWZiM2VkYTIxMmYyZWJhYmQ3NTA2ZjljYTM2MDhhZTUwOGZlZTE3Y2UzNWQwMjExM2YxMWNjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.3tMEckJt4wlz8pevjzcZznCpq04ZD0VD0UNpuiO32Dg)

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance90

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

46d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/7106a5652821f312e3e0f1541d41defe67b73cf5b5f5cb6641f10c7412475eed?d=identicon)[Finity Labs](/maintainers/Finity%20Labs)

---

Top Contributors

[![finity-labs](https://avatars.githubusercontent.com/u/254747167?v=4)](https://github.com/finity-labs "finity-labs (58 commits)")

---

Tags

debugemail-notificationserror-monitoringexception-trackingfilamentfilament-pluginlaravellog-viewerphplaraveldebugexceptionserror-monitoringfilament

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/finity-labs-fin-sentinel/health.svg)

```
[![Health](https://phpackages.com/badges/finity-labs-fin-sentinel/health.svg)](https://phpackages.com/packages/finity-labs-fin-sentinel)
```

###  Alternatives

[bezhansalleh/filament-shield

Filament support for `spatie/laravel-permission`.

2.8k2.9M88](/packages/bezhansalleh-filament-shield)[pboivin/filament-peek

Full-screen page preview modal for Filament

253319.6k12](/packages/pboivin-filament-peek)[croustibat/filament-jobs-monitor

Background Jobs monitoring like Horizon for all drivers for FilamentPHP

254255.2k6](/packages/croustibat-filament-jobs-monitor)[stephenjude/filament-debugger

About

102125.4k2](/packages/stephenjude-filament-debugger)[dotswan/filament-map-picker

Easily pick and retrieve geo-coordinates using a map-based interface in your Filament applications.

124139.3k2](/packages/dotswan-filament-map-picker)[stephenjude/filament-jetstream

A Laravel starter kit built with Filament inspired by Jetstream.

17554.3k2](/packages/stephenjude-filament-jetstream)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
