Connect a Repository
SCADABLE builds firmware from your GitHub repo. To do that, it needs read access to your source and the ability to receive webhook events when you push tags. Both come from a single GitHub App install.
What gets installed
The App is published as scadable at App ID 3647473. Public install URL:
https://github.com/apps/scadable/installations/new
You can reach the same flow from inside the dashboard: namespace settings, "Connected Repository" panel, "Connect existing repo."
Permissions
The App requests the minimum surface required to build and ship firmware:
| Permission | Scope | Why |
|---|---|---|
| Contents | Read | Clone source at the tag SHA to build the artifact. |
| Metadata | Read | Required by GitHub for any App; lists repos visible to the install. |
| Webhooks | Receive | push, release, and installation events drive the build pipeline. |
The App does not request write access to your code, your issues, or your pull requests. v1 is read-only. If a future feature needs write (for example, the Phase 2 service-agents PR-opening flow), it will be a separate, opt-in permission upgrade that you approve in GitHub's UI.
Repo selection
GitHub Apps install per-account or per-org, with per-repo selection inside the install:
- All repositories is supported but not recommended. SCADABLE only acts on repos you've linked to a namespace, so a wide install grants visibility you don't need.
- Selected repositories is the default in the install flow. Pick only the repos you intend to ship firmware from. You can add more later from your GitHub settings page (Settings, Applications, Configure on
scadable).
After install
- GitHub redirects back to the dashboard.
- The dashboard lists the repos the App can see in the install.
- Pick the repo to link to this namespace. One namespace links to one repo. (One repo can link to multiple namespaces, e.g. staging vs production.)
- The dashboard registers a webhook subscription on
pushandreleaseevents. - Done. Push a tag (
git tag v0.1.0 && git push --tags) to kick off the first build.
Build trigger semantics
The build pipeline reacts to:
releaseevents withaction: published. Preferred. The release name is the version that shows up in the dashboard.pushevents with a tag ref matchingvX.Y.Z. Fallback for repos that tag without using GitHub Releases.
A push to a branch (without a tag) does not trigger a build. CI on your side can still run on every push; SCADABLE only ships releases.
If you need a release that does not match vX.Y.Z, file an issue. Pre-release suffixes (v1.0.0-rc1, v1.0.0-beta) are supported and are flagged as pre-release in the dashboard.
Disconnect
Two ways to revoke access:
- From the dashboard. Namespace settings, "Connected Repository," "Disconnect repo." This removes the link and stops triggering builds. The GitHub App stays installed (in case you have other repos using it).
- From GitHub. Settings, Applications, Configure on
scadable, "Uninstall." This removes the App entirely from your account or org. All linked namespaces lose their build trigger immediately.
Disconnecting does not delete past releases or roll back fleets. Devices continue running whatever firmware they last applied.
Troubleshooting
"Repo doesn't appear in the dashboard list." The App install is per-account. If your repo is in a different org than the one you installed into, install the App into that org as well.
"Pushed a tag, no build started." Check that the tag matches vX.Y.Z and that the repo is linked to a namespace. The Releases view in the dashboard logs every webhook receipt; if there's no entry, the webhook never arrived (check GitHub's webhook delivery log on the App settings page).
"Build started but failed at clone." Usually means the App was uninstalled or the install was scoped to "Selected repositories" and this repo was removed from the selection. Reinstall or re-add the repo.
For everything else, see Troubleshooting.
Updated 5 days ago
