Open-Source Release
This runbook fixes the public release order for Nimi open-source launches and keeps the install/update entry points aligned.
Release Tracks
runtime/vX.Y.Z: runtime GitHub release and Go module tagsdk/vX.Y.Z:@nimiplatform/sdkand@nimiplatform/dev-toolsdesktop/vX.Y.Z: desktop GitHub release@nimiplatform/nimiand@nimiplatform/nimi-*: versioned from the runtime release, not the SDK or desktop release
Nimi does not publish a separate Go registry package or Rust crate for the desktop app.
Required GitHub Secrets And Variables
Shared release gates
NIMI_LIVE_GEMINI_API_KEYNIMI_LIVE_ALIBABA_API_KEYNIMI_MODS_REPO_TOKEN(required whilenimiplatform/nimi-modsis private; fine-grained read access is enough)NIMI_LIVE_GEMINI_MODEL_ID(repo variable, optional fallback exists)NIMI_LIVE_GOLD_SUBJECT_USER_ID(repo variable, optional fallbackgold-user)NIMI_LIVE_ALIBABA_BASE_URL(repo variable, optional fallback exists)NIMI_LIVE_ALIBABA_CHAT_MODEL_ID(repo variable, optional fallback exists)
Runtime release
- No extra registry secret is required beyond
GITHUB_TOKEN - Runtime signing and
checksums.txtsigning use GitHub OIDC in.github/workflows/release-runtime.yml
npm packages
NPM_TOKEN
Desktop release
TAURI_SIGNING_PRIVATE_KEYTAURI_SIGNING_PRIVATE_KEY_PASSWORDNIMI_DESKTOP_UPDATER_PUBLIC_KEY(repo variable)NIMI_DESKTOP_UPDATER_ENDPOINT=https://install.nimi.xyz/desktop/latest.json(repo variable)NIMI_DESKTOP_MACOS_SIGNING_MODE(repo variable,developer-idby default; set toad-hocto publish unsigned-by-Apple macOS artifacts)APPLE_CERTIFICATE(required only whenNIMI_DESKTOP_MACOS_SIGNING_MODE=developer-id)APPLE_CERTIFICATE_PASSWORD(required only whenNIMI_DESKTOP_MACOS_SIGNING_MODE=developer-id)APPLE_SIGNING_IDENTITY(required only whenNIMI_DESKTOP_MACOS_SIGNING_MODE=developer-id)APPLE_ID(required only whenNIMI_DESKTOP_MACOS_SIGNING_MODE=developer-id)APPLE_PASSWORD(required only whenNIMI_DESKTOP_MACOS_SIGNING_MODE=developer-id)APPLE_TEAM_ID(required only whenNIMI_DESKTOP_MACOS_SIGNING_MODE=developer-id)
Cloudflare install gateway
CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_IDNIMI_GITHUB_RELEASES_TOKEN(optional but recommended for GitHub API rate limits)
Install Gateway
install.nimi.xyz is served by the Cloudflare Worker in apps/install-gateway/.
Public endpoints:
https://install.nimi.xyz/https://install.nimi.xyz/runtime/latest.jsonhttps://install.nimi.xyz/desktop/latest.json
Deploy it with the manual GitHub Actions workflow:
- Configure the
install.nimi.xyzcustom domain for the Worker. - Run
.github/workflows/deploy-install-gateway.yml. - Verify:
curl -fsSL https://install.nimi.xyz | sh- https://install.nimi.xyz/runtime/latest.json
- https://install.nimi.xyz/desktop/latest.json
Release Order
Use RC tags first for external rehearsal:
runtime/vX.Y.Z-rc.1sdk/vX.Y.Z-rc.1desktop/vX.Y.Z-rc.1
Stable release order:
- Deploy or refresh
install.nimi.xyz. - Push
runtime/vX.Y.Z. - Wait for
.github/workflows/release-runtime.ymlto finish. - Confirm the reusable npm workflow published:
@nimiplatform/nimi@nimiplatform/nimi-darwin-arm64@nimiplatform/nimi-darwin-x64@nimiplatform/nimi-linux-arm64@nimiplatform/nimi-linux-x64@nimiplatform/nimi-win32-arm64@nimiplatform/nimi-win32-x64
- Push
sdk/vX.Y.Z. - Wait for
.github/workflows/release.ymlto publish@nimiplatform/sdkand@nimiplatform/dev-tools. - Push
desktop/vX.Y.Z. - Wait for
.github/workflows/release.ymlto publish desktop GitHub release assets.
macOS Signing Modes
developer-id: use Apple Developer ID signing and notarization; requires the fullAPPLE_*secret setad-hoc: build macOS assets without Apple Developer ID notarization; setNIMI_DESKTOP_MACOS_SIGNING_MODE=ad-hoc
When ad-hoc mode is active, GitHub desktop release notes explicitly mark macOS assets as ad-hoc signed. Users may need to manually allow the app on first launch because Gatekeeper treats the bundle as unsigned by Apple.
Dry Runs And Smoke Checks
Run these before the first public tag:
pnpm check:release-preflightpnpm check:npm-binary-smokenode scripts/check-install-script-smoke.mjspnpm --filter @nimiplatform/install-gateway testpnpm --filter @nimiplatform/install-gateway build
Use these GitHub Actions workflows for release rehearsals:
.github/workflows/release-runtime.ymlviaworkflow_dispatchfor snapshot builds.github/workflows/release.ymlviaworkflow_dispatchwithpublish=false.github/workflows/desktop-release-dry-run.yml
Public Validation
After stable release, confirm all of the following:
curl -fsSL https://install.nimi.xyz | shinstalls the latest runtime on macOS and Linux even when the newest GitHub release is not a runtime releasenpm install -g @nimiplatform/nimiinstalls the correct platform package on supported macOS, Linux, and Windows targets- the runtime GitHub release includes archives,
checksums.txt, signatures, certificates, and SBOM assets - the desktop GitHub release includes the current workflow outputs: macOS updater archives, Windows NSIS installer assets, Linux AppImage assets, signatures, and updater metadata
- if
NIMI_DESKTOP_MACOS_SIGNING_MODE=ad-hoc, the desktop release notes and user docs clearly state that macOS assets are not Apple notarized yet - https://install.nimi.xyz/runtime/latest.json returns a complete runtime manifest
- https://install.nimi.xyz/desktop/latest.json returns a valid desktop updater manifest