# What is Skyline for Laravel?

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

Source: https://boring-observability.dev/skyline/docs/introduction
Section: Getting started — Skyline for Laravel documentation
Updated: 2026-07-13

---

Skyline is a commercial fork of [Laravel Horizon](https://github.com/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.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 |
| --- | --- |
| Proportional queue priority that never starves a queue | [Weighted queues](https://boring-observability.dev/skyline/docs/weighted-queues) |
| Push an urgent job to the head of the queue | [Front-of-queue dispatching](https://boring-observability.dev/skyline/docs/front-of-queue-dispatching) |
| Pause and resume a single queue from the dashboard | [Pausing & resuming queues](https://boring-observability.dev/skyline/docs/pausing-queues) |
| Job-state tabs, per-queue drill-down, search, delete, empty queue, Perform Now | [Dashboard operations](https://boring-observability.dev/skyline/docs/dashboard-operations) |
| Aggregate metric charts, workload / failure / wait trends | [Metrics & trends](https://boring-observability.dev/skyline/docs/metrics-and-trends) |
| Structured logging of every job lifecycle transition | [Job lifecycle logging](https://boring-observability.dev/skyline/docs/job-lifecycle-logging) |
| One-object-per-line JSON worker output | [JSON worker output](https://boring-observability.dev/skyline/docs/json-worker-output) |
| Unique-job locks released when a job leaves the queue out-of-band | [Unique job locks](https://boring-observability.dev/skyline/docs/unique-job-locks) |
| New HTTP endpoints backing all of the above | [HTTP API](https://boring-observability.dev/skyline/docs/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](https://boring-observability.dev/skyline/docs/pausing-queues) needs the framework's native queue-pause API and hides itself when it is unavailable, and [JSON worker output](https://boring-observability.dev/skyline/docs/json-worker-output) requires Laravel 11 or later.

## Licensing

Skyline is sold as a one-time purchase through [Anystack](https://anystack.sh/) — [$99 once](https://checkout.anystack.sh/laravel-skyline), 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](https://boring-observability.dev/skyline/docs/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](https://laravel.com/docs/horizon) — 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 the operations layer Horizon leaves out: 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.

### 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.
