Skip to main content
Subcommands of floo apps github. A connected repo deploys to dev on every push to its branch.

connect

Connect a GitHub repo for auto-deploy. connect creates the named app if it does not exist and runs an initial deploy unless you pass --no-deploy. First, a human installs the floo GitHub App on the repo’s owning account and links it to your floo org; see Granting the floo GitHub App access. If either step is missing, connect opens a setup link and waits for the human to finish. Run floo init and floo preflight, then commit and push the generated configuration before connecting. The initial deploy reads the pushed branch, so connecting first can deploy incomplete source or configuration.

Flags

Agent / CI usage

Run connect with --no-browser (implied by --json) and relay the printed setup link to a human, who does two browser-only actions: install the App on the account that owns the repo, and authorize floo with GitHub through that link. An organization installation does not cover a personal-account repo, or the reverse. If the App was installed outside a setup link, run floo apps github setup --no-browser and relay its link. Re-run connect after the human finishes.

Examples

JSON output

deploy is the deployment record from the API. deploy_status is live, superseded, cancelled, or failed; only live sets deployed: true and url. A failed deploy returns success: false with DEPLOY_FAILED and the same data. With --no-deploy, deployed is false and the deploy fields are omitted.

disconnect

Disconnect a GitHub repo from an app.

Flags

JSON output


status

Show the GitHub connection: repo, branch, connected time, and what floo did with the last push.

Flags

JSON output

An app with no connection returns {"connected": false} as a success. last_push is null until floo receives a push for the app. The same object is on GET /v1/apps/{app_id}/github/connection.

Why a push did not deploy

floo records the last push for each app, on any branch. outcome says what happened to it: needs_action is true only for deploy_on_push_off and repo_linked_to_several_apps: no push deploys until you fix them. A later push overwrites the record, so compare commit_sha with the commit you pushed. If you pushed and last_push did not change, the push did not reach this app: check the repo and branch above, then grant the floo GitHub App access. floo doctor push prints the same summary and exits 1 when needs_action is true.

setup

Mint a fresh setup link that binds the floo GitHub App installation to your floo org. Select the intended floo org first. Run it when the App was installed outside a setup link and connect fails with GITHUB_INSTALLATION_NOT_AUTHORIZED, or when an earlier setup link expired. A human opens the link and authorizes floo with GitHub; floo links an installation that login can access, or shows a picker if several are available. If none is installed, the page asks the human to install the App on the repo’s owning account, and floo links it when GitHub reports the installation.

Flags

JSON output

Open setup_url once in a browser, then run connect. Without --no-browser, the CLI opens the link, waits for the binding, and returns {"linked": true, "next": "..."}.

Granting the floo GitHub App access to a repository

Connecting a repo takes two separate operations, both required. The setup link can be opened before installation; both actions require a human in a browser.

1. Grant access on GitHub

  • Choose the account that owns the repository. GitHub scopes an installation to one account: installing on an organization grants nothing for a personal-account repo, and the reverse. For acme/storefront, install on acme; for you/side-project, on your personal account.
  • Select the repository under “Repository access”. With “Only select repositories”, the repo must be in that list. An installation saved with the repo unselected reports success on GitHub and still fails connect.

2. Bind the installation to your floo org

Open the setup link from connect, or mint a fresh one for an App installed outside that flow:
Open the printed link and authorize floo with GitHub, then re-run connect. Installing from github.com without opening a setup link leaves connect failing with GITHUB_INSTALLATION_NOT_AUTHORIZED.

Which failure am I looking at?

floo apps github status reports only an existing connection, not install state, so use the error code from connect to tell these three apart.

For agents

You cannot grant GitHub access. It is a browser-only action tied to a human’s GitHub permissions; no flag, token, or retry substitutes for it. When connect fails with any code above, give a human four things: the account to install on, the repository to select, the URL, and the command to re-run. Then stop. Re-running before the human acts produces the same failure, and in a transcript repeated attempts look like progress.

Errors