Skyline

What is Skyline for Laravel?

What Skyline adds on top of Laravel Horizon, and what stays exactly the same.

Skyline is a commercial fork of Laravel Horizon, maintained by Boring Observability. It keeps everything Horizon does for monitoring Redis queues and adds what Horizon leaves out: alerts when a queue stalls, jobs fail in bulk or Horizon stops running, pausing a queue, running a delayed job now, weighted processing, front-of-queue dispatch, per-queue inspection and cleanup, and a metrics dashboard that stays readable at scale.

A genuine drop-in replacement#

Skyline keeps the Laravel\Horizon\ namespace and declares replace on laravel/horizon in Composer. In practice that means:

  • Your existing config/horizon.php keeps working, unchanged.
  • Your HorizonServiceProvider, Gate::define('viewHorizon', …) and Horizon::auth() customisations keep working.
  • Every php artisan horizon:* command keeps its name and behaviour.
  • The dashboard still mounts at /horizon.
  • Any package that depends on laravel/horizon resolves against Skyline instead.
  • There are no migrations, and no application code changes.

Skyline is a rebased fork rather than a divergent one: main is always a recent upstream Horizon tag with the Skyline commits replayed on top. New Horizon releases, bug fixes and Laravel compatibility updates are merged in, so the Skyline features are built on a current base rather than instead of one.

What Skyline adds#

Capability Where it is documented
Alerts when a queue stalls, jobs fail in bulk, workers crash-loop or Horizon stops running, with recovery messages Alerts
Proportional queue priority that never starves a queue Weighted queues
Push an urgent job to the head of the queue Front-of-queue dispatching
Pause and resume Horizon, or a single queue, from the dashboard Pausing & resuming queues
Job-state tabs, per-queue drill-down, search, delete, empty queue, Perform Now Dashboard operations
Aggregate metric charts, workload / failure / wait trends Metrics & trends
Structured logging of every job lifecycle transition, and of the queue failures Laravel keeps silent Job lifecycle logging
ShouldBeUnique locks released when a job is deleted or fails before it starts Unique job locks
Held unique and overlap locks, skipped dispatches, debounced jobs, and jobs held back by rate limiters and throttles Locks & Limits
What each job class costs in memory and CPU, and why workers are being replaced Insights
A read-only MCP server, so an AI agent can inspect queues, jobs and metrics MCP server
New HTTP endpoints backing all of the above HTTP API

Requirements#

Skyline inherits Horizon's requirements. If Horizon runs on your application today, so does Skyline — the supported range is the same one upstream Horizon declares, because Skyline is rebased onto it rather than diverging from it.

Requirement Supported
PHP 8.0 and later
Laravel 9.21 and later, through Laravel 13
Queue connection Redis, via the phpredis extension or predis/predis
PHP extensions json, pcntl, posix

pcntl and posix are what let the master process signal its workers, so they are hard requirements of Horizon and of Skyline alike — they are not available on Windows, which is why Horizon has never run there either. WSL, Docker or any Linux host is fine.

One feature needs a newer framework than the rest, and degrades gracefully rather than breaking: pausing a single queue is built on Laravel's native queue-pause API, added in Laravel 12.40. Below that version the per-queue Pause buttons hide themselves behind an explanatory banner; everything else on this page works from Laravel 9.21 up. Global and per-supervisor pausing — horizon:pause and horizon:pause-supervisor — work on every supported version, because they signal the master process rather than storing state.

Licensing#

Skyline is sold as a one-time purchase through Anystack — $139 once, covering every application you run it on and including twelve months of upgrades. A license key authenticates Composer against the private registry at laravel-skyline.composer.sh so you can install and update the package. See Installation.

When the twelve months end, every version published during them stays yours — installed copies keep running and you can still pull those releases when you rebuild. There is no runtime license check that can interrupt job processing; only releases published after your upgrade year fail to resolve until you renew.

Skyline is built on Laravel Horizon, which is open-sourced under the MIT license (Copyright © Taylor Otwell). Skyline's modifications and additions are Copyright © Boring Observability and are also released under MIT.

Relationship to the Horizon docs#

Skyline's behaviour is identical to upstream Laravel Horizon except for the features documented on this site. The official Horizon documentation — supervisors, balancing strategies, autoscaling, tags, metrics snapshots, notifications, deployment — applies in full.

Common questions

What is Skyline for Laravel?

Skyline for Laravel is a commercial fork of Laravel Horizon, maintained by Boring Observability. It keeps everything Horizon does for monitoring Redis queues and adds what Horizon leaves out: alerts when a queue stalls, jobs fail in bulk or Horizon stops running, pausing a queue, running a delayed job immediately, weighted queue processing, front-of-queue dispatch, per-queue inspection and cleanup, and a metrics dashboard that stays readable at scale.

Is Skyline a drop-in replacement for Laravel Horizon?

Yes. Skyline keeps the Laravel\Horizon\ namespace and declares replace on laravel/horizon in Composer, so your existing config/horizon.php, service-provider customisations, gate definitions and horizon:* Artisan commands all keep working. The dashboard still mounts at /horizon. There are no migrations and no application code changes.

What versions of PHP and Laravel does Skyline for Laravel support?

PHP 8.0 and later, and Laravel 9.21 and later through Laravel 13. The ext-json, ext-pcntl and ext-posix extensions are required, as they are for Horizon itself, which is why neither runs on Windows. The range is identical to upstream Horizon's because Skyline is rebased onto it. One feature needs more: pausing a single queue relies on the native queue-pause API added in Laravel 12.40, and hides itself below that version.

Does Skyline work with non-Redis queue drivers?

Skyline monitors Redis queues, exactly as Horizon does. Features that rely on Redis list semantics — front-of-queue dispatching, per-job deletion, unique-lock release — do not apply to the sync or database drivers.

Queue control, not just queue monitoring.

Skyline is a drop-in replacement for Laravel Horizon that lets you act on what you see — pause a queue, jump a job to the front, drain a backlog. $139 once, every app you run it on.

Buy Skyline — $139 once

Secure checkout by Anystack. 30 days to change your mind.