Skip to main content
Validate your project config, detect runtimes, and check deploy readiness. Local checks require no authentication. For an authenticated existing app, preflight also returns the read-only server plan, including tier-aware runtime defaults. The command has no side effects.
Pushing is the deploy. After floo apps github connect, every git push to your default branch deploys to dev automatically. floo preflight is the local check you run before that push. There is no separate CLI deploy step in the everyday flow. See git-push deploys for the full trigger table.

Arguments

Flags

Examples

What it checks

  1. Config files, reads floo.app.toml (and any per-service floo.service.toml in a delegated layout) and validates structure
  2. Service discovery, resolves all services, checks for duplicates and naming rules
  3. Port validation, verifies ports are set and match Dockerfile EXPOSE directives
  4. Runtime detection, scans project files to determine language and framework
  5. Env file check, verifies referenced env_file paths exist on disk
  6. Env injection plan, shows each service’s managed attachments, generated env keys, required keys, and optional keys
  7. Runtime plan - shows on-demand, warm, fixed, or paused posture; configured and locally resolved scaling values; CPU allocation; and whether server resolution is still required. With authentication, plan.runtime_services contains the exact tier-aware result for --env.
  8. Managed services: reconciles config declarations against platform state:
    • to_provision: declared, no row yet. The next deploy creates it.
    • to_retain: declared and present. Safe declared fields are reconciled.
    • to_retry: declared, but the row is failed. The next deploy retries it.
    • to_deprovision: previously config-declared, now removed. This is tier-3. Review is required only under an explicit approval policy. The default retains the resource without a teardown schedule; deploy never deletes its data.
    • to_orphan: present but never config-declared, such as a CLI-added row. It stays live until explicitly removed.
    • in_flight_deprovisioning: terminal deletion is in progress.

JSON output

findings lists every error and warning the local checks produced. plan is the read-only server plan and is null without authentication or an existing app. When the config is invalid the payload is {"success": false, "error": {...}, "data": {...}} with the same data keys, so agents read findings either way. An omitted HTTP minimum resolves locally to 0 with source platform_default in every environment, including --env prod, with no note. The local plan does not guess organization-plan clamps. When authenticated, data.plan.runtime_services contains effective values and their sources after applying plan limits. After deploy, use floo services show <name> --env dev|prod --json to verify the applied contract. A null source means the field does not apply to that service type. See Scaling and Availability.

Errors