Skip to main content
floo previews manages isolated preview sandboxes for pushed GitHub branches. Use it when an agent needs a real deploy URL before opening a pull request or when you want to inspect and clean up existing previews from the terminal. The command uses the same preview isolation contract as pull request previews. It deploys source from the app’s connected GitHub repository; it does not upload local dirty files.

up

Create or refresh a preview sandbox from a remote branch.
git push origin feat/foo
floo previews up --app my-app --branch feat/foo
floo previews up --app my-app --branch feat/foo --wait --json
--wait watches the deploy returned by the create call. It exits non-zero if that deploy fails.

Flags

FlagDefaultDescription
--app, -ainferred from configApp name or ID
--branchrequiredRemote GitHub branch to deploy into the preview sandbox
--runtimeautoRuntime hint for the deploy request
--commit-shanoneSpecific remote commit SHA to deploy
--refnoneRemote Git ref to deploy
--waitoffWait until the preview deploy finishes

JSON output

{
  "success": true,
  "data": {
    "app": {
      "id": "app_123",
      "name": "my-app"
    },
    "preview": {
      "slug": "feat-foo-abcde",
      "source_branch": "feat/foo"
    },
    "source_branch": "feat/foo",
    "deploy_id": "deploy_123",
    "status": "LIVE",
    "url": "https://my-app-preview-feat-foo-abcde.on.getfloo.com",
    "expires_at": "2026-06-30T18:30:00Z",
    "database_branches": [],
    "dev_prod_untouched": true
  }
}
Non-streaming preview commands emit one parseable JSON object. Log streaming is the exception: it may emit output over time.

list

List active preview sandboxes for an app.
floo previews list --app my-app
floo previews list --app my-app --json

status

Show one preview sandbox.
floo previews status --app my-app feat/foo
floo previews status --app my-app https://my-app-preview-feat-foo-abcde.on.getfloo.com --json
The preview identifier can be an exact slug, preview URL, source branch, or #123 when that PR number resolves to exactly one preview. If the identifier is ambiguous, pass the exact slug from floo previews list.

logs

Read logs for the latest deploy associated with a preview.
floo previews logs --app my-app feat/foo
floo previews logs --app my-app feat/foo --follow --tail 200

Flags

FlagDefaultDescription
--follow, -foffStream logs
--tail100Number of log lines to fetch

delete

Delete a preview sandbox and its preview-owned resources.
floo previews delete --app my-app feat/foo
floo previews delete --app my-app feat/foo --yes --json
Delete tears down preview-owned Cloud Run services, managed resources, gateway routes, and env vars through the preview lifecycle API. Dev and prod resources are untouched.

Flags

FlagDefaultDescription
--app, -ainferred from configApp name or ID
--yesoffSkip the confirmation prompt

Failure Handling

SymptomMeaningWhat to do
The preview deploy uses an old commitThe branch was not pushed before up ranPush the branch or pass a remote commit/ref
PREVIEW_MANAGED_SERVICE_ISOLATION_UNAVAILABLEfloo could not provision preview-owned managed resourcesFix the managed-service state and retry
Identifier is ambiguousMore than one preview matched the branch, URL, or PR identifierUse the exact slug from floo previews list
--wait exits non-zeroThe returned deploy failed or timed outInspect floo previews status ... --json and floo previews logs ...