--json) or the HTTP API at https://api.getfloo.com/v1, starting from getfloo.com/agents.md. This reference documents the CLI; this page covers behavior shared by every command.
Output contract
Every command supports two modes:Human mode
- tables, progress, warnings, and success messages go to stderr
- stdout stays clean unless a command prints raw data (for example
floo auth token)
JSON mode
- JSON goes to stdout
- progress still goes to stderr
- success responses use
{ "success": true, "data": ... } - failures use
{ "success": false, "error": { "code": "...", "message": "...", "suggestion": "..." } }
floo ... --json 2>/dev/null leaves an agent only the JSON.
App inference
App-scoped commands infer the app from local config, in this order:--app <name>- The nearest directory containing either config file, walking up to a
.gitboundary. - If that directory contains both files,
floo.service.tomlwins; conflicting app names are an error.
--app.
Preflight
--preflight previews a mutation without applying it. A command’s --help lists the flag only when that command implements a preview. --dry-run is a hidden compatibility alias; use --preflight.
floo preflight is a separate command that validates the project config; see preflight.
Self-discovery
The installed CLI describes its own surface:floo docs lists the topics; floo commands --json returns the full command tree. See commands and docs for both output shapes and the discovery order.
Configuration files
floo.app.toml: the app config. Services are declared inline under[services.<name>]; managed-service credential attachments live under service env blocks.floo.service.toml: optional per-service file, used only in the delegated multi-service layout.~/.floo/config.json: auth and API settings.
Most-used command families
Deploy flow
Push to GitHub to deploy. Usefloo redeploy only to redeploy without a code change. See CLI commands: Ship changes.