PHPackages                             sahlowle/larawatch - 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. sahlowle/larawatch

ActiveLibrary

sahlowle/larawatch
==================

A Laravel application monitoring package — requests, exceptions, jobs, health checks, cache, mail, and scheduled tasks.

1.0.0(2w ago)026↓100%MITBladePHP ^8.2

Since Mar 2Pushed 2w agoCompare

[ Source](https://github.com/sahlowle/larawatch)[ Packagist](https://packagist.org/packages/sahlowle/larawatch)[ Docs](https://github.com/sahlowle/larawatch)[ RSS](/packages/sahlowle-larawatch/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (7)Versions (2)Used By (0)

Larawatch
=========

[](#larawatch)

[![Latest Version on Packagist](https://camo.githubusercontent.com/7748b9a5130fd3fcc69527443fc417446dd90fe93475f5437e090b28cfa6c078/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f7361686c6f776c652f6c61726177617463682e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/sahlowle/larawatch)[![PHP](https://camo.githubusercontent.com/6caa15003495643be73f70c6033009042189b7d38acf492a3d5fd04ffbb45059/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322532422d3737374242343f7374796c653d666c61742d737175617265266c6f676f3d706870266c6f676f436f6c6f723d7768697465)](https://php.net)[![Laravel](https://camo.githubusercontent.com/a36a0b006c321399c13291cd56c79eea9e50206df44b11067bc9beb368698838/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d31312e7825323025324625323031322e782d4646324432303f7374796c653d666c61742d737175617265266c6f676f3d6c61726176656c266c6f676f436f6c6f723d7768697465)](https://laravel.com)[![Livewire](https://camo.githubusercontent.com/9555e93b1d934e844bcf9abc2da38072928b37c8e71036ca7a0f43b549879038/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c697665776972652d342e782d4642373041393f7374796c653d666c61742d737175617265266c6f676f3d6c69766577697265266c6f676f436f6c6f723d7768697465)](https://livewire.laravel.com)[![License](https://camo.githubusercontent.com/b94071315fde4f268e828c9d135c5b0bc0867b4d0746659f8e43b86af757a0e0/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f7361686c6f776c652f6c61726177617463682e7376673f7374796c653d666c61742d737175617265)](LICENSE.md)

### A beautiful, self-hosted Laravel application monitoring dashboard

[](#a-beautiful-self-hosted-laravel-application-monitoring-dashboard)

Track HTTP requests, exceptions, queue jobs, health checks, cache stats, mail, and scheduled tasks — **all without any external service.**

---

✨ Features
----------

[](#-features)

ModuleWhat it tracks🌐 **Requests**Every HTTP request — method, path, status, duration, IP💥 **Exceptions**PHP exceptions grouped by hash, with full stack traces⚙️ **Queue Jobs**Job processing, completion, and failures❤️ **Health Checks**Database, Redis, Queue, Storage, Mail, Scheduler🗄️ **Cache**Hit rate, memory usage, key count (Redis)📧 **Mail**Sent and failed emails with recipients and size🕐 **Scheduled Tasks**Task start, finish, skip, and failure events---

📋 Requirements
--------------

[](#-requirements)

- PHP **8.2+**
- Laravel **11.x / 12.x**
- [Livewire](https://livewire.laravel.com/) **4.x**

---

🚀 Installation
--------------

[](#-installation)

### 1. Install via Composer

[](#1-install-via-composer)

```
composer require sahlowle/larawatch
```

### 2. Publish the config file

[](#2-publish-the-config-file)

```
php artisan vendor:publish --tag="larawatch-config"
```

### 3. Run the migrations

[](#3-run-the-migrations)

```
php artisan migrate
```

### 4. Record exceptions

[](#4-record-exceptions)

Add the following to your `bootstrap/app.php`:

```
->withExceptions(function (Exceptions $exceptions): void {
    $exceptions->reportable(function (\Throwable $e) {
        if (config('larawatch.enabled') && config('larawatch.features.exceptions', true)) {
            try {
                app(\Sahlowle\Larawatch\Services\ExceptionMonitorService::class)->record($e);
            } catch (\Throwable $ignored) {
                // Never let monitoring break the app
            }
        }
    });
})
```

> ✅ That's it! Visit `/monitor` to see your dashboard.

---

⚙️ Configuration
----------------

[](#️-configuration)

After publishing, edit `config/larawatch.php`:

```
return [
    // Enable/disable the entire monitor
    'enabled' => env('MONITOR_ENABLED', true),

    // Dashboard theme: "dark" or "light"
    'theme' => env('MONITOR_THEME', 'light'),

    // URL prefix for the dashboard (default: /monitor)
    'path' => env('MONITOR_PATH', 'monitor'),

    // Restrict access by email or role
    'allowed_emails' => ['admin@example.com'],
    'allowed_roles'  => ['admin'],

    // Toggle individual modules
    'features' => [
        'requests'        => true,
        'exceptions'      => true,
        'jobs'            => true,
        'health'          => true,
        'cache'           => true,
        'mail'            => true,
        'scheduled_tasks' => true,
    ],

    // How long to keep data
    'data_retention' => [
        'requests'        => ['keep_hours' => 1],
        'exceptions'      => ['keep_days'  => 30],
        'jobs'            => ['keep_days'  => 7],
        'health_checks'   => ['keep_days'  => 7],
        'cache_stats'     => ['keep_days'  => 7],
        'mails'           => ['keep_days'  => 30],
        'scheduled_tasks' => ['keep_days'  => 14],
    ],
];
```

### Environment Variables

[](#environment-variables)

VariableDefaultDescription`MONITOR_ENABLED``true`Enable or disable the entire package`MONITOR_THEME``light`Dashboard theme (`dark` / `light`)`MONITOR_PATH``monitor`URL prefix for the dashboard`MONITOR_DB_CONNECTION``null`Separate DB connection for monitor tables`MONITOR_TABLE_PREFIX``monitor_`Prefix for all monitor database tables---

🔐 Authorization
---------------

[](#-authorization)

In **local** environments, all authenticated users can access the dashboard.

In other environments, access is controlled by `allowed_emails` and `allowed_roles` in the config. You can also override the `viewMonitor` gate entirely in your `AppServiceProvider`:

```
Gate::define('viewMonitor', function ($user) {
    return $user->is_admin;
});
```

---

🗑️ Pruning Old Data
-------------------

[](#️-pruning-old-data)

The package provides the `larawatch:prune` command to clean up old records. Add it to your `routes/console.php` scheduler:

```
// Prune all types according to their configured retention
Schedule::command('larawatch:prune --force')->daily();

// Or prune a specific type
Schedule::command('larawatch:prune --type=requests --force')->hourly();
```

**Available types:** `requests`, `exceptions`, `jobs`, `health_checks`, `cache_stats`, `mails`, `scheduled_tasks`

---

🗺️ Dashboard Routes
-------------------

[](#️-dashboard-routes)

URLDescription`/monitor`Main dashboard`/monitor/requests`HTTP request log`/monitor/exceptions`Exception tracker`/monitor/jobs`Queue job history`/monitor/health`Health checks`/monitor/cache`Cache &amp; memory stats`/monitor/mail`Mail monitor`/monitor/scheduled-tasks`Scheduled task history`/monitor/api/chart-data`JSON chart data endpoint---

📦 Publishing Assets
-------------------

[](#-publishing-assets)

```
# Config only
php artisan vendor:publish --tag="larawatch-config"

# Migrations only
php artisan vendor:publish --tag="larawatch-migrations"

# Views (to customize the dashboard UI)
php artisan vendor:publish --tag="larawatch-views"
```

---

🛠️ Local Development
--------------------

[](#️-local-development)

If you are working on this package inside a host Laravel app using a path repository:

```
// root composer.json
"repositories": [
    { "type": "path", "url": "./packages/sahlowle/larawatch" }
],
"require": {
    "sahlowle/larawatch": "*"
},
"minimum-stability": "dev",
"prefer-stable": true
```

Then run:

```
composer update sahlowle/larawatch
```

Screenshot
==========

[](#screenshot)

[![Larawatch Dashboard](screenshot.png)](screenshot.png)

---

📄 License
---------

[](#-license)

The MIT License (MIT). See [LICENSE](LICENSE.md) for details.

###  Health Score

42

—

FairBetter than 90% of packages

Maintenance96

Actively maintained with recent releases

Popularity10

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

20d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/f883a306d3c9581df4c1dd02d95a9cf2003eaa7c22613ed2d3e712943f5202f9?d=identicon)[sahlowle](/maintainers/sahlowle)

---

Top Contributors

[![sahlowle](https://avatars.githubusercontent.com/u/35406282?v=4)](https://github.com/sahlowle "sahlowle (3 commits)")

---

Tags

laravelhealthMetricsmonitortelescopelarawatch

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/sahlowle-larawatch/health.svg)

```
[![Health](https://phpackages.com/badges/sahlowle-larawatch/health.svg)](https://phpackages.com/packages/sahlowle-larawatch)
```

###  Alternatives

[pragmarx/health

Laravel Server &amp; App Health Monitor and Notifier

2.0k1.0M2](/packages/pragmarx-health)[sarfraznawaz2005/meter

laravel package to find performance bottlenecks in your laravel application.

2498.1k](/packages/sarfraznawaz2005-meter)[sarfraznawaz2005/servermonitor

Laravel package to periodically monitor the health of your server and website.

19513.0k1](/packages/sarfraznawaz2005-servermonitor)[encodia/laravel-health-env-vars

Custom check for Spatie's Laravel Health - Ensure every .env variable you need has been set

20135.6k](/packages/encodia-laravel-health-env-vars)

PHPackages © 2026

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