Skip to main content
Deploy your project to floo, or manage deploy history with subcommands.
floo deploy [PATH]

Arguments

ArgumentDescriptionDefault
PATHProject directory to deploy. (current directory)

Flags

FlagDescription
--app APPExisting app name or UUID to deploy to
--services NAMEDeploy only specific services (repeatable)
--restartRestart the app without rebuilding (redeploy existing images with fresh env vars)
--sync-envRe-sync env vars from configured env_file before deploying
--dry-runPreview what would be deployed without executing

Examples

# Deploy current directory
floo deploy

# Deploy a specific directory
floo deploy ./my-project

# Redeploy to an existing app
floo deploy --app my-app

# Restart without rebuilding (pick up new env vars)
floo deploy --restart --app my-app

# Preview deploy (no auth required)
floo deploy --dry-run --json

# Deploy only specific services (multi-service app)
floo deploy --services api --services web

# Agent workflow: deploy and extract URL
floo deploy --json 2>/dev/null | jq -r '.data.deploy.url'

What happens

  1. Config — floo reads floo.app.toml / floo.service.toml from your project
  2. Detect — Scans project files to detect the runtime and framework
  3. Preflight — Validates config, checks ports, service names, env files
  4. API — Sends deploy request to the floo API
  5. Build — API pulls source from connected GitHub repo, builds via Railpack or Dockerfile using Cloud Build
  6. Deploy — Image is pushed to Artifact Registry and deployed to Cloud Run
  7. URL — Live URL is returned
Deploys are sourced from GitHub. Source is never uploaded from your machine. Connect your repo with floo apps github connect owner/repo --app my-app.

Runtime detection

FileRuntimeFramework
DockerfileDocker (direct)
package.json + nextNode.jsNext.js
package.json + viteNode.jsVite
package.json + expressNode.jsExpress
package.json + fastifyNode.jsFastify
requirements.txt + fastapiPythonFastAPI
requirements.txt + flaskPythonFlask
requirements.txt + djangoPythonDjango
pyproject.tomlPython(detected from deps)
go.modGo
index.html (no backend)Static
Detection priority: Dockerfile > package.json > pyproject.toml/requirements.txt > go.mod > index.html. If a Dockerfile is present, floo uses it directly — no auto-detection.

Subcommands

floo deploy list

List deploy history for an app, newest first.
floo deploy list --app my-app
FlagDescription
--app APPApp name or UUID

floo deploy logs DEPLOY_ID

Show build logs for a specific deploy.
floo deploy logs abc123 --app my-app
floo deploy logs abc123 --app my-app --follow
FlagDescription
--app APPApp name or UUID
--followStream logs in real-time for active deploys

floo deploy watch

Stream deploy progress in real-time. Waits for the deploy to finish and shows build logs as they arrive.
floo deploy watch --app my-app
floo deploy watch --app my-app --commit abc1234
FlagDescription
--app APPApp name or UUID
--commit SHAMatch a deploy by commit SHA prefix (waits up to 120s)

floo deploy rollback APP DEPLOY_ID

Rollback to a previous deploy.
floo deploy rollback my-app abc123
floo deploy rollback my-app abc123 --force --json
FlagDescription
--forceSkip confirmation prompt

JSON output

{
  "success": true,
  "data": {
    "app": {
      "id": "a1b2c3d4-...",
      "name": "my-app",
      "status": "live",
      "url": "https://my-app-abc123.us-central1.run.app"
    },
    "deploy": {
      "id": "e5f6g7h8-...",
      "status": "live",
      "url": "https://my-app-abc123.us-central1.run.app",
      "build_logs": "..."
    },
    "detection": {
      "runtime": "nodejs",
      "framework": "Next.js",
      "version": "^14.0.0",
      "confidence": "high",
      "reason": "Found next in package.json dependencies"
    },
    "services": ["web"]
  }
}

Errors

CodeMeaning
NOT_AUTHENTICATEDRun floo auth login first
INVALID_PATHPath is not a valid directory
NO_CONFIG_FOUNDNo floo.app.toml or floo.service.toml found. Run floo init first
CONFIG_INVALIDPreflight validation failed (duplicate service names, invalid ports, etc.)
APP_NOT_FOUNDThe --app value doesn’t match any existing app
DEPLOY_FAILEDBuild or deploy failed. Check build logs
DEPLOY_TIMEOUTDeploy timed out after 10 minutes
NO_RUNTIME_DETECTEDNo supported project files found