Releases: harness-home/harness-ai-desktop
Release list
Harness AI v0.1.10
Harness AI for Windows x64 — the desktop client hosts the DeepSeek Harness
runtime in-process, on loopback.
What changed
Changed
- The client talks to the hosted service by default. Until now a packaged
installer defaulted tohttp://localhost:8720, which is a server nobody who
installs this has: every shipped client sat there unable to sign in. Packaged
builds now default tohttps://api.harnessai.io, and a development run still
defaults to the local server, sopnpm devkeeps talking to the one you just
started. serverUrljoinsharness-ai.config.json. It follows the same
precedence the plugin registry does — environment variable, then the config
file, then the built-in default — so a self-hosted deployment points its
clients at its own service by editing one line on an installed machine.
Running your own server does not require your own build of the client.
Full commit log · CHANGELOG.md
Install
Download HarnessAI-0.1.10-x64-Setup.exe and run it.
Important
This installer is not code-signed. Windows SmartScreen will warn on first run.
Verify the SHA-256 below before installing — in PowerShell:
Get-FileHash .\HarnessAI-0.1.10-x64-Setup.exe -Algorithm SHA256
29e8dd407c4f601da3896eaadb65770a08f66acfc59974de8cdc00a71d387dd7 *HarnessAI-0.1.10-x64-Setup.exe
latest.yml and the blockmap are attached for the in-app updater; you do not
need to download them by hand.
Harness AI v0.1.9
Harness AI for Windows x64 — the desktop client hosts the DeepSeek Harness
runtime in-process, on loopback.
What changed
Changed
- Nothing, on purpose. This release carries no code changes at all: it
exists so the update path can be watched running end to end against a real
feed — an installed client one version behind should find it by itself,
download it, and ask what to do with it. If you are already on 0.1.8 there is
nothing here for you but that check.
Full commit log · CHANGELOG.md
Install
Download HarnessAI-0.1.9-x64-Setup.exe and run it.
Important
This installer is not code-signed. Windows SmartScreen will warn on first run.
Verify the SHA-256 below before installing — in PowerShell:
Get-FileHash .\HarnessAI-0.1.9-x64-Setup.exe -Algorithm SHA256
7cce29ac0e26c1ed548b7525db261d1756bc1a1024d3fcf12dae95cb9a1c3c28 *HarnessAI-0.1.9-x64-Setup.exe
latest.yml and the blockmap are attached for the in-app updater; you do not
need to download them by hand.
Harness AI v0.1.8
Harness AI for Windows x64 — the desktop client hosts the DeepSeek Harness
runtime in-process, on loopback.
What changed
Changed
- The client has a new icon. The taskbar, the tray and the installer now
show a white whale on DeepSeek blue, in place of the flat lettermark — the
runtime’s own figure, inverted. Every size is drawn from the outline rather
than shrunk from one bitmap, so the 16-pixel tray copy is a rendering of the
mark and not a blur of it.
Fixed
- The window frame follows the theme you picked. The title bar is drawn by
the operating system from the application's theme, which until now was
whatever the desktop was set to: choosing Light in Appearance on a dark-mode
desktop left a black caption bar sitting on top of a white app. The shell now
mirrors the theme preference onto the native frame, live — switching in
Settings repaints the title bar with the rest of the window, and "Follow
system" still follows the system in both directions.
Full commit log · CHANGELOG.md
Install
Download HarnessAI-0.1.8-x64-Setup.exe and run it.
Important
This installer is not code-signed. Windows SmartScreen will warn on first run.
Verify the SHA-256 below before installing — in PowerShell:
Get-FileHash .\HarnessAI-0.1.8-x64-Setup.exe -Algorithm SHA256
776c9a05f26acbca3edb6db5a4dca57fbd9fce29ed4ef7c3ce7dce84e5cf3495 *HarnessAI-0.1.8-x64-Setup.exe
latest.yml and the blockmap are attached for the in-app updater; you do not
need to download them by hand.
Harness AI v0.1.7
Harness AI for Windows x64 — the desktop client hosts the DeepSeek Harness
runtime in-process, on loopback.
What changed
Added
- Updates now tell you about themselves. When a new version has finished
downloading, the client asks what to do with it: restart and install, leave it
for the next time you quit, or cancel it. Cancelling actually cancels — the
installer is already on disk at that point, so an answer that only closed the
window would still have installed the update when you next quit; it turns the
quit-time install off and the tray says so. Closing the dialog counts as
cancelling, because the one thing silence cannot mean is "restart my app". - A check you asked for always answers, including "you are up to date". A
check nobody asked for stays quiet unless it has something ready to act on:
finding and downloading a version happen in the tray, without interrupting.
Changed
- The client now has a real update feed. It points at the GitHub releases
the release workflow already publishes, so an installed client can find,
download and install a new version by itself — until now every shipped build
carried a placeholder host and updates were switched off. - Every 0.x release is published as a pre-release, which update clients skip by
default, so a preview build opts into them deliberately. A 1.0.0 build will
stop accepting them without any further change, rather than quietly keeping
its users on the preview channel.
Full commit log · CHANGELOG.md
Install
Download HarnessAI-0.1.7-x64-Setup.exe and run it.
Important
This installer is not code-signed. Windows SmartScreen will warn on first run.
Verify the SHA-256 below before installing — in PowerShell:
Get-FileHash .\HarnessAI-0.1.7-x64-Setup.exe -Algorithm SHA256
2b5cdc65a60ab2794ba9cb779cd80cd7c14052c0bff66ba127c047b7f473259e *HarnessAI-0.1.7-x64-Setup.exe
latest.yml and the blockmap are attached for the in-app updater; you do not
need to download them by hand.
Harness AI v0.1.6
Harness AI for Windows x64 — the desktop client hosts the DeepSeek Harness
runtime in-process, on loopback.
What changed
Added
harness-ai.config.json, beside the executable. Settings that belong to a
network rather than to a person can now be corrected on an installed machine
instead of in a new build. The first of them ispluginRegistry: where the
public npm registry is slow or unreachable, the plugin market can be pointed
at a mirror of it. The integrity re-check reads from the same registry the
tarball comes from, so a mirror serving different bytes than the catalog
recorded is still refused. A malformed file falls back to the defaults and
says why in the log;HARNESS_PLUGIN_REGISTRYoverrides it for one run.
Changed
- Installation takes 12 seconds instead of 299, because the application is
packaged as an asar archive: 105 files land on disk instead of 19,691. The
bytes are the same — install cost is paid per file, to the installer creating
each one and to the virus scanner reading it — which is also why the first
launch after installing dropped from 39 s to 3 s. Native modules and anything
spawned as a process (rg.exe,OpenConsole.exe) stay unpacked beside the
archive, and the packaging gate now verifies that rather than assuming it. - Source maps and type declarations are no longer packaged — 7,285 of the
19,691 files an install used to write, and nothing in a packaged client reads
either one; only a debugger and a compiler do, and neither is present in an
installed app. On its own that took the install from 299 s to 210 s, which is
what asar was then applied on top of. The 53 unused Chromium language packs
are gone too (this client ships two UI languages), worth 45 MB and, measurably,
no time at all. The download is 139.8 MB → 115.0 MB.
Fixed
- CommonJS module resolution no longer depends on a symlink farm. The
runtime reads package metadata withcreateRequire()against the composed
tree's base — the profile directory — and reached the installed packages only
through symlinks thatdsh-app-bootwrites under the dsh home. Those links
point at whichever build started last, so moving the installation, or having
more than one build, left them dangling; resolution then failed, the caller
treated the failure as "this is not a client package" and cached it, and the
whole web UI composed to nothing without a single error in the log. Resolution
now falls back to the installation's ownnode_modulesafter a genuine
failure, which is also what let asar be turned on at all.
Full commit log · CHANGELOG.md
Install
Download HarnessAI-0.1.6-x64-Setup.exe and run it.
Important
This installer is not code-signed. Windows SmartScreen will warn on first run.
Verify the SHA-256 below before installing — in PowerShell:
Get-FileHash .\HarnessAI-0.1.6-x64-Setup.exe -Algorithm SHA256
92e994c548a19a3e3d39f21321480bb94e75e8fb6faac2549bc64a2e438e8fff *HarnessAI-0.1.6-x64-Setup.exe
latest.yml and the blockmap are attached for the in-app updater; you do not
need to download them by hand.
Harness AI v0.1.5
Harness AI for Windows x64 — the desktop client hosts the DeepSeek Harness
runtime in-process, on loopback.
What changed
First public release, covering everything built since the shell was scaffolded.
Windows x64 only, and the installer is not code-signed — SmartScreen will
warn on first run; the release notes carry the SHA-256 to check against.
Added
- The DeepSeek Harness runtime, hosted in-process. A desktop profile is
composed from the official bundle layers and thedshHost boots inside the
Electron main process — no child runtime, no second Node installation. It
binds127.0.0.1:43110, moving to the next free port if that one is taken. - The upstream Web UI, embedded, with navigation locked to loopback and our
own features layered on as Cordis plugins: brand and themes, the account
panel, the plugin market panel, a native workspace picker, and a Windows ACL
PowerShell sandbox runner. - Account and device identity. Sign-in from inside the app, tokens in secure
storage, device facts surfaced in the account dialog, revocable server-side. - Hosted sessions. Local session events mirror to
harness-ai-serverover
an outbound device link, so the same conversation can be read and continued
from the mobile client. Credential-shaped strings are masked before upload and
sessions whose working directory hits the denylist are never synced. - Attachment sync. Images the agent produced are content-addressed, uploaded
on a channel of their own behind the events, deduplicated per account and
capped by a server-side quota. - Remote control. Questions and approvals bridge to the hosting link, and
remote create-session commands are honoured, so work can be settled from a
phone. - The plugin market, read-only catalog through the loopback bridge, with
install and removal into the profile, provenance, downloads, license and an
installable filter. - A supply-chain gate in front of every install — the runtime's permissions
govern tool calls, not the code a plugin ships. Risk flags on each entry, a
disclosure gate that states a plugin runs with the same access as the client,
an integrity re-check against the registry before anything is written,
--ignore-scriptswritten explicitly, a capability report afterwards, and an
install journal that restores the profile manifest after a failure or crash. harness-ai://deep links, so the website can hand over a catalog id —
never a package name and version — for the client to resolve and confirm.- Application updates with a tray entry, never installed behind your back.
- Reliability surfaces: single-instance lock, crash evidence collected from
the previous run, named startup stages that report which one failed, a
recovery page offering retry / open logs / quit, secret-masked file logs, and
a system tray with tray-resident lifecycle. - Packaging: an NSIS Windows target behind an
afterPackgate that verifies
the packaged tree and the full runtime module closure, plus a license
allowlist gate that generatesTHIRD_PARTY_NOTICES.md. - Localization groundwork for
zh-CNanden-US.
Changed
- The startup health gate measures progress rather than wall-clock time —
20 s without progress, 180 s absolute — after a flat timeout proved impossible
to set correctly: every value that was long enough for a slow machine was also
long enough to make a real hang feel like a hang. - The update feed host is a sentinel on the reserved
.invalidTLD until the
distribution location is decided, so no shipped client ever fetches a domain
the project does not own.
Fixed
- Two upstream code paths spawned Node through
process.execPath, which
under Electron means a second copy of the application: the native
directory-picker worker (fixed with achild_processshim) and the Windows
ACL PowerShell sandbox runner (fixed with a trampoline). Symptom was empty
output or timeouts from pwsh tools. - A broken profile plugin could block startup; it is now quarantined instead,
and the quarantine record survives a refused re-enable. - Packaging shipped an incomplete runtime closure:
dshpackages declare their
siblings as peer dependencies and electron-builder walks onlydependencies,
so the app booted from the repository and failed from a real install. - Portals did not unmount and dialogs would not close, because plugins each
carried their own React DOM copy. - Hosting sync could wedge, and server-side gaps went unrepaired.
Build
- The shared wire contracts come from npm as
@harness-ai/contracts
instead of a filesystem link to a sibling checkout, so a plain clone installs
and builds. - Every
@deepseek-ai/*package is pinned through a pnpm catalog, so an
upstream upgrade is a one-line change rather than an edit across thirty
dependency entries. - GitHub Actions run typecheck, the unit suite and a production build on Windows
for every change, and build the installer from av*tag. - A plugin
.gitignorepattern was excludingsrc/client/lib/— source, not
build output — so two files had never been committed and a fresh clone could
not typecheck.
Full commit log · CHANGELOG.md
Install
Download HarnessAI-0.1.5-x64-Setup.exe and run it.
Important
This installer is not code-signed. Windows SmartScreen will warn on first run.
Verify the SHA-256 below before installing — in PowerShell:
Get-FileHash .\HarnessAI-0.1.5-x64-Setup.exe -Algorithm SHA256
d231dc41fe7ac7f0340b75936fbd1ddb3f68eba885fb5ae1fb1893bea3712e9e *HarnessAI-0.1.5-x64-Setup.exe
latest.yml and the blockmap are attached for the in-app updater; you do not
need to download them by hand.