floo services provisions and removes managed services (Postgres, Redis, Storage) and inspects any service in your app, managed or application.
Postgres and Storage hold persistent state. Managed Redis is cache-only: floo makes no backup, restore, or durability guarantee for it, so keep authoritative data in Postgres.
Declare managed services in a [managed.<name>] block in floo.app.toml; a deploy creates declared resources that are missing. floo services add provisions one on an app that already exists. Removing a declaration never deletes data; see remove.
The legacy
[postgres], [redis], [storage] sections in floo.app.toml still auto-provision on first deploy during the deprecation window, with a warning. Run floo services add for each legacy service type (an existing resource is reported as already provisioned), then replace the sections with [managed.<name>] declarations. See Managed Services.list
List application services (web, api, worker) and managed services (postgres, redis, storage).
The URL column is each service’s address in the requested environment: an active custom domain when one is verified, otherwise the floo host. Apps with more than one web or api service get one host per service (<app>-dev-<service>.getfloo.app in dev, <app>-<service>.getfloo.app in prod); single-service apps use the app host. Workers, cron jobs, and internal-ingress services have no URL.
Flags
JSON output
null means not explicitly configured. runtime_plan reports the effective
values and their sources for the selected environment. On every plan and in
every environment, including production, an omitted HTTP min_instances
appears as effective 0 with source platform_default.
show
Show one service, managed or application; you don’t need to know which a name maps to. Managed services return status and injected env-var keys; application services return port, URL, ingress, and configured CPU, memory, scaling, and request-body limits. Pass the name positionally or with--service, not both.
Flags
show never returns connection credentials. Use floo env list for masked verification. floo env get prints a secret-shaped config value only with the global --reveal-secrets flag; use it only when you control the output destination.
For application services, human output separates configured resources from the
effective runtime plan, as JSON does with the top-level fields and
runtime_plan. See Scaling and Availability.
add
Provision a managed service or re-record a legacy declaration. When(app, type, name) already exists (a MANAGED_SERVICE_ALREADY_EXISTS 409), add reports the existing row as already provisioned, with already_provisioned: true in JSON.
Arguments
Flags
What it does
- Calls
POST /v1/apps/{app_id}/managed-servicesto provision the underlying resource (a managed Postgres database, a Redis database, or a storage bucket). - Synthesizes the env vars and injects them into your app’s environment scope. Postgres gets
DATABASE_URL(plusPG*for thedefaultrow), Redis getsREDIS_URL, Storage getsSTORAGE_BUCKET+STORAGE_S3_*. A non-default--namesuffixes the key, for exampleREDIS_URL_CACHE.
[services.<name>.env] managed = [...]. Run floo preflight --json to see the exact env_injection_plan.
For Postgres, dev and prod credentials are both provisioned up front, so promote does not re-provision.
Preview environments use separate preview-owned managed resources. For managed Postgres, inspect those preview database branches with floo previews resources.
remove
Permanently destroy a managed service and its data. It deletes the service’s Postgres database, Redis database, or storage bucket.Arguments
Flags
There is no
--yes or --force. The flag name is not a bug.
floo services remove is the only path that destroys managed-service data; deploy never does. Removing or disabling a [managed.<name>] declaration produces a to_deprovision proposal to delete it. By default the resource keeps working, with no review and no schedule. Under an explicit approval policy, review is required, and an approved Redis or Storage removal schedules a teardown, which can still be cancelled, without deleting data; Postgres gets no teardown schedule and keeps working. Renaming a block proposes creation under the new name and removal of the old resource. A CLI-added resource never declared in config appears as to_orphan until explicitly removed.
Errors
Related
- Managed Services, full lifecycle: deprecation, dev/prod isolation per service type.
floo preflight, see which managed services areto_provision,to_retain,to_orphan, or in flight.floo db, query and inspect the managed Postgres database directly.- Preview Environments, preview database branches and supported data modes.
- Scaling and Availability, choose and verify HTTP and worker runtime modes.