Repository navigation
Releases: ly-solutions/harnessly
Release list
v0.16.86
Install
Docker: docker pull ghcr.io/ly-solutions/harnessly:0.16.86 (the image is latest too, and with-agents
adds Claude Code and Codex). Binaries: take the archive of your system below, harnessly_0.16.86_<os>_<arch>.tar.gz
(it holds harnessly, runtime and agent). How to run, verify and update:
docs/deploy.md.
Changelog
Features
- 99f0162 feat(agents): the harnessly CLI, and Claude and Codex get the boards, artifacts and workspace skills out of the box
- 532eb8c feat(preview): a standalone runtime opens the preview without a gateway
- 4f57730 feat(web): the agents workspace is the page; English by default with a Russian dictionary, server texts follow RUNTIME_LOCALE
- 706a97a feat(web): the open web page served by a standalone runtime; English messages with RUNTIME_LOCALE (TCK-3061)
- d146b3c feat: module github.com/ly-solutions/harnessly, release builds with the page, boards and artifacts in the page, Docker/compose/Helm/Argo CD (TCK-3061)
Bug fixes
- 228912c fix(docker): copy pnpm-workspace.yaml before install so pnpm 11 knows the skipped native builds
- bebfe51 fix(docker): whisper-server builds from the Debian 11 archive
- 978db88 fix(docker): whisper-server takes the updates and security suites of the Debian 11 archive too
- 28d4752 fix: a message counts as sent only once it left the input line (lost Enters pressed again, never retyped), Enter queues to the end of the turn, question cards answer by chat; design pages, kits by version and releases
- d611920 fix: answer a new agent's folder trust dialog, terminal tabs show their terminal, Codex code-mode steps, gzip static files
- 7544169 fix: install path for a public server — Codex works with no extra settings, compose builds and takes public URLs, Codex sandbox off inside the container, deploy docs
- 3019c16 fix: queued messages are delivered or fail visibly, an open conversation marks its answer as seen (TCK-3143)
Other changes
- 938c21f Initial public release
Verify
cosign verify-blob checksums.txt --bundle checksums.txt.sigstore.json \
--certificate-identity "https://github.com/ly-solutions/harnessly/.github/workflows/release.yml@refs/tags/v0.16.86" \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
sha256sum --ignore-missing -c checksums.txt
gh attestation verify harnessly_0.16.86_linux_amd64.tar.gz --repo ly-solutions/harnesslyAll changes, including those the notes leave out: CHANGELOG.md.
v0.16.42
Install
Docker: docker pull ghcr.io/ly-solutions/harnessly:0.16.42 (the image is latest too, and with-agents
adds Claude Code and Codex). Binaries: take the archive of your system below, harnessly_0.16.42_<os>_<arch>.tar.gz
(it holds harnessly, runtime and agent). How to run, verify and update:
docs/deploy.md.
Changelog
Verify
cosign verify-blob checksums.txt --bundle checksums.txt.sigstore.json \
--certificate-identity "https://github.com/ly-solutions/harnessly/.github/workflows/release.yml@refs/tags/v0.16.42" \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
sha256sum --ignore-missing -c checksums.txt
gh attestation verify harnessly_0.16.42_linux_amd64.tar.gz --repo ly-solutions/harnesslyAll changes, including those the notes leave out: CHANGELOG.md.
v0.16.25
Install
Docker: docker pull ghcr.io/ly-solutions/harnessly:0.16.25 (the image is latest too, and with-agents
adds Claude Code and Codex). Binaries: take the archive of your system below, harnessly_0.16.25_<os>_<arch>.tar.gz
(it holds harnessly, runtime and agent). How to run, verify and update:
docs/deploy.md.
Changelog
Verify
cosign verify-blob checksums.txt --bundle checksums.txt.sigstore.json \
--certificate-identity "https://github.com/ly-solutions/harnessly/.github/workflows/release.yml@refs/tags/v0.16.25" \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
sha256sum --ignore-missing -c checksums.txt
gh attestation verify harnessly_0.16.25_linux_amd64.tar.gz --repo ly-solutions/harnesslyAll changes, including those the notes leave out: CHANGELOG.md.
v0.16.24
Install
Docker: docker pull ghcr.io/ly-solutions/harnessly:0.16.24 (the image is latest too, and with-agents
adds Claude Code and Codex). Binaries: take the archive of your system below, harnessly_0.16.24_<os>_<arch>.tar.gz
(it holds harnessly, runtime and agent). How to run, verify and update:
docs/deploy.md.
Changelog
Verify
cosign verify-blob checksums.txt --bundle checksums.txt.sigstore.json \
--certificate-identity "https://github.com/ly-solutions/harnessly/.github/workflows/release.yml@refs/tags/v0.16.24" \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
sha256sum --ignore-missing -c checksums.txt
gh attestation verify harnessly_0.16.24_linux_amd64.tar.gz --repo ly-solutions/harnesslyAll changes, including those the notes leave out: CHANGELOG.md.
v0.16.16 — machine check, your own speech server
New
- Machine check. Settings → «Machine check» lists only what is not in order on the machine, with the command that fixes it.
- Your own speech server. Voice input can use an OpenAI-compatible transcription server of your own; its key is kept on the machine (mode 600) and is sent only to the address it was saved for — changing the URL needs the key again.
Install
Docker: docker pull ghcr.io/ly-solutions/harnessly:0.16.16 (the image is latest too, and with-agents
adds Claude Code and Codex). Binaries: take the archive of your system below, harnessly_0.16.16_<os>_<arch>.tar.gz
(it holds harnessly, runtime and agent). How to run, verify and update:
docs/deploy.md.
Changelog
Verify
cosign verify-blob checksums.txt --bundle checksums.txt.sigstore.json \
--certificate-identity "https://github.com/ly-solutions/harnessly/.github/workflows/release.yml@refs/tags/v0.16.16" \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
sha256sum --ignore-missing -c checksums.txt
gh attestation verify harnessly_0.16.16_linux_amd64.tar.gz --repo ly-solutions/harnesslyAll changes, including those the notes leave out: CHANGELOG.md.
v0.16.15 — self-updating machines, sites, voice settings
New
- Machines update themselves. Machines of a hub take a new release on their own, and the
harnesslycommand comes with them. Settings → Updates shows the version and how to update a standalone install. - Publish a site. A hub can serve static sites (
harnessly site deploy|list|versions|rollback, a «Publish» button in a design's header), each owned by its creator, files kept per space. - Voice input settings. Settings → Voice input: the machine's recognition model, this browser's microphone and dictation language.
- One sidebar for all machines. Chats, folders and favorites are the same through any machine; a new chat's machine is picked in the model menu.
- Board leases for designs. Two chats editing one board no longer overwrite each other; a lost edit says so and offers a re-read or a variant.
- Delete a design project from the library, with a confirmation; only its owner can, and the folder goes to
.trash/. - Fixes: a background agent's permission prompt gets its card after the turn ended; «Send now» sends the whole queue as one message; a chat whose transcript is missing no longer stalls the runtime; agents start in any login shell, fish too; an open sign-in menu or model picker in the agent's terminal is closed before a message.
Install
Docker: docker pull ghcr.io/ly-solutions/harnessly:0.16.15 (the image is latest too, and with-agents
adds Claude Code and Codex). Binaries: take the archive of your system below, harnessly_0.16.15_<os>_<arch>.tar.gz
(it holds harnessly, runtime and agent). How to run, verify and update:
docs/deploy.md.
Changelog
Verify
cosign verify-blob checksums.txt --bundle checksums.txt.sigstore.json \
--certificate-identity "https://github.com/ly-solutions/harnessly/.github/workflows/release.yml@refs/tags/v0.16.15" \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
sha256sum --ignore-missing -c checksums.txt
gh attestation verify harnessly_0.16.15_linux_amd64.tar.gz --repo ly-solutions/harnesslyAll changes, including those the notes leave out: CHANGELOG.md.
v0.16.5 — Sinopia Design, voice input, ask a human, signed releases
New
- Update notice for self-hosted runtimes. A standalone runtime built from a release checks the project's GitHub
releases at start and every 12 hours, and shows a quiet "new version" notice with a link to the notes. It sends
nothing but standard request headers. Turn it off withRUNTIME_UPDATE_CHECK=0. - Signed GitHub releases and a multi-arch image. A
vX.Y.Ztag publishes archives for linux and macOS (amd64,
arm64) withchecksums.txtsigned keyless with cosign (checksums.txt.sigstore.json) and a build provenance
attestation, plusghcr.io/ly-solutions/harnesslyfor linux/amd64 and linux/arm64 (X.Y.Z,X.Y,latest, and
the-with-agentsvariants), signed and attested. Verification commands are in docs/deploy.md. - Sinopia Design. A design space for prototypes, sites and presentations, kept as plain folders on your machine.
The board engine is bring-your-own: runharnessly design engine fetchon a machine with Claude Code logged in to
your own account. See docs/design-engine.md. - Voice input. A microphone in the message field with built-in recognition (whisper.cpp). The model downloads on
first use; audio stays on the machine. Needsffmpeg(included in the Docker images). See docs/voice.md. - Ask a human.
harnessly askandharnessly ask approveput a question or an approval in a Telegram chat with
buttons; the person answers in Telegram or on the page. Contacts and approvers are set in the People section of
Settings, Notifications.
Changed
- The Docker quick start is now
docker run ... ghcr.io/ly-solutions/harnessly:latest(no local build). The README
and docs/deploy.md start with Docker, release binary and source quick starts. - The hub is documented for self-hosting: spaces, invitations, sign-in by email code, passkey, GitHub, Yandex ID or
OIDC, and machines opened at<id>.<machines domain>whenHUB_RUNTIME_DOMAINis set. The hub and its machine
image are still built locally from this repository (docker compose -f compose.hub.yaml up -d --build).
Upgrade notes
Nothing updates itself; how you update is how you installed (docs/deploy.md).
-
Docker: pull the new image and recreate the container. The home volume keeps your password, workspaces and logins.
docker pull ghcr.io/ly-solutions/harnessly:latest docker rm -f harnessly docker run -d --name harnessly -p 127.0.0.1:8022:8022 -v harnessly-home:/home/agent ghcr.io/ly-solutions/harnessly:latest
With a pinned tag, put the new version in both places. With compose:
docker compose pull && docker compose up -d. -
Binary: download and verify the new archive, replace
runtime(andagent,harnesslyif you use them) and
restart. The data in~/.harnesslyis kept. Under systemd the restart keeps tmux and the agents running. -
From source:
git pull && make run(ormake installand restart the service).
/api/health reports the running version. Machines carried by a hub are updated through the hub.
Install
Docker: docker pull ghcr.io/ly-solutions/harnessly:0.16.5 (the image is latest too, and with-agents
adds Claude Code and Codex). Binaries: take the archive of your system below, harnessly_0.16.5_<os>_<arch>.tar.gz
(it holds harnessly, runtime and agent). How to run, verify and update:
docs/deploy.md.
whisper-server-v1.9.5-r1
whisper.cpp (MIT) whisper-server, built from the commit pinned in the Dockerfile.
v0.15.46
Changelog
Features
- 99f0162 feat(agents): the harnessly CLI, and Claude and Codex get the boards, artifacts and workspace skills out of the box
- d1ce4ed feat(preview): a standalone runtime opens the preview without a gateway
- 4f57730 feat(web): the agents workspace is the page; English by default with a Russian dictionary, server texts follow RUNTIME_LOCALE
- 706a97a feat(web): the open web page served by a standalone runtime; English messages with RUNTIME_LOCALE (TCK-3061)
- d146b3c feat: module github.com/ly-solutions/harnessly, release builds with the page, boards and artifacts in the page, Docker/compose/Helm/Argo CD (TCK-3061)
Bug fixes
- 228912c fix(docker): copy pnpm-workspace.yaml before install so pnpm 11 knows the skipped native builds
- e3df112 fix: a message counts as sent only once it left the input line (lost Enters pressed again, never retyped), Enter queues to the end of the turn, question cards answer by chat; design pages, kits by version and releases
- d611920 fix: answer a new agent's folder trust dialog, terminal tabs show their terminal, Codex code-mode steps, gzip static files
- 7544169 fix: install path for a public server — Codex works with no extra settings, compose builds and takes public URLs, Codex sandbox off inside the container, deploy docs
- e076f48 fix: queued messages are delivered or fail visibly, an open conversation marks its answer as seen (TCK-3143)
Other changes
- 938c21f Initial public release
- 08c931c chore(deps): bump github.com/andybalholm/brotli from 1.2.0 to 1.2.6 in the go-modules group (#4)
- 2caebd3 chore(deps): bump goldmark to 1.8.6 and golang.org/x/text to 0.43.0 (#1)
- 359cfa0 ci: area labels, Conventional Commit titles, Dependabot auto-merge, stale bot; fix the expired preview golden (#3)
- 3c89193 docs: README, docs/, community files, lint, CodeQL, Scorecard, GoReleaser and brand (TCK-3061)
- 7876abf sync: internal main 03bdc2194cbef3a624797acd0aa938fd8ac84ce5
- 086a24c sync: internal main 10b18620b89492af63ebce1b5f39251bfd23fdfa
- d43eece sync: internal main 1a670bc050181eea7fba1b6f1cc0dcf72dade84c
- 0f0f6a4 sync: internal main 2e0217e9bbbf77ad8632020d38c99d4d667aa6e7
- 3bc5128 sync: internal main 89b719f1c8a18ea64420d739874b744aa1182d2f
- 86c9aed sync: internal main 92b8464ecbd4bec376a1f3f4f065a219f73fca07
- 8efdc15 sync: internal main c6e456e5f7cca6029f1eafbecc611a9db2ddbbbc
- 9ef086b sync: internal main e2458c455b7fb3486e757d352ce805fbefe9c098
- d08a748 test(voice): the closing fake service ends its side cleanly (TCK-3061)
- 0f6c78e test: goldens run under the umask they were taken with; the standalone run waits for its panes (TCK-3061)
v0.15.40
Changelog
Other changes
- 08c931c chore(deps): bump github.com/andybalholm/brotli from 1.2.0 to 1.2.6 in the go-modules group (#4)
- 2caebd3 chore(deps): bump goldmark to 1.8.6 and golang.org/x/text to 0.43.0 (#1)
- 359cfa0 ci: area labels, Conventional Commit titles, Dependabot auto-merge, stale bot; fix the expired preview golden (#3)
- 3bc5128 sync: internal main 89b719f1c8a18ea64420d739874b744aa1182d2f