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 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 a one-time purchase through Anystack —
$99 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.