floo.app.toml set how quickly an app responds after a quiet
period and how much idle capacity stays running.
- Web and API services use
min_instancesandmax_instances. - Workers use the fixed
instancescount. - Whether CPU is always allocated or request-based follows the service type. The size of the shape is set with
cpuandmemory; see CPU and memory values.
On-demand HTTP
On-demand has the lowest idle cost; the first request after a quiet period pays for it. The service scales from zero to its maximum.Warm HTTP
Warm keeps one instance ready, so the baseline does not cold-start, and bills that instance continuously while it idles.Warm baseline cost
A warm instance bills idle CPU and memory for every hour it is ready, about 730 hours a month, and request traffic on top of that baseline is metered as usual. Rates are on getfloo.com/pricing.Workers
Work that runs without an HTTP request belongs in a worker. Workers use a fixed count and always-allocated CPU.floo preflight and deploys accept a
worker without port. floo dev requires port on every service, so declare
one if you run the worker locally.
Pause a worker with instances = 0:
min_instances. A global [resources] min_instances
applies only to web and API services.
Defaults and limits
When HTTPmin_instances is omitted, floo defaults to 0 on every plan and in
every environment, including production:
An explicit value wins, subject to plan limits. Set
min_instances = 1 or
higher to keep an HTTP service warm; each idle instance bills continuously.
Omitted HTTP max_instances resolves to 3, and omitted worker instances resolves to
1. Per-service values override delegated floo.service.toml values, which
override global [resources] values.
An HTTP service kept warm only by the old production default becomes on-demand
at its next deploy, promote, restart, or rollback, and may cold-start. floo does
not create a new revision only to migrate this default. Set min_instances = 1
before then to keep it warm.
Verify the result
Inspect dev intent locally before pushing:data.runtime_plan separates configured values from locally resolved
defaults. An omitted HTTP minimum resolves to 0 with source platform_default
in every environment, with no note. Inspect production intent locally too:
data.plan.runtime_services also reports
effective values and their sources after applying plan limits.
After deploy, inspect the applied plan for an environment:
runtime_plan object keeps declared and effective values separate. It also
reports the value source, availability posture, CPU allocation mode and reason,
and warnings. A value clamped by the plan reports source plan_limit with a
warning. A null source means the field does not apply to that
service type, such as worker instances on a web service.
Config file spec
See every resource field and precedence rule.
Preflight
Inspect the local runtime plan before you push.