Getting started
Introduction
What Skyline adds on top of Laravel Horizon, and what stays exactly the same.
Laravel Skyline is a commercial fork of Laravel Horizon, maintained by Boring Observability. It keeps everything Horizon does for monitoring Redis queues and adds the operations layer Horizon leaves out: 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.phpkeeps working, unchanged. - Your
HorizonServiceProvider,Gate::define('viewHorizon', …)andHorizon::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/horizonresolves 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 |
|---|---|
| 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 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 | Job lifecycle logging |
| One-object-per-line JSON worker output | JSON worker output |
| Unique-job locks released when a job leaves the queue out-of-band | Unique job locks |
| New HTTP endpoints backing all of the above | HTTP API |
Requirements
Skyline inherits Horizon's requirements: a PHP application running Laravel, with a Redis queue
connection and either the phpredis extension or predis/predis. Skyline monitors Redis
queues, exactly as Horizon does.
Two features degrade gracefully on older Laravel versions rather than breaking: per-queue pausing needs the framework's native queue-pause API and hides itself when it is unavailable, and JSON worker output requires Laravel 11 or later.
Licensing
Skyline is sold as an annual subscription through Anystack. A license key
authenticates Composer against the private registry at laravel-skyline.composer.sh so you can install
and update the package. See Installation.
If a subscription lapses, already-installed versions keep running normally. There is no runtime
license check that can interrupt job processing — only future composer update calls against the private
registry fail authentication 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.