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:

PermissionScopeWhy
ContentsReadClone source at the tag SHA to build the artifact.
MetadataReadRequired by GitHub for any App; lists repos visible to the install.
WebhooksReceivepush, 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

  1. GitHub redirects back to the dashboard.
  2. The dashboard lists the repos the App can see in the install.
  3. 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.)
  4. The dashboard registers a webhook subscription on push and release events.
  5. 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:

  • release events with action: published. Preferred. The release name is the version that shows up in the dashboard.
  • push events with a tag ref matching vX.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:

  1. 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).
  2. 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.