How to Update Different-AI/OpenWork to the Latest Version: Complete Guide for Users and Developers
Update OpenWork using the built-in Electron auto-updater (Settings → About → Check for updates), download signed release artifacts manually from GitHub, or pull the latest source and run pnpm install followed by version bump scripts for custom builds.
OpenWork is a native desktop application built on Electron that supports both automatic and manual update workflows. This guide covers how to update different-ai/openwork to the latest version whether you're an end-user running the packaged app or a developer working from source. The update system is orchestrated through a three-layer architecture: version bump scripts, updater metadata files, and the runtime Electron auto-updater that consumes a latest.json feed.
How OpenWork Updates Work: Architecture Overview
The repository implements a coordinated release pipeline defined in the migration run-book at [scripts/migration/README.md](https://github.com/different-ai/openwork/blob/dev/scripts/migration/README.md). Understanding these layers helps troubleshoot update issues and ensures version consistency across distribution channels.
Three Core Layers
-
Version bump & release — Runs
pnpm bump:setto synchronize version fields across the monorepo, creates Git tags, and publishes artifacts. Implemented inscripts/migration/01-cut-migration-release.mjs -
Updater metadata — Stores release configuration in
apps/app/.env.migration-release, includingVITE_OPENWORK_MIGRATION_RELEASEflags and platform-specific download URLs -
Runtime updater — Electron process fetches
latest.json(generated by [.github/workflows/build-electron-desktop.yml](https://github.com/different-ai/openwork/blob/dev/.github/workflows/build-electron-desktop.yml)) to detect, download, and install new versions with signature verification
These layers ensure that users clicking "Check for updates" and users downloading release assets manually receive identical, cryptographically verified binaries.
Update OpenWork as an End-User
Method 1: Built-In Auto-Updater (Recommended)
The Electron auto-updater provides the smoothest experience with automatic signature verification and data migration.
- Launch OpenWork
- Navigate to Settings → About → Check for updates
- If newer version detected, review the version number and release notes in the dialog
- Click Install now to download the signed Electron bundle
- The app verifies the signature using the public key embedded in
latest.json, then restarts automatically
The updater behavior is configured through electron-builder and the latest.json feed produced by the CI pipeline. Periodic background checks occur automatically unless disabled.
Method 2: Manual Download for Offline or Custom Environments
Download signed artifacts directly from GitHub releases when automatic updates are unavailable:
| Platform | Asset Name Pattern | Example URL |
|---|---|---|
| macOS Apple Silicon | openwork-mac-arm64-X.Y.Z.dmg |
https://github.com/different-ai/openwork/releases/download/vX.Y.Z/openwork-mac-arm64-X.Y.Z.dmg |
| macOS Intel | openwork-mac-x64-X.Y.Z.dmg |
https://github.com/different-ai/openwork/releases/download/vX.Y.Z/openwork-mac-x64-X.Y.Z.dmg |
| Windows x64 | openwork-win-x64-X.Y.Z.exe |
https://github.com/different-ai/openwork/releases/download/vX.Y.Z/openwork-win-x64-X.Y.Z.exe |
| Linux AppImage | openwork-linux-x64-X.Y.Z.AppImage |
https://github.com/different-ai/openwork/releases/download/vX.Y.Z/openwork-linux-x64-X.Y.Z.AppImage |
Replace X.Y.Z with the target version (e.g., 0.17.1).
macOS installation example:
curl -L -o openwork.dmg \
https://github.com/different-ai/openwork/releases/download/v0.17.1/openwork-mac-arm64-0.17.1.dmg
hdiutil attach openwork.dmg
cp -R /Volumes/OpenWork/OpenWork.app /Applications/
hdiutil detach /Volumes/OpenWork
All artifacts are cryptographically signed: macOS apps are notarized by Apple, Windows binaries carry Authenticode signatures, and checksums are published alongside each release. The latest.json feed contains these hashes for automatic verification.
Update OpenWork as a Developer (Source Workflow)
For contributors and custom builds, update the local development environment using pnpm and the migration toolchain.
Standard Source Update
# Fetch latest code
git fetch origin
git checkout dev
git pull origin dev
# Install exact dependency tree (pnpm required)
pnpm install --frozen-lockfile
# Launch development server
pnpm dev
# Or use isolated worktree profile
OPENWORK_DEV_PROFILE=auto pnpm dev:worktree
The --frozen-lockfile flag ensures reproducibility using pnpm-workspace.yaml and pnpm-lock.yaml.
Manual Version Bumping (Forks and Private Releases)
When cutting a custom release, replicate the CI pipeline's version bump process:
# Bump version across all synchronized files
pnpm bump:set -- 0.18.0
# Commit and tag
git commit -am "Bump to 0.18.0"
git tag v0.18.0
git push --tags
# Build and package
pnpm run build
pnpm exec electron-builder
The pnpm bump:set command updates five files that must stay in sync, as documented in [AGENTS.md](https://github.com/different-ai/openwork/blob/dev/AGENTS.md). The resulting artifact can be tested locally or distributed through a private release channel.
Programmatic Update Operations
Trigger Update Check from Plugin Code
import { exec } from 'child_process';
// Force immediate update check
exec('pnpm run electron-updater-check', (err, stdout) => {
if (err) {
console.error('Update check failed:', err);
} else {
console.log('Updater output:', stdout);
}
});
The electron-updater-check script wraps autoUpdater.checkForUpdatesAndNotify() from the electron-updater library.
Verify Bundle Signatures Manually
# macOS: Verify Apple notarization
codesign -dv --verbose=4 /Applications/OpenWork.app | grep "Authority"
# Windows: Verify Authenticode signature
sigcheck -q -i openwork-win-x64-0.17.1.exe
These commands replicate the validation logic in scripts/migration/02-validate-migration.mjs.
Critical Source Files for Updates
| File | Purpose | Location |
|---|---|---|
scripts/migration/README.md |
Migration run-book with release orchestration steps | [scripts/migration/README.md](https://github.com/different-ai/openwork/blob/dev/scripts/migration/README.md) |
01-cut-migration-release.mjs |
Version bump execution and tag creation | scripts/migration/01-cut-migration-release.mjs |
.env.migration-release |
Updater metadata and platform URLs | apps/app/.env.migration-release |
package.json (root) |
Central version field | [package.json](https://github.com/different-ai/openwork/blob/dev/package.json) |
AGENTS.md |
Files requiring version synchronization | [AGENTS.md](https://github.com/different-ai/openwork/blob/dev/AGENTS.md) |
build-electron-desktop.yml |
CI workflow generating latest.json and artifacts |
[.github/workflows/build-electron-desktop.yml](https://github.com/different-ai/openwork/blob/dev/.github/workflows/build-electron-desktop.yml) |
Summary
- End-users: Use Settings → About → Check for updates for automatic updates, or download signed artifacts from GitHub releases for manual installation
- Developers: Run
git pull origin dev && pnpm install --frozen-lockfileto update source, thenpnpm devto launch - Custom releases: Execute
pnpm bump:set -- <version>to synchronize version fields, then build withelectron-builder - Verification: All distribution paths converge on the same
latest.jsonfeed with cryptographic signatures verified by the Electron updater - Safety: User data in
$HOME/.config/openworkis preserved across updates; migration scripts handle Tauri→Electron transition data porting
Frequently Asked Questions
Will updating OpenWork delete my data?
No. The updater preserves the user data directory at $HOME/.config/openwork before replacing the binary. The migration run-book includes data porting logic for the Tauri-to-Electron transition, ensuring seamless hand-off between major architectural versions.
Can I disable automatic updates?
Yes. Navigate to Settings → Updates → Automatic checks to disable background checking. You can also click "Remind me later" when update prompts appear. Manual installations from downloaded artifacts will not trigger automatic replacement unless you explicitly run the updater again.
Do I need to rebuild anything after updating from source?
No for end-users. Native code is pre-compiled into the Electron binary. For developers running custom builds: after git pull, always run pnpm install --frozen-lockfile to refresh any compiled native modules in the dependency tree.
Where does the updater retrieve release notes?
Release notes are generated from the changelog/ directory and embedded in the releaseNotes field of latest.json. The updater displays this content in the update dialog. Full release notes are also available on the GitHub releases page for each version tag.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →