Fuse Dashboard plugin screenshot
Dark mode ready
Multilingual support
Supports v5.x

Fuse Dashboard

Community

Filament panel plugin for harris21/laravel-fuse — a live circuit-breaker dashboard in the panel you already have.

Tags: Developer Tool Widget
Supported versions:
5.x
Konspyracy Labs avatar Author: Konspyracy Labs

Package health

Beta

Automated checks of this plugin's Composer package

82 / 100
Security 68
Maintenance 100
Ecosystem 100
15 checks
  • Failed: GitHub Actions pinned to SHA — View details on Plumb
  • Skipped: GitLab CI includes pinned to SHA
  • Passed: Open security advisories
  • Passed: Dependabot PR responsiveness — No open Dependabot PRs.
  • Skipped: Renovate MR responsiveness
  • Passed: Dependabot or Renovate configured
  • Failed: Dependency update cooldown configured — No cooldown configured in .github/dependabot.yml. View details on Plumb
  • Passed: Provides a security policy
  • Passed: Abandoned or archived — No consulted source marks the package abandoned (packagist, github).
  • Passed: Commit and release recency — Active: last commit 3 days ago; last release 3 days ago.
  • Passed: composer.lock not committed by library — composer.lock is absent from the released dist archive.
  • Passed: Dist archive is lean
  • Passed: Current Laravel version supported — Package dependencies resolve together with current Laravel 13.0.
  • Passed: Current PHP version supported — Constraint ^8.3 supports current PHP 8.5.
  • Skipped: Current Symfony version supported
Third-party plugin. This is built by the community, not the Filament team. Filament does not review, endorse, or vet the security of plugins outside the filament/ namespace. Review the source and install at your own risk. Found malware or an unresolved security issue the author won't address? Report it .
Powered by Plumb Last scanned 13 hours ago

Documentation

A live circuit-breaker dashboard for your Filament panel, on top of harris21/laravel-fuse.

The dashboard with one circuit breaker open

#What it does

  • Dashboard — a tile for your circuit that turns red the moment it opens, refreshed every few seconds.
  • Circuit page — live state, how long it has been that way, when the next probe is due, and the four counters behind it: attempts, failures, failure rate, minimum requests.
  • Topbar indicator and navigation badge — the open count, on every page of the panel.
  • Drills — open a circuit on purpose to see the dashboard respond before you need it to.
  • One permission, viewFilamentFuse, for panels that already have roles.
  • No database. Everything is read from Fuse's own cache: no migrations, no models.

It monitors one circuit. A Pro edition that monitors all of them and keeps their history is on the way.

#Requirements

PHP 8.3+ · Laravel 11, 12 or 13 · Filament 5 · harris21/laravel-fuse ^0.10

Fuse keeps circuit state in the cache, so CACHE_STORE must be one your web requests, CLI and queue workers share — not array.

#Install

composer require konspyracylabs/filament-fuse

# only if Fuse is not set up yet — this creates config/fuse.php
php artisan vendor:publish --tag=fuse-config

