Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Flarum Horizon Laravel Package

bokt/flarum-horizon

A Flarum extension that brings Laravel Horizon's queue monitoring dashboard into the Flarum admin panel, letting admins inspect Redis-backed workers, job throughput, wait times, and failed jobs. Requires Horizon and a compatible Flarum/PHP setup.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

What this is: blomstra/flarum-ext-horizon is a Flarum extension (not a standalone Laravel package) that embeds the Laravel Horizon dashboard and a Redis admin widget inside the Flarum admin panel. It is a thin integration layer over laravel/horizon and Flarum's Illuminate-based queue stack — the underlying runtime is Laravel components, which is why it reads as a "Laravel/PHP package," but the consumer is a Flarum forum operator, not a generic Laravel application.

Architecture fit: Reasonable if and only if the Flarum instance already runs Redis-backed queues and Horizon as its queue supervisor. The extension does not provision Horizon, supervisor, or Redis — it surfaces them. Value is concentrated in operational visibility for forum admins who already have this stack; for anyone on sync or database queues it is inert at best and a misleading dashboard at worst.

Integration feasibility: Low-friction install (composer require blomstra/flarum-ext-horizon, enable in admin), but configuration is coupled to Flarum's queue config and Horizon's own config file. Expect a non-trivial first-time setup step: pointing Horizon at the correct Redis connection and ensuring the Flarum queue worker is Horizon-managed rather than a bare queue:work process. That is real work, not a checkbox.

Technical risk:

  • Pre-1.0 semver. Current line is 0.4.x. Minor versions may carry breaking changes; there is no stability guarantee to lean on.
  • Bus factor. Patch releases are authored by a single maintainer (imorland / Blomstra). Continuity risk is material for a dependency that sits on your queue-observability path.
  • Stack-specific coupling. Compatibility is constrained by the Flarum major version, PHP version, and the laravel/horizon version range simultaneously. Three moving parts, one maintainer.
  • Correctness of the dashboard itself. The 0.4.3 fix ("Max memory always displays auto") indicates the widget was reporting configuration inaccurately, not merely cosmetically. Any monitoring surface that has silently misreported Redis limits is a trust problem — you should re-baseline whatever alerting or runbooks assumed those numbers were right.
  • Blast radius is limited. A failure here degrades an admin panel widget, not the forum's request path. That materially lowers severity even though likelihood of small breakages is non-trivial.

Key questions:

  1. Does the target Flarum instance already run Horizon as its queue supervisor, or would adopting this extension force a queue-driver migration?
  2. Which laravel/horizon and Flarum version ranges does 0.4.3 actually support, and is that matrix tested in CI?
  3. Is there commercial backing (Blomstra) behind the extension, or is it community-maintained with no SLA?
  4. Does the Redis admin widget read live CONFIG GET / INFO values or cached/stale config — i.e. can we trust it for incident triage after the 0.4.3 fix?
  5. What is the 1.0.0 roadmap, and is there a Flarum-major-version support commitment?
  6. Fallback: if the extension is abandoned, how much of its value is recoverable by exposing Horizon on a separate subdomain behind basic auth?

Integration Approach

Stack fit: Only fits a Flarum 1.x instance on PHP 8.x with Redis and Horizon already in play. If the forum uses a single-server, low-volume deployment with sync or database queues, this is the wrong tool — the operational overhead of adding Redis + Horizon + supervisor exceeds the monitoring benefit.

Migration path: Treat this as an additive admin-surface change, not an infrastructure change. If Horizon is not yet installed, split into two phases: (1) move queues to Redis and stand up Horizon independently, validated over at least one full deploy/restart cycle; (2) add the Flarum extension to surface it. Do not do both in one release. If Horizon is already running, this is a single composer update plus an admin toggle.

Compatibility: Pin explicitly. Given pre-1.0 status, use a caret constraint bounded below the next minor (^0.4.3 with a deliberate review at 0.5.0), lock the laravel/horizon version, and record the tested Flarum/PHP combination in your dependency notes. Verify the extension's composer.json constraints before upgrading Flarum — that is the most likely breakage vector, and it will surface as a broken admin page rather than a hard failure.

Sequencing:

  1. Confirm Horizon is healthy and the Redis connection is correct (pre-existing dependency).
  2. Pin and install 0.4.3 in a staging environment cloned from production config.
  3. Verify the two 0.4.3 corrections behave: max-memory reflects the real configured limit, and the eviction-policy display matches maxmemory-policy from CONFIG GET.
  4. Cross-check widget figures against redis-cli INFO memory and CONFIG GET maxmemory — do not take the dashboard's word for it on first install.
  5. Roll to production during a low-traffic window; the change is admin-only, so impact risk is minimal and rollback is a disable-toggle.

Operational Impact

Maintenance: Low ongoing effort but non-zero ownership. Budget for a dependency review each time Flarum or Horizon ships a release, and expect occasional patch releases like 0.4.3 that are cosmetic on the surface but touch correctness of displayed values. Because it is a single-maintainer extension, someone on the team must be explicitly named as the owner who watches upstream.

Support: Community GitHub issues, no contractual SLA. Escalation path is limited to pinning, disabling, or forking — the extension is small enough that a fork is a credible fallback, which is the main thing making the continuity risk tolerable. If Blomstra offers commercial support tied to their hosting, that changes the calculus favorably.

Scaling: Negligible runtime cost — the widget renders on admin page load and reads Redis metadata. Horizon itself scales with queue worker count, not with this extension. The practical scaling concern is cognitive: the dashboard is only useful while someone is actually watching it, and a dashboard with no alert behind it is decoration. Pair it with an alert on queue wait time and failed-job count or the value is largely unrealized.

Failure modes:

  • Redis unreachable → admin widget errors or shows empty; forum traffic itself is likely unaffected, but queue processing stops, which is the actual incident.
  • Horizon version drift → broken or blank admin panel page after an upgrade.
  • Extension abandonment → stale UI over a working Horizon backend; degraded but not fatal, and recoverable by exposing Horizon directly.
  • Misreported metrics (the 0.4.3 class of bug) → false confidence during capacity incidents. This is the sneakiest failure mode because nothing looks broken.
  • Queue worker supervision misconfiguration → jobs silently stop draining while the dashboard shows a healthy-but-idle state.

Ramp-up: Low for operators — the UI is standard Horizon. Moderate for whoever owns the install, because troubleshooting spans three layers (Flarum extension, Horizon config, Redis config) and the extension's own documentation is thin. Estimate half a day for a competent PHP engineer to stand up and validate end-to-end, plus the same again if a Redis queue migration is required. No specialized knowledge beyond familiar Laravel queue/Horizon operations.

Verdict on 0.4.3: Two changes, both minor — a display-correctness fix and an added eviction-policy readout in the Redis widget. No breaking changes, no deprecations, no new configuration surface. This is a routine patch that improves trustworthiness of the monitoring surface rather than changing integration shape. Adopt it, but re-verify the max-memory figure against CONFIG GET maxmemory afterward, since the prior behavior was known to be wrong and any runbook built on those numbers should be re-checked.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package