Skip to main content
Start all services in a floo app locally, with credentials from your floo-provisioned managed services injected automatically.

Arguments

Flags

The --fixture-* flags only take effect for apps with access_mode = "accounts"; against any other mode floo dev warns and skips the proxy. See Add User Auth → Local development for the full walkthrough.

What happens

  1. Resolve — reads floo.app.toml and collects all services with a dev_command
  2. Session — creates a dev session via the floo API
  3. Postgres auth — if the app has managed Postgres, your public IP is authorized for direct connections
  4. Env injection — global + per-service env vars are decrypted and injected into each service process. Managed service credentials follow the same env.managed attachment plan as deploy; DATABASE_URL is rewritten to point to the Cloud SQL public IP when Postgres access is authorized.
  5. Migrations — if migrate_command is set for a service, it runs before that service starts
  6. Start — each service’s dev_command is spawned in its path directory with a colored prefix in the terminal
  7. Cleanup — on Ctrl+C, all child processes are terminated and the dev session is deleted

Requirements

  • floo.app.toml must exist in the project directory
  • Every service must have dev_command, path, and port set
  • Each service must use a unique port

Example

Terminal output:

Discovery vars

Each service receives env vars pointing to the other services running locally: For example, a web service in a web + api app receives API_URL=http://localhost:8000 and NEXT_PUBLIC_API_URL=http://localhost:8000.

JSON output

floo dev --json emits managed-service credentials in plaintext. The startup envelope contains the same DATABASE_URL, REDIS_URL, and any custom env vars you would see in your local process. Treat the JSON stream as sensitive: do not commit it, paste it into chat, or pipe it to a service that retains logs. If you need to share output, redact the env_vars block first.
Startup emits a single JSON object:
Log lines stream as newline-delimited JSON events:
Session end:

Errors