A FIELD GUIDE TO LARAVEL · VOLUME II · THE ECOSYSTEM
ENTRY II.15 · QUEUES
Horizon
Laravel\Horizon · Package · first recorded 26 July 2017, v0.1.0 on Packagist; 1.0 with Laravel 5.5
A dashboard and a code-driven supervisor for Redis queues. Worker counts, balancing and timeouts live in config/horizon.php under version control, and one resident process starts and watches them all.
Specification
Kind Package with a resident process and a dashboard at /horizon
Driver Redis queues only; a reserved horizon Redis connection
Client The dashboard in a browser, behind the viewHorizon gate
Installed by composer require laravel/horizon · php artisan horizon:install
Voice horizon · horizon:terminate · horizon:pause · horizon:snapshot
Scales by balance auto: minProcesses per queue, maxProcesses in total
Range Cloud: yes. On a worker cluster with Valkey; managed queues do not support it
Forge, VPS: yes. Under Supervisor; horizon:terminate on deploy
Vapor: no. No resident process on Lambda
Neighbours
queue:work is the plain worker: the same jobs, with no dashboard and no supervisor. Pulse's queues card shows throughput beside the rest of the app. Managed queues on Laravel Cloud scale their own workers, and Horizon does not support them; Horizon is for Redis queues you run yourself.
Field marks
config/horizon.php
HorizonServiceProvider (the gate)
/horizon in the browser
supervisorctl start horizon
Fig. II.15.1 · a supervisor and its workers, exploded
Parts
1 Config. config/horizon.php: environments, each with named supervisors. defaults is merged into every one of them.
2 Master process. php artisan horizon, kept alive by Supervisor on a server. horizon:terminate on deploy to pick up new code.
3 Supervisor, a named group of workers over a list of queues: balance auto, simple or false; tries, timeout, backoff.
4 Workers. Scaled between minProcesses and maxProcesses, at most balanceMaxShift every balanceCooldown seconds.
5 Redis. Holds the queues and, on its own horizon connection, the job history, tags and metric snapshots.
6 Dashboard. /horizon, local only until the viewHorizon gate allows more. Metrics need horizon:snapshot on the scheduler.
Hidden joinery
Workers restart at the memory limit (128 MB by default), and after maxJobs or maxTime when those are set. Jobs are tagged automatically with any Eloquent model in their properties, App\Models\Video:1 style. Under auto balancing the order of queues means nothing; for priority, use balance false or a second supervisor.
Every line checked against the Horizon docs, config and source, Cloud docs and Packagist on 2026-10-08.
TITLE
Horizon · the supervisor
SOURCES
laravel.com/docs/13.x/horizon · github.com/laravel/horizon/blob/5.x/config/horizon.php · github.com/laravel/horizon/blob/5.x/src/Horizon.php · packagist.org/packages/laravel/horizon · laravel.com/cloud/docs/queues · laravel.com/cloud/docs/workers · laravel.com/forge/docs/sites/queues · docs.vapor.build/resources/queues · Monitor 993
STATUS
Verified · 2026-10-08
SHEET
II.15 of 48
REV
A · 2026-10-08
DRAWN
BS
FINISH
All faces, including the back