Quickstart
1. Connect GitHub and create the app
Sign in, open /apps/new and press Connect GitHub. Pick the repository that holds the app’s releases (private repositories work), a name and a slug, and the type: Sparkle for native macOS apps or Electron for apps using electron-updater. The slug and your username form every public URL: https://releaseflow.net/{username}/{slug}.
Creating the app installs a GitHub webhook on the repository, so published, edited and deleted releases reach ReleaseFlow right away. Feeds also re-sync in the background when their data is older than an hour, and Sync Releases on the app page syncs on demand.
2. Tag a release
ReleaseFlow reads published GitHub releases and their assets; drafts are ignored. The tag is the version (a leading v is dropped), so use SemVer:
git tag v1.2.0
git push origin v1.2.0
# Then publish a GitHub release for the tag and attach the build files
# (for example with: gh release create v1.2.0 dist/*)Attach the files each platform needs:
- macOS: a
.zipfor updates (plus a.dmgfor first installs if you want one). Sparkle apps add the.zip.sigsignature, see the Sparkle guide. - Windows: the
.exeinstaller (or.msi). - Linux:
.AppImage,.debor.rpm. - Electron: the
latest*.ymlfiles and.blockmaps electron-builder writes, see the Electron guide.
Tags containing alpha land in the alpha channel, tags containing beta or rc in beta, everything else in stable. See Channels.
3. Get the URLs
The app page in the dashboard lists every URL with a copy button. The public ones follow these shapes:
| What | URL |
|---|---|
| Download page | https://releaseflow.net/{username}/{slug} |
| Download (detects the OS) | https://releaseflow.net/{username}/{slug}/download |
| Download one platform | https://releaseflow.net/{username}/{slug}/download/{platform} |
| Releases JSON | https://releaseflow.net/{username}/{slug}/releases |
| Sparkle appcast | https://releaseflow.net/{username}/{slug}/sparkle/appcast.xml |
| Electron update check | https://releaseflow.net/{username}/{slug}/update/{platform}/{version} |
| Checkout | https://releaseflow.net/{username}/{slug}/checkout |
| Customer portal | https://releaseflow.net/{username}/{slug}/portal |
{platform} is darwin, windows or linux (aliases such as mac, win and appimage work too). Downloads accept ?arch=arm64 or ?arch=x64 and ?channel=beta.
From a script or CI, read the same list from the REST API with an API key from Settings → API Keys:
curl https://releaseflow.net/api/rest/apps/myapp/urls \
-H "x-api-key: rf_..."import { configure, Apps } from "@releaseflow/sdk";
configure({ apiKey: process.env.RELEASEFLOW_API_KEY! });
const { data: urls } = await Apps.releaseflowGetUrls({
path: { slug: "myapp" },
});
console.log(urls?.sparkle?.appcast ?? urls?.electron?.darwin);