A FIELD GUIDE TO LARAVEL · VOLUME II · THE ECOSYSTEM
ENTRY II.25 · APPLICATION SERVERS
Octane
Laravel\Octane · Package · first recorded 6 April 2021, v0.1.0 on Packagist
A long-running application server. The app boots once and stays in memory, served by FrankenPHP, RoadRunner or Swoole, so each request skips the boot that PHP-FPM repeats every time.
Specification
Kind Package plus a resident server, a binary or a PHP extension; a worker per core
Engine FrankenPHP, RoadRunner, Swoole or Open Swoole; one config key
Runs on Port 8000 behind Nginx or Apache, which keep the static files
Installed by composer require laravel/octane · octane:install
Voice octane:start · octane:reload · octane:status · octane:stop
Scales by --workers per server, each recycled after 500 requests; replicas above
Range Cloud: yes, a switch, FrankenPHP; gains reported, see sources
Forge, VPS: yes: a site toggle; Forge runs the daemon behind Nginx
Vapor: yes: octane: true in vapor.yml, on the Lambda runtime
Neighbours
PHP-FPM is the default: each request boots the app and forgets it, so no state carries over. On Cloud, Octane is a toggle on the App cluster, served by FrankenPHP; on Forge a toggle creates an Octane daemon. Octane's distinction is a resident app, with caveats about state to match.
Field marks
OCTANE_SERVER=frankenphp
OCTANE_HTTPS=true
config/octane.php
octane:start under Supervisor
Fig. II.25.1 · the resident worker, exploded
Parts
1 Nginx, in front. Serves static files, terminates TLS and proxies everything else to port 8000.
2 Server. FrankenPHP or RoadRunner, a binary Octane downloads; Swoole, a PECL extension. Set in config/octane.php.
3 Worker, one per CPU core by default. Each holds a booted application and takes requests in turn.
4 The app, booted once. Providers register and boot run when the worker starts; after that the same instance serves.
5 Reset, then recycle. First-party state is reset between requests, yours is not; a worker restarts after 500 (--max-requests).
Hidden joinery
octane:reload after a deploy restarts the workers gracefully, so new code serves without a server restart. --watch restarts on local file changes and needs Node and chokidar. max_execution_time defaults to 30 seconds; 0 removes the limit. With Swoole, the Octane cache and tables are shared by every worker but emptied on restart.
Every line checked against the Octane docs and source, Cloud, Forge and Vapor docs, The Monitor, 2026-10-08.
TITLE
Octane · the resident worker
SOURCES
laravel.com/docs/13.x/octane · github.com/laravel/octane/blob/2.x/config/octane.php · github.com/laravel/octane/blob/2.x/src/Commands/InstallCommand.php · packagist.org/packages/laravel/octane · laravel.com/cloud/docs/compute · laravel.com/forge/docs/sites/laravel · laravel.com/forge/docs/resources/background-processes · docs.vapor.build/projects/environments#octane · Monitor 997, 1186
STATUS
Verified · 2026-10-08
SHEET
II.25 of 48
REV
A · 2026-10-08
DRAWN
BS
FINISH
All faces, including the back