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
Runconnect 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
{"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 andconnect 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
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 onacme; foryou/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 fromconnect, or mint a fresh one for an App installed outside that flow:
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. Whenconnect 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.