kaiserkiwi/nova-queue-management
A Laravel Nova tool for managing queues directly from your admin panel. Browse pending, running, and failed jobs, retry or delete failed entries, and keep an eye on queue health without leaving Nova. Requires Laravel Nova and a supported queue driver.
What the package actually is. A Laravel Nova tool (not a driver, scheduler, or monitoring platform) that renders queue state — pending, running, failed — and exposes operator actions (retry, delete, flush) inside the Nova admin panel. It reads and writes Laravel's own queue tables (jobs, job_batches, failed_jobs). Everything downstream of this sentence is contingent on one fact: the organization must already be licensed for Laravel Nova. If it is not, the package is not adoptable at any price and this evaluation terminates here.
Architecture fit. Clean where it fits at all. A Nova tool is a self-contained, panel-registered class, so integration is additive and touches nothing in the application domain — no service provider surgery, no schema changes, no event hooks. It inherits whatever driver topology is configured (database, Redis, SQS) and is orthogonal to Horizon: overlapping for Redis teams who already have a first-party UI, genuinely complementary for database/SQS teams who otherwise triage via SSH and artisan queue:failed. Its provenance matters architecturally as much as commercially: it is a maintained fork of an abandoned package (den1n), which reframes the decision from "adopt a new dependency" to "continue a capability we may already implicitly rely on."
Integration feasibility. High and cheap to reverse — a Composer line plus one NovaServiceProvider::tools() registration. No migrations, no config publishing required for the zero-config path. The real engineering cost is not installation (a half-day) but the authorization gate and blast radius, which the package does not solve for you. Feasibility is therefore technically trivial and governance-wise non-trivial.
Technical risk, ranked.
laravel/nova ceiling to admit v5 via an outside contributor's PR. That proves permission, not that the tool boots under Nova 5's tool-registration and asset pipeline. There is no CI evidence in the release material.failed_jobs. Timeouts and lock contention are plausible precisely during an incident, when the table is largest — the exact moment the tool is needed.NOASSERTION — GitHub could not classify it. For a package on a privileged, production-adjacent surface inside a commercial Nova installation, this is a procurement gate the TPM owns the timing of. Clear it before engineering time is spent.Key questions to put to engineering before committing.
laravel/nova: ^4.0|^5.0 (a dual-run bridge) or did it drop Nova 4 (a forced cutover)? Read composer.json directly; do not infer from release notes. This single fact determines the entire sequencing plan.php and laravel/framework floors and ceilings — does it reach Laravel 12?failed_jobs beyond ~10k rows? Is retry batched or per-job?NOASSERTION resolvable to a known OSI license, and does legal accept it for production?Stack fit. Viable only for Nova-licensed shops on a supported Laravel version. The sharpest framing for the decision record: if the team already runs Horizon on Redis, the marginal value is low and the honest recommendation is do not add this. Justify adoption on the non-Redis case (database/SQS drivers) or on the explicit goal of consolidating operator workflows into Nova rather than scattering them across SSH, tinker, and artisan. For small-to-mid teams wanting lightweight visibility inside an admin panel they already pay for, this is a credible buy-over-build option, and the cost comparison is a Composer line versus a backlog item plus perpetual bespoke maintenance.
Migration path. There are no data migrations, so adoption and removal are both cheap and genuinely reversible — a rare property worth stating explicitly when asking for approval, because it lowers the cost of being wrong. The migration that actually matters is the Nova 4 → 5 upgrade this release enables. Frame 1.4.0 as an unblocker inside a larger Nova 5 program, not a standalone upgrade with independent value; its worth is derived from the program it unblocks.
Compatibility — verify three axes, in order. (a) The Nova constraint is a disjunction, not a replacement; (b) PHP/Laravel floors and ceilings align with the target platform, including how far forward the laravel/framework constraint reaches; (c) Nova 5 did not change tool registration or asset publishing in a way that breaks boot. If (a) is false, this is a hard cutover and must be sequenced with the Nova upgrade, never ahead of it.
Sequencing.
NOASSERTION license. Gate everything else on this.composer.json directly and confirm the dual-run vs. cutover question.Maintenance. Best-effort, single-maintainer, no funded team behind it. The maintenance burden the organization accepts is not patching the package — it is watching it: tracking Nova majors, watching for the next compatibility PR of unknown latency, and being prepared to fork or replace on short notice. Assign a named owning engineer. An unowned dependency on a destructive admin surface is how this becomes an incident.
Support. No SLA, no support contract, GitHub issues only. Escalation latency cannot be planned against. For an internal ops tool that is often acceptable; if the org requires a documented support window, this is not that package — say so plainly rather than softening it.
Scaling. Two independent scaling concerns. Queue volume is fine — the tool reads tables, it does not process jobs. Failed-job table size is not: the failed-jobs view and bulk retry are synchronous requests, and the UI degrades at high row counts — precisely the incident condition where it is most valuable. Pair adoption with failure-retention pruning or accept that the tool is least useful when you need it most. Note also that flush is unbounded by design; the runbook must constrain when it is permitted.
Failure modes to plan for.
Ramp-up. Low for operators — the value proposition is precisely that it removes CLI recall from the incident path: a failed job pages you, you open Nova → Queue Management → Failed Jobs, read the exception and payload, and retry without SSH. Ramp-up cost sits with engineering and on-call governance, not with users: the authorization gate, the written runbook covering who may retry or delete, when bulk operations are permitted, and what to check before flushing a queue. Budget roughly a half-day to install and gate, plus a staging bake, plus runbook authoring. Pilot with a small operator group behind a feature flag before general availability.
How can I help you explore Laravel packages today?