Arguments
| Argument | Description | Default |
|---|---|---|
PATH | Project directory containing floo.app.toml | . (current directory) |
Flags
| Flag | Description |
|---|---|
--app APP | App name or UUID (reads from config if omitted) |
What happens
- Resolve — reads
floo.app.tomland collects all services with adev_command - Session — creates a dev session via the floo API
- Postgres auth — if the app has a provisioned Postgres instance, your public IP is authorized for direct connections
- Env injection — all env vars (global + per-service) are decrypted and injected into each service process, including
DATABASE_URL(rewritten to point to the Cloud SQL public IP),REDIS_URL, and discovery vars - Migrations — if
migrate_commandis set for a service, it runs before that service starts - Start — each service’s
dev_commandis spawned in itspathdirectory with a colored prefix in the terminal - Cleanup — on Ctrl+C, all child processes are terminated and the dev session is deleted
Requirements
floo.app.tomlmust exist in the project directory- Every service must have
dev_command,path, andportset - Each service must use a unique port
Example
Discovery vars
Each service receives env vars pointing to the other services running locally:| Var | Example value |
|---|---|
<NAME>_URL | http://localhost:8000 |
VITE_<NAME>_URL | http://localhost:8000 (web services only) |
NEXT_PUBLIC_<NAME>_URL | http://localhost:8000 (web services only) |
FLOO_ALLOWED_ORIGINS | http://localhost:3000 (non-web services) |
web service in a web + api app receives API_URL=http://localhost:8000 and NEXT_PUBLIC_API_URL=http://localhost:8000.
JSON output
Errors
| Code | Meaning |
|---|---|
NOT_AUTHENTICATED | Run floo auth login first |
NO_CONFIG_FOUND | No floo.app.toml found. Run floo init first |
INVALID_PROJECT_CONFIG | A service is missing dev_command, path, or port, or two services share a port |
APP_NOT_FOUND | The app doesn’t exist in floo |
CANNOT_DETERMINE_IP | floo could not determine your public IP to authorize Postgres access |