Skip to content

ThinkWatch Lite 2026.10.26

Latest

Choose a tag to compare

@github-actions github-actions released this 20 Oct 12:44
22f7673

Upgrade notes:

  • The bundled core is now 0.79.0 and the control-plane protocol is 51. A remote server running an older core must be upgraded to 0.79.0 to stay connected.
  • Nothing is cleared; the request history, stored payloads and settings carry over.
  • Settings > Failover: "Wait for a free slot at most" is now "Wait at most" and covers every kind of wait, with a default of 120 seconds. A configuration that set the old value (failover.slot_wait_secs) opens in safe mode; Fix removes it, and the new setting can then be set again.

Rate limits no longer stop the agent:

  • When an upstream answers 429, the gateway pauses that upstream for the time it asks for (or backs off 5, 10, 20, 40, then 60 seconds) and holds its requests instead of returning the error. When the pause ends, one request goes first; the rest follow once it gets through. A request that can go to another upstream right away goes there.
  • A conversation that stays on an upstream for its prompt cache waits for it when it can recover in time. A single upstream is waited for as well.
  • Streaming clients receive their response and keep-alives while they wait, so an agent only sees a slower first token. Only after Settings > Failover > Wait at most does the client get a 429, with the time to retry.
  • The Upstreams page tags an upstream that is waiting, such as "Rate limited" or "Usage limit reached", with a countdown. Traffic shows requests that are queued and which upstreams they wait for, and the route view shows each 429 pause.

Usage limits on upstreams:

  • The upstream dialog has Usage limits under the concurrency limit: requests, tokens or cost per minute, hour, day, week or month, and per several minutes or hours, for example 10,000,000 tokens every 5 minutes. Gateway keys accept "every N minutes / hours" too.
  • When a minute or hour limit is reached, requests go to another upstream or wait. When a day, week or month limit is used up, the upstream is skipped until it resets.
  • Shared upstream links and exports carry the limits.

Linux:

  • Launch at login works when the AppImage is unpacked, as the AUR package thinkwatch-lite-bin does: the login entry starts the AppImage's AppRun. Thanks to @sunnysab for finding the problem, sending the first fix and testing the final one on Arch (#348).

Windows:

  • A plugin's CPU limit no longer counts time the computer was busy with other work.

Security:

  • The core's plugin sandbox is updated to Wasmtime 49.0.4 (RUSTSEC-2026-0378, RUSTSEC-2026-0379).

Downloads

Platform File
macOS, Apple silicon ThinkWatch-Lite-2026.10.26-darwin-arm64.dmg
Windows, x64, installer ThinkWatch-Lite-2026.10.26-windows-x64-setup.exe
Windows, x64, portable ThinkWatch-Lite-2026.10.26-windows-x64-portable.zip
Windows, ARM64, installer ThinkWatch-Lite-2026.10.26-windows-arm64-setup.exe
Windows, ARM64, portable ThinkWatch-Lite-2026.10.26-windows-arm64-portable.zip
Linux, x86_64 ThinkWatch-Lite-2026.10.26-linux-x86_64.AppImage
Linux, aarch64 ThinkWatch-Lite-2026.10.26-linux-aarch64.AppImage

Each file is published with a .sha256 file beside it. latest.json is the manifest for in-app updates, and install.sh is the Linux install script.

On Windows, the portable ZIP runs without installation or administrator rights: extract it to any writable folder and start ThinkWatch Lite.exe. Its settings stay in the data folder beside it, separate from an installed copy, and it updates itself in place.

On macOS, Homebrew installs the same disk image:

brew install --cask thinkwatchproject/tap/thinkwatch-lite

On Linux, the install script downloads the AppImage for the machine's architecture, checks its SHA-256 and installs it as ~/Applications/ThinkWatch-Lite.AppImage:

curl -fsSL https://github.com/ThinkWatchProject/ThinkWatch-Lite/releases/latest/download/install.sh | sh

Both commands install the latest release. First-launch steps for each platform, such as removing the quarantine attribute from a copy downloaded on macOS, are described in the README.

The ThinkWatch Lite page describes each feature, and the documentation covers installing, connecting clients and routing.

Verifying a download

A .sha256 file holds the SHA-256 of the file followed by its name. With both files in the current directory, on macOS:

shasum -a 256 -c ThinkWatch-Lite-2026.10.26-darwin-arm64.dmg.sha256

On Linux:

sha256sum -c ThinkWatch-Lite-2026.10.26-linux-x86_64.AppImage.sha256

On Windows, in PowerShell, the following prints True when the installer matches:

(Get-FileHash .\ThinkWatch-Lite-2026.10.26-windows-x64-setup.exe).Hash -eq (Get-Content .\ThinkWatch-Lite-2026.10.26-windows-x64-setup.exe.sha256).Split()[0]

The Homebrew cask and the Linux install script check the SHA-256 themselves.

What's Changed

  • Linux autostart: an unpacked AppImage starts its AppRun by @sunnysab in #348
  • CI: run Rust tests with nextest; faster Windows linking by @fylorn in #351
  • 2026.10.26: upstream throttling and usage limits; pin core v0.79.0 by @fylorn in #352

New Contributors

Full Changelog: v2026.10.25...v2026.10.26