Declare at least one circuit in config/fuse.php (an empty array uses Fuse's defaults):

'services' => [
    'stripe' => [],
],

Run the installer. It publishes config/filament-fuse.php, asks which circuit to monitor and offers to write that to your .env:

php artisan filament-fuse:install

Register the plugin and publish its stylesheet:

use KonspyracyLabs\FilamentFuse\FilamentFusePlugin;

$panel->plugin(FilamentFusePlugin::make());
php artisan filament:assets

Fuse Monitor is now in your panel's navigation, under Monitoring.

#Minimum configuration

Nothing is required. These are the settings most installs touch:

FILAMENT_FUSE_CIRCUIT=stripe          # the one circuit to monitor; blank = the first one declared
FILAMENT_FUSE_TESTING_CIRCUIT=true    # registers the package's own circuit, for drills
Env Default
FILAMENT_FUSE_ENABLED true Master switch. Off shows nothing to anyone.
FILAMENT_FUSE_CIRCUIT (blank) The circuit to monitor. Must be declared in config/fuse.php.
FILAMENT_FUSE_POLL 5 Seconds between refreshes. 0 stops polling.
FILAMENT_FUSE_TIMEZONE (blank) Falls back to Filament's, then the app's, then UTC.
FILAMENT_FUSE_ENFORCE_PERMISSIONS false See Permissions.
FILAMENT_FUSE_TESTING_CIRCUIT false Enables drills.
FILAMENT_FUSE_TESTING_CIRCUIT_NAME testing-circuit-breaker Must not be the name of a real circuit.
FILAMENT_FUSE_TESTING_CIRCUIT_DURATION 300 Seconds a drill holds the circuit open.
FILAMENT_FUSE_TESTING_CIRCUIT_SCHEDULE false Close finished drills from the scheduler.
FILAMENT_FUSE_TESTING_CIRCUIT_PRODUCTION false Allow a drill to start in production.

The slug, navigation group, icons, indicator and badge are in config/filament-fuse.php, each with a comment, and can be set per panel on the plugin:

FilamentFusePlugin::make()->slug('circuits')->navigationGroup('Ops')->poll(10);

#Commands

Command
php artisan filament-fuse:install Publish the config and choose the circuit to monitor.
php artisan filament-fuse:drill Open the package's testing circuit for the configured duration.
php artisan filament-fuse:drill --for=60 …or for this many seconds.
php artisan filament-fuse:drill --stop Close it now.
php artisan filament-fuse:drill --tick Close it if its time is up. What the scheduler runs.

A drill only ever opens the package's own testing circuit, which carries no traffic. It is refused in production unless FILAMENT_FUSE_TESTING_CIRCUIT_PRODUCTION=true, and refused outright if the testing circuit's name belongs to a circuit you declared yourself.

Fuse's own commands are not guarded by anybody. php artisan fuse:open {service} on a real circuit is an outage you caused: that service's jobs stop going out until it closes. fuse:close {service} closes one circuit; fuse:reset closes all of them and clears their counters, which hides an outage rather than ending it. Keep them to local and staging.

#Permissions

By default any signed-in user of the panel can see the dashboard — your circuit's name, its thresholds, and how many other circuits you have declared. Guests never can. On a panel your customers log into, hand the decision to your Gate:

FILAMENT_FUSE_ENFORCE_PERMISSIONS=true
Gate::define('viewFilamentFuse', fn (User $user): bool => $user->isAdmin());

With spatie/laravel-permission, create a permission named viewFilamentFuse and grant it to a role. To decide per panel instead, pass a callback; $user may be null:

FilamentFusePlugin::make()->authorize(fn (?User $user): bool => $user?->hasRole('sre') ?? false);

#Troubleshooting

  • Nothing in the navigation, or a 403. FILAMENT_FUSE_ENFORCE_PERMISSIONS=true with nobody granted viewFilamentFuse, or FILAMENT_FUSE_ENABLED=false.
  • "No circuits are being monitored." config/fuse.php declares no services. Publish it with --tag=fuse-config and add one.
  • The wrong circuit is shown. FILAMENT_FUSE_CIRCUIT names a circuit that is not declared, so the first declared one is used; the dashboard's subheading says so.
  • A change to .env does nothing. Your config is cached. Run php artisan config:cache again, or config:clear.
  • The tile never turns red. Fuse protects queued jobs that carry its middleware; a job run synchronously never trips a circuit. Or the cache store is array, or not the same one your workers use.
  • "State unreadable." The cache store could not be reached. The tile says so rather than guessing.
  • The dashboard is unstyled. Run php artisan filament:assets.
  • A drill refuses to start. The testing circuit is off, you are in production, or its name is also a circuit in config/fuse.php. The command says which.
  • A drill is still open. php artisan filament-fuse:drill --stop. If you renamed the testing circuit while it ran, php artisan fuse:close {old name}.
  • Customised views stopped updating. Published views win over the package's. Do not publish filament-fuse-views unless you mean to own those files.

#Screenshots

Closed, the circuit page, a drill, dark mode

Every circuit breaker closed

The page of an open circuit

The page of a closed circuit

A drill holding the testing circuit open

The dashboard in dark mode

#Pro edition

Coming soon. This package watches one circuit and keeps no history; the Pro edition will monitor every circuit in config/fuse.php, record each outage and recovery attempt, and add an incident history and per-circuit email notifications. It is not available yet — watch this repository for the announcement.

#License

MIT. See LICENSE.md.

The author

Konspyracy Labs avatar Author: Konspyracy Labs

Freelancer Developer Team - Focusing on Filament Solutions

Plugins
1