# How to Update Different-AI/OpenWork to the Latest Version: Complete Guide for Users and Developers

> Easily update Different-AI/OpenWork to the latest version. Learn to use the auto-updater, download releases, or build from source with our complete guide.

- Repository: [Different AI/openwork](https://github.com/different-ai/openwork)
- Tags: how-to-guide
- Published: 2026-08-04

---

**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`](https://github.com/different-ai/openwork/blob/main/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/main/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:set` to synchronize version fields across the monorepo, creates Git tags, and publishes artifacts. Implemented in [`scripts/migration/01-cut-migration-release.mjs`](https://github.com/different-ai/openwork/blob/dev/scripts/migration/01-cut-migration-release.mjs)

- **Updater metadata** — Stores release configuration in [`apps/app/.env.migration-release`](https://github.com/different-ai/openwork/blob/dev/apps/app/.env.migration-release), including `VITE_OPENWORK_MIGRATION_RELEASE` flags and platform-specific download URLs

- **Runtime updater** — Electron process fetches [`latest.json`](https://github.com/different-ai/openwork/blob/main/latest.json) (generated by [[`.github/workflows/build-electron-desktop.yml`](https://github.com/different-ai/openwork/blob/main/.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.

1. Launch OpenWork
2. Navigate to **Settings → About → Check for updates**
3. If newer version detected, review the version number and release notes in the dialog
4. Click **Install now** to download the signed Electron bundle
5. The app verifies the signature using the public key embedded in [`latest.json`](https://github.com/different-ai/openwork/blob/main/latest.json), then restarts automatically

The updater behavior is configured through `electron-builder` and the [`latest.json`](https://github.com/different-ai/openwork/blob/main/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:**

```bash
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`](https://github.com/different-ai/openwork/blob/main/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

```bash

# 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`](https://github.com/different-ai/openwork/blob/main/pnpm-workspace.yaml) and [`pnpm-lock.yaml`](https://github.com/different-ai/openwork/blob/main/pnpm-lock.yaml).

### Manual Version Bumping (Forks and Private Releases)

When cutting a custom release, replicate the CI pipeline's version bump process:

```bash

# 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/main/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

```typescript
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

```bash

# 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`](https://github.com/different-ai/openwork/blob/dev/scripts/migration/02-validate-migration.mjs).

---

## Critical Source Files for Updates

| File | Purpose | Location |
|------|---------|----------|
| [`scripts/migration/README.md`](https://github.com/different-ai/openwork/blob/main/scripts/migration/README.md) | Migration run-book with release orchestration steps | [[`scripts/migration/README.md`](https://github.com/different-ai/openwork/blob/main/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`](https://github.com/different-ai/openwork/blob/dev/scripts/migration/01-cut-migration-release.mjs) |
| `.env.migration-release` | Updater metadata and platform URLs | [`apps/app/.env.migration-release`](https://github.com/different-ai/openwork/blob/dev/apps/app/.env.migration-release) |
| [`package.json`](https://github.com/different-ai/openwork/blob/main/package.json) (root) | Central version field | [[`package.json`](https://github.com/different-ai/openwork/blob/main/package.json)](https://github.com/different-ai/openwork/blob/dev/package.json) |
| [`AGENTS.md`](https://github.com/different-ai/openwork/blob/main/AGENTS.md) | Files requiring version synchronization | [[`AGENTS.md`](https://github.com/different-ai/openwork/blob/main/AGENTS.md)](https://github.com/different-ai/openwork/blob/dev/AGENTS.md) |
| [`build-electron-desktop.yml`](https://github.com/different-ai/openwork/blob/main/build-electron-desktop.yml) | CI workflow generating [`latest.json`](https://github.com/different-ai/openwork/blob/main/latest.json) and artifacts | [[`.github/workflows/build-electron-desktop.yml`](https://github.com/different-ai/openwork/blob/main/.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-lockfile` to update source, then `pnpm dev` to launch
- **Custom releases**: Execute `pnpm bump:set -- <version>` to synchronize version fields, then build with `electron-builder`
- **Verification**: All distribution paths converge on the same [`latest.json`](https://github.com/different-ai/openwork/blob/main/latest.json) feed with cryptographic signatures verified by the Electron updater
- **Safety**: User data in `$HOME/.config/openwork` is 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`](https://github.com/different-ai/openwork/blob/main/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.