vdlp/oc-horizon-plugin
Integrates Laravel Horizon into October CMS so you can monitor and manage Redis-backed queues from Horizon's dashboard, with job metrics, retries, and workload insights available inside your October CMS project.
waits thresholds. Put it before, not after, any roadmap item that assumes reliable async processing (notifications, exports, webhooks, media processing, billing).mail backs up at 300s while default is idle, that's a product scaling problem with a number attached, not an anecdote. This is the strongest ongoing PM value: it converts infrastructure complaints into ranked backlog items.maxProcesses, balance: auto, and maxTime/maxJobs settings are direct levers on infrastructure spend and worker stability. A PM should own the acceptance criteria here ("p95 wait under 60s at 3× current volume") rather than leaving it to whoever last touched the config.3.3.*, obtain the actual diff, and classify it as patch-equivalent or behavioral before upgrading. A minor bump can silently change PHP/October/Laravel floors or the published config/horizon.php stub that overwrites tuned supervisors.Consider it when all of these are true:
database or sync yields an empty dashboard and no value.php artisan horizon. The plugin cannot provide this; without it the dashboard shows a dashboard, not running workers.config/horizon.php — supervisors, balancing, tries/timeout/memory, and the ordering rule job timeout < supervisor timeout < retry_after. Misconfiguration here produces duplicate job executions, which look like product bugs.Look elsewhere — or treat as a spike, not a dependency — when:
laravel/horizon or inherits the host app's version — if it pins transitively, it can conflict with a Horizon version required elsewhere and surface as an app-wide boot failure rather than a dashboard break.To executives — one paragraph: "We're running background work (emails, exports, integrations) on October CMS. Today we can't see whether that work is succeeding, how far behind it is, or what failed — so incidents are discovered by customers and diagnosed by engineers. This package plugs Laravel Horizon's monitoring dashboard into our existing CMS backend: queue depth, throughput, wait times, and a failed-job list with retry. It's an adapter over a first-party Laravel component, so the adoption cost is low — Composer install, a Redis prerequisite we likely already meet, and a dashboard. The caveat is maintenance, not capability: the upstream repo is archived and its latest release shipped with no changelog. My recommendation is a two-week evaluation on staging to prove the value, then a deliberate decision on whether to adopt with an internal owner and a planned fork, or stay with manual queue checks. I'm not recommending we take it on as an unowned dependency."
To engineering — the framing they need:
horizon process itself.horizon process in production, horizon:terminate in the deploy sequence (not queue:restart), horizon:snapshot on a five-minute schedule or the graphs stay empty, and an authorization gate bound to October's backend permissions.3.3.*, diff the tags, check whether the published config stub changed (publish to a scratch path and merge by hand — --force will overwrite tuned supervisors), and re-publish Horizon's JS/CSS assets after upgrading or the dashboard 404s its bundle.APP_ENV doesn't exactly match an environments key — check redis-cli ping and horizon:status before touching the plugin. Run php artisan october:migrate after Horizon upgrades; failed_jobs schema changes surface as exceptions on the first failure after an update.horizon:terminate cleanly.The decision being requested: approve a timeboxed staging evaluation and name an internal owner for the configuration and upgrade path. If the evaluation lands, adopt with that owner and a pinned version; if the repo's maintenance posture looks worse than it does today, we revert to manual queue checks and revisit with a vendored fork or a build decision — the migration is additive and reversible, so the cost of finding out is two weeks, not a re-platforming.
How can I help you explore Laravel packages today?