blkdem/filament-queue-monitor
A Filament plugin for monitoring Laravel queues from your admin panel. View pending, running, completed, and failed jobs, inspect job details and exceptions, retry or delete failed jobs, and keep an eye on queue health without leaving Filament.
Architecture fit. This package is a read/act layer over Laravel's native failed_jobs table — a lightweight triage console for failed queue jobs rather than a queue backend or Horizon replacement. It fits the framework's existing failure model (the database / database-uuids failer) and implies no new infrastructure. Best leverage is for teams on database-backed queues, or teams wanting a simple triage surface without standing up Redis + Horizon.
Integration feasibility. Appears to be a standard Composer install with a publishable config (the list_limit setting is referenced) and no schema changes implied — it consumes Laravel's own failed_jobs migration. The v0.1.1 fixes are reassuring on fit: the package already branches correctly between numeric-id and UUID failers, and already pushes list_limit into SQL. Those are exactly the integration details that usually break, and they are now handled across Laravel 10/11/12.
Technical risk. Pre-1.0 (v0.1.1), so config/route/API surface may shift on minor bumps. The fixed Laravel 12 bug was a correctness failure with silent consequences — page 404s and retry/delete actions that did nothing — which suggests the cross-version test matrix was thin before this patch. Blast radius is bounded: this is an internal ops UI, not a production request path. The exception is authorization — retry and delete mutate job state, and job payloads frequently contain PII or secrets, so an access-control gap would be high severity, not low.
Key questions for engineering.
queue:retry / queue:forget, or write to the table directly? (Affects connection/queue routing and event firing.)failed_jobs tables?list_limit, or is the list a hard cap?null, dynamodb) — graceful degradation or fatal?failed_jobs schema, or does it assume Laravel's default columns?Stack fit. Laravel 10–12 confirmed by the patch. Assumes the database-backed failer. Fits teams without Horizon, or as a lightweight supplement alongside it.
Migration path. Greenfield — no predecessor to migrate from, no data migration. Install into a branch and a non-production environment first.
Compatibility. Verify the app's config/queue.php failed driver (database vs database-uuids) — v0.1.1 explicitly covers both. Confirm list_limit is honored in SQL on the target DB engine (standard LIMIT behavior; low risk across MySQL/Postgres/SQLite). Confirm the stock failed_jobs migration is present and unmodified.
Sequencing.
0.1.1; publish config; set list_limit to a defensible value.failed_jobs volume; test both failer configurations if they differ per environment.Maintenance. Pre-1.0, so pin to an exact version and review release notes before bumping. The cadence of fixes indicates active maintenance but also a short track record; assume occasional config or route changes on minor releases.
Support. Likely single-maintainer or community-supported with no SLA. Budget for reading the source, and keep php artisan queue:failed / queue:retry as the documented fallback so the team is never blocked by the UI.
Scaling. The list_limit-in-SQL fix is the operationally significant one: before it, every page load read the entire failed_jobs table on Laravel 10/11, so the console degraded precisely when it mattered most — during an incident, when the table is largest. Post-fix the list is bounded; retry/delete remain per-record. Watch bulk retry patterns and concurrent operator access, and note that the 404/action-no-op behavior was a silent failure mode — worth an explicit post-upgrade smoke test after any Laravel upgrade.
Failure modes.
failed_jobs is customized.Ramp-up. Minutes for a Laravel developer; a short walkthrough on failer types and retry-vs-forget semantics for everyone else. From a TPM standpoint this is low-effort, low-blast-radius tooling with one hard gate: complete an authorization review before it becomes reachable beyond the owning team, and treat 0.1.x as pin-and-watch rather than auto-update.
How can I help you explore Laravel packages today?