Release Streams
nteract Desktop has multiple release streams for different audiences:| Stream | Tag | Trigger | Destination |
|---|---|---|---|
| Weekly preview | v{version}-preview.{sha} | Cron (Monday 9am UTC) or manual | GitHub Releases |
| Nightly | v{version}-nightly.{sha} | Cron (daily, 24h cadence) or manual | GitHub Pre-releases |
| Stable desktop | v{semver} | Manual workflow_dispatch | GitHub Releases |
| Python package | python-v{semver} | Manual tag push | PyPI + GitHub Releases |
Desktop App Release
The desktop app,runt CLI, runtimed daemon, and sidecar are all built and released together.
Automated Releases
Weekly Preview — Runs every Monday at 9am UTC:- Triggers:
.github/workflows/releases/weekly.yml - Uses:
.github/workflows/releases/release-common.yml(reusable workflow) - Tag format:
v{version}-preview.{sha} - Published to GitHub Releases
- Triggers:
.github/workflows/releases/nightly.yml - Uses:
.github/workflows/releases/release-common.yml(reusable workflow) - Tag format:
v{version}-nightly.{sha} - Published to GitHub Pre-releases
workflow_dispatch.
Artifacts
| Platform | File |
|---|---|
| macOS ARM64 (Apple Silicon) | nteract-darwin-arm64.dmg |
| macOS x64 (Intel) | nteract-darwin-x64.dmg |
| Windows x64 | nteract-windows-x64.exe |
| Linux x64 | nteract-linux-x64.AppImage |
| CLI (macOS ARM64) | runt-darwin-arm64 |
| CLI (macOS x64) | runt-darwin-x64 |
| CLI (Linux x64) | runt-linux-x64 |
macOS builds are signed and notarized. Windows builds are not code signed.
Manual Stable Release
For stable releases, maintainers trigger the workflow manually:Trigger workflow
Go to GitHub Actions and manually trigger the release workflow with the tag.
- Build for all platforms (macOS ARM64, macOS x64, Windows x64, Linux x64)
- Sign and notarize macOS builds
- Create DMGs for macOS
- Create installers for Windows and Linux
- Upload artifacts to GitHub Releases
Python Package Release
Theruntimed Python package provides bindings for the daemon and is released separately.
Package Location
The Python package lives atpython/runtimed/ and uses maturin to build wheels from the crates/runt/ Rust crate.
Release Process
The workflow will:
- Build wheels for macOS (arm64 + x64)
- Publish to PyPI via trusted publishing (OIDC)
- Create a GitHub release with wheels and
runtbinaries
PyPI publishing uses OIDC trusted publishing, so no API tokens are needed in repository secrets.
Building from Source (Development)
For local development and testing: See Building from Source for detailed instructions.Testing with Local Library Changes
To test against unpublished changes toruntimelib or jupyter-protocol, add to the root Cargo.toml:
Crate Publishing
Published crates:jupyter-protocol— Jupyter messaging protocolruntimelib— Jupyter kernel interactions over ZeroMQnbformat— Notebook parsing
Release Checklist
Desktop App Stable Release
- Update version in root
Cargo.toml - Update CHANGELOG.md with release notes
- Create and merge version bump PR
- Tag release:
git tag v{version} - Push tag:
git push origin v{version} - Trigger GitHub Actions workflow
- Verify artifacts are uploaded to GitHub Releases
- Test downloads on each platform
- Announce release (Twitter, Discord, etc.)
Python Package Release
- Update version in
python/runtimed/pyproject.toml - Create and merge version bump PR
- Tag release:
git tag python-v{version} - Push tag:
git push origin python-v{version} - Wait for workflow to publish to PyPI
- Verify package on PyPI:
pip install runtimed=={version} - Verify GitHub Release created
Rollback
If a release has critical issues:Desktop App
Python Package
Migration from runt-notebook
If you have an older install from before the nteract rebrand:CI Configuration
Release workflows are in.github/workflows/releases/:
| File | Purpose |
|------|---------||
| release-common.yml | Reusable workflow for building and uploading artifacts |
| weekly.yml | Weekly preview release (Monday 9am UTC) |
| nightly.yml | Nightly pre-release (daily, 24h cadence) |
| python-package.yml | Python package release (triggered by python-v* tags) |
See the workflow files for detailed build steps and configuration.
Signing and Notarization
macOS
macOS builds are signed and notarized using Apple’s developer certificates:- Signing: Uses
codesignwith Apple Developer ID Application certificate - Notarization: Uses
xcrun notarytoolto submit to Apple’s notary service - Stapling: Attaches the notarization ticket to the DMG
APPLE_CERTIFICATEAPPLE_CERTIFICATE_PASSWORDAPPLE_IDAPPLE_TEAM_IDAPPLE_PASSWORD(app-specific password)
Windows
Windows builds are not currently code signed. Users may see SmartScreen warnings on first run.Next Steps
- Building from Source - Set up your development environment
- Contributing Guidelines - Contribution workflow
- GitHub Releases - View published releases