Vapor, Laravel's own
Per-invocation billing on Lambda was a real strength for spiky, quiet workloads. Vapor is closed to new sign-ups and fully supported for existing customers.
A thesis story
On Laravel Cloud, Flex compute sleeps when no request arrives and stops billing for compute while it sleeps. On the new Flex sizes it wakes in under 500 milliseconds, by restoring a snapshot of the running app rather than booting it. The database and cache can sleep with it.
The idea in one line Sleep is a snapshot, not a shutdown.
One Flex environment, asleepThen one request arrives
While asleep: no compute charge; database storage stays online
0 replicas · asleep
The commercial reading
Staging, previews, internal tools, client demos and side projects spend far more time waiting than working. On most hosts they bill the whole time. The question for a buyer is simple: what are we paying for between requests?
A ten-second wake was too slow to stack a database and cache on top, so most apps kept them running around the clock.
Compute, database and cache sleep and wake together, so an idle environment stops paying for all three kinds of compute.
Previews were expensive to keep running on Heroku. Letting idle ones sleep was one of two features that decided it.
Filament's server had been sized for a launch spike and could not scale back down. Replicas that shrink after the peak are the same idea, short of zero.
MySQL Flex databases can scale to zero since 20 July 2026, with an idle window from one minute to one hour, or never. Prices vary by region; see the Cloud pricing page rather than a figure here.
Sources: Monitor 563 (Laravel blog, "How we built Laravel Cloud's scale to zero", 15 June 2026), 472 (Cloud changelog, 20 July 2026), 556 (Laracon US 2026 roundup, 29 July 2026), 998 (Superscript), 997 (Filament); laravel.com/cloud/docs/compute.
The technical reading
Five moments, in order. None of them needs a change to your application: it opens a database connection as it always does, and the database wakes because of it.
When no inbound request reaches the app within the sleep timeout, the runtime writes a checkpoint of the process state, memory pages and open file descriptors included, to disk on the compute node. Only a small custom runtime keeps running.
The request reaches the proxy, and the runtime restores the app from its snapshot instead of scheduling a workload, pulling an image and booting PHP. If more requests arrive meanwhile, they queue and are forwarded together once the app is ready. None is dropped.
There is no central orchestrator. The restored app opens normal MySQL and Valkey client connections, and those TCP connections wake the database and cache. A proxy in front of each MySQL cluster holds the connection while compute resumes.
A central scheduler outside your workload wakes a Laravel app to run schedule:run, so nothing falls behind. Once woken, the app stays awake for the sleep timeout. A queued job still running when that timeout elapses can be interrupted.
If a restore fails, the platform starts the container from scratch. That request waits longer, but it does not return an error. Because a sleeping app has nothing to check, Cloud monitors the custom runtime itself and restarts it if it stops answering.
QUEUE_CONNECTION=cloud; Horizon and queue:failed, queue:retry, queue:clear do not support them.Sources: Monitor 563 (the engineering post, read in full), 472, 556; laravel.com/cloud/docs/compute and laravel.com/cloud/docs/queues, read 8 October 2026.
Two Laravel answers
Per-invocation billing on Lambda was a real strength for spiky, quiet workloads. Vapor is closed to new sign-ups and fully supported for existing customers.
The app sleeps as a snapshot of a booted process. Database and cache follow it down. Awake, it can run Octane, workers and a scheduler like any server.
Steady production traffic gains little from sleeping, and Pro compute does not scale to zero. Jobs that must start at once belong on managed queues.
Sources: Monitor 563 (20x, about 10 s to under 500 ms), 227 (Vapor sign-ups closed, 23 September 2026); the Vapor and Cloud sheets; laravel.com/cloud/docs/compute.
The lesson, with its source
A Laravel Solutions Engineer pointed k6 at a Cloud app with autoscaling on. He works at Laravel and says so; this is not an independent benchmark. He also published the result that went badly.
“Tune your database before you blame your platform.”Laravel blog, k6 load test, 25 March 2026 · Monitor 588
Three questions for any team: which of your environments sees no traffic most hours; which scheduled or queued work assumes the app is always up; and has your database been tuned for the connections a quickly scaling app will open.