PHPackages                             iperamuna/laravel-caddy-metrics - 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. [Logging &amp; Monitoring](/categories/logging)
4. /
5. iperamuna/laravel-caddy-metrics

ActiveLibrary[Logging &amp; Monitoring](/categories/logging)

iperamuna/laravel-caddy-metrics
===============================

A Laravel package for visualizing Caddy server metrics with a beautiful dashboard

v1.1.0(6mo ago)0100MITPHPPHP ^8.1

Since Jan 31Pushed 6mo agoCompare

[ Source](https://github.com/iperamuna/laravel-caddy-metrics)[ Packagist](https://packagist.org/packages/iperamuna/laravel-caddy-metrics)[ Docs](https://github.com/iperamuna/laravel-caddy-metrics)[ RSS](/packages/iperamuna-laravel-caddy-metrics/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (2)Dependencies (5)Versions (3)Used By (0)

Laravel Caddy Metrics
=====================

[](#laravel-caddy-metrics)

[![Latest Version on Packagist](https://camo.githubusercontent.com/c3610ffd2a567fca30701cd54ae4d98e1cb5cd6fbeb8b4ecde0a956239cb7dbf/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f69706572616d756e612f6c61726176656c2d63616464792d6d6574726963732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/iperamuna/laravel-caddy-metrics)[![Total Downloads](https://camo.githubusercontent.com/9de6d0d77a2f21de86f36484525b1b554a112fb59798d1909cdfce9a3eaa7c1f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f69706572616d756e612f6c61726176656c2d63616464792d6d6574726963732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/iperamuna/laravel-caddy-metrics)

A beautiful, real-time metrics dashboard for Caddy server in your Laravel application. Monitor performance, visualize traffic, and optimize your FrankenPHP thread configuration with an interactive simulator.

Features
--------

[](#features)

- 📊 **Real-time Metrics** - Live updating charts with 5-second polling (Chart.js)
- 🧠 **Thread Optimization Advisor** - Smart analysis of your Go goroutines and memory usage
- 🎚️ **Interactive Simulator** - Test different safety margins to find your ideal `num_threads` setting
- 🎨 **Premium UI** - Modern, status-reactive dashboard with distinct "System Optimal", "Can Scale", and "Caution" states
- 📈 **Core Metrics** - Request counts, response sizes, goroutines, memory, and total responses
- 🔧 **Easy Installation** - Interactive CLI installer for systemd (Linux) and launchd (macOS)
- 🗑️ **Data Management** - Built-in commands for pruning data and clearing the entire metrics history
- 🧪 **Full Test Suite** - Comprehensive Pest tests for advisor logic and data generation

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

[](#requirements)

- PHP 8.1+
- Laravel 10, 11, or 12
- Livewire 3.x
- Caddy server with metrics enabled (`servers { metrics }` in Caddyfile)
- SQLite support

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

[](#installation)

### 1. Install the package

[](#1-install-the-package)

```
composer require iperamuna/laravel-caddy-metrics
```

### 2. Publish configurations and assets

[](#2-publish-configurations-and-assets)

```
# Configuration
php artisan vendor:publish --tag=caddy-metrics-config

# Collector Binary
php artisan vendor:publish --tag=caddy-metrics-binary

# Dashboard Views (Optional for customization)
php artisan vendor:publish --tag=caddy-metrics-views
```

### 3. Install the collector service

[](#3-install-the-collector-service)

The installer handles everything for you:

- Installs the Go collector binary
- Creates the systemd (Linux) or launchd (macOS) service
- Publishes the `CaddyMetricsServiceProvider` for access control
- Registers the provider in `bootstrap/providers.php`

```
# Linux (requires sudo)
sudo php artisan caddy-metrics:install

# macOS
php artisan caddy-metrics:install
```

### 3a. Configure Remote Servers

[](#3a-configure-remote-servers)

On remote servers where you cannot run the full installer or need to manage settings via environment variables, use the configuration command:

```
php artisan caddy-metrics:configure
```

This interactive command will help you set up your `.env` file with the correct ports, URLs, and paths for Caddy metrics. You can run it with `--no-interaction` in deployment scripts as long as your environment variables are already set.

### 4. Dashboard Authorization

[](#4-dashboard-authorization)

To control who can access the Caddy Metrics dashboard in production, you must configure the `viewCaddyMetrics` gate in your `app/Providers/CaddyMetricsServiceProvider.php` file (created during installation).

```
/**
 * Register the Caddy Metrics gate.
 *
 * This gate determines who can access Caddy Metrics in non-local environments.
 *
 * @return void
 */
protected function gate()
{
    Gate::define('viewCaddyMetrics', function ($user) {
        return in_array($user->email, [
            'taylor@laravel.com',
        ]);
    });
}
```

By default, the dashboard is only accessible in the `local` environment.

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

[](#configuration)

Edit `config/caddy-metrics.php` to match your environment:

```
return [
    'enabled' => env('CADDY_METRICS_ENABLED', true),
    'dashboard_url' => env('CADDY_METRICS_DASHBOARD_URL', '/caddy/metrics'),
    'frankenphp_threads' => env('FRANKENPHP_THREADS', 12),
    'caddyfile_path' => env('CADDYFILE_PATH', '/etc/frankenphp/Caddyfile'),
    'retention_days' => env('CADDY_METRICS_RETENTION_DAYS', 7),
];
```

Thread Optimization Advisor
---------------------------

[](#thread-optimization-advisor)

The dashboard includes a dedicated **Thread Advisor** that analyzes your server's average and peak loads.

- **Interactive Simulation**: Adjust the **Safety Margin Slider** to see exactly how many threads you should allocate to maintain your desired headroom.
- **Can Scale Branding**: Identifies when your server has "headroom" to scale up for better performance.
- **Caddyfile Recommendations**: provides copy-and-paste snippets for your `Caddyfile` based on simulation results.

Commands
--------

[](#commands)

CommandDescription`caddy-metrics:install`Interactive installer for the collector service`caddy-metrics:configure`Helper for configuring `.env` variables on remote servers`caddy-metrics:maintain`Manage service (start/stop/restart/status/enable/disable)`caddy-metrics:generate`Generate scenario-based dummy data (Optimal, High Load, Spikes, etc.)`caddy-metrics:clear`Wipe all metrics data from the database (includes `--force`)### Service Management Examples

[](#service-management-examples)

```
# Check if the collector is running
sudo php artisan caddy-metrics:maintain status

# Restart the service after config changes
sudo php artisan caddy-metrics:maintain restart

# Stop the collector
sudo php artisan caddy-metrics:maintain stop
```

Testing
-------

[](#testing)

The package includes a robust test suite using Pest.

```
cd packages/iperamuna/laravel-caddy-metrics
composer install
vendor/bin/pest
```

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

Author
------

[](#author)

**Indunil Peramuna**

- Website: [iperamuna.online](https://iperamuna.online)
- GitHub: [@iperamuna](https://github.com/iperamuna)
- Email:

###  Health Score

34

—

LowBetter than 74% of packages

Maintenance67

Regular maintenance activity

Popularity9

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity45

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

Every ~1 days

Total

2

Last Release

191d ago

### Community

Maintainers

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

---

Top Contributors

[![iperamuna](https://avatars.githubusercontent.com/u/3013395?v=4)](https://github.com/iperamuna "iperamuna (14 commits)")

---

Tags

laravelmonitoringMetricsdashboardprometheuscaddy

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/iperamuna-laravel-caddy-metrics/health.svg)

```
[![Health](https://phpackages.com/badges/iperamuna-laravel-caddy-metrics/health.svg)](https://phpackages.com/packages/iperamuna-laravel-caddy-metrics)
```

###  Alternatives

[laravel/ai

The official AI SDK for Laravel.

1.1k4.6M295](/packages/laravel-ai)[livewire/flux

The official UI component library for Livewire.

9628.9M150](/packages/livewire-flux)[tallstackui/tallstackui

TallStackUI is a powerful suite of Blade components that elevate your workflow of Livewire applications.

731189.9k16](/packages/tallstackui-tallstackui)[anousss007/vigilance

A driver-agnostic control center for Laravel queues, jobs, commands and the scheduler. Monitor what ran (with parameters), see failures, and dispatch jobs or run artisan commands manually from a self-contained dashboard.

1906.8k](/packages/anousss007-vigilance)[iamfarhad/laravel-prometheus

Production-ready Laravel Prometheus metrics package with built-in collectors for HTTP, database, cache, queue, events, errors, filesystem, and mail monitoring

112.2k](/packages/iamfarhad-laravel-prometheus)[tomshaw/electricgrid

A feature-rich Livewire package designed for projects that require dynamic, interactive data tables.

119.8k](/packages/tomshaw-electricgrid)

PHPackages © 2026

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