Repository navigation
ThinkWatch Lite 2026.9.19
Upgrade notes: the bundled core is upgraded to 0.52.1. The request store keeps its format, so the request history is kept. A remote server has to run the same core version, 0.52.1 (ThinkWatch Lite 2026.9.18 cannot connect to a server running 0.52.x), so the server and the app are updated together. When the versions differ, the app gives the command to run on the server, sudo twcore upgrade --version 0.52.1 --restart. A server upgraded from 0.51.0 keeps its request history as well.
Upstreams and proxies: the edit dialogs show the settings as they are written in the configuration.
- The base URL keeps its path. It used to be cut down to its origin, under a note that the credentials in the URL are hidden.
- The API key is filled in and hidden, with an eye button to show it, and the authorization header under Headers follows the same button. A
${NAME}reference stays visible. The other header values are filled in as written. - OAuth upstreams have their token endpoint, refresh token, client ID and client secret filled in, the secrets hidden. The access token field appears only once the credential is new or changed.
- A proxy's username and password are filled in, the password hidden.
- A save sends the whole definition, so the "leave empty to keep", "Remove" and "Replace" states are gone.
- A base URL that ends with its version segment, as provider docs give it (
https://api.openai.com/v1), no longer has every request and connection check sent to…/v1/v1/…, and the hint under the base URL now only asks to leave out an endpoint path such as/chat/completions. - A proxy password can be a
${NAME}reference. A password containing${used to be refused. - Z.ai sign-in: entering the name of the existing Z.ai upstream was refused as a name already in use. The dialog now says that the sign-in replaces that upstream's key, and the sign-in can go ahead.
Routing:
- A rule that rewrites the model was refused with "No upstream serves model …" whenever the target upstream lists its models. That is the rule the app suggests for Claude Desktop with a non-Claude upstream, and for Antigravity CLI and DeepSeek Harness with another provider's models. Admission, skipping the candidates that cannot serve a request, the cheapest group's price comparison and the routing dry run now look at the model each upstream is actually asked for. When a rewritten model is not served, the error names both models.
- Requests from Codex and other clients that use the OpenAI Responses or Gemini format are recognized as conversations. A load-balance group with sticky sessions, the default, sent all of them to its first upstream. Each conversation now stays on one upstream while the conversations are spread across the members, and the Traffic page groups them into sessions.
Clients: a client's row menu on the Clients page (right-click or the … button) has "Change path…", for a client whose files are somewhere else, such as Claude Code moved with CLAUDE_CONFIG_DIR or Codex moved with CODEX_HOME. It covers the clients under "Set up by hand" too, such as Cursor and Antigravity CLI. The dialog shows where connecting, MCP management and the security scan read and write. They move together: before anything changes, the dialog lists every location that moves, old and new. "Restore defaults" puts them back. The same dialog opens from the MCP page, by right-clicking a column header or a row under "Skills and hooks" or "Findings". A connected client has to be restored first. The locations apply to this computer only, and clients inside WSL keep their default locations. Claude Desktop and DeepSeek Harness cannot be moved.
Remote connections: editing a remote connection fills in the saved key, hidden behind an eye button, so it can be checked or copied.
Menu bar and tray: the menu now reads, from the top: the gateway's state, Notices, Today, Quota and In Progress, then Open ThinkWatch Lite, the groups whose upstream can be chosen, Copy Gateway Address and Copy Default Key, then Settings…, Connection, Check for Updates… and Quit ThinkWatch Lite…. On Linux, Open ThinkWatch Lite stays at the very top of the tray menu. "Undo Last Configuration Change" is gone; a configuration change can still be restored from the version history in the app. A quota window named by its length, such as the 30-day window a ChatGPT account can report (shown as 30d), is spelled out in the menu, on the Upstreams page and in notifications: "30 days", or "30-day window" in a sentence.
Downloads
| Platform | File |
|---|---|
| macOS, Apple silicon | ThinkWatch-Lite-2026.9.19-arm64.dmg |
| Windows, x64 | ThinkWatch-Lite-2026.9.19-x64-setup.exe |
| Windows, ARM64 | ThinkWatch-Lite-2026.9.19-arm64-setup.exe |
| Linux, x86_64 | ThinkWatch-Lite-2026.9.19-x86_64.AppImage |
| Linux, aarch64 | ThinkWatch-Lite-2026.9.19-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 macOS, Homebrew installs the same disk image:
brew install --cask thinkwatchproject/tap/thinkwatch-liteOn 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 | shBoth 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.
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.9.19-arm64.dmg.sha256On Linux:
sha256sum -c ThinkWatch-Lite-2026.9.19-x86_64.AppImage.sha256On Windows, in PowerShell, the following prints True when the installer matches:
(Get-FileHash .\ThinkWatch-Lite-2026.9.19-x64-setup.exe).Hash -eq (Get-Content .\ThinkWatch-Lite-2026.9.19-x64-setup.exe.sha256).Split()[0]The Homebrew cask and the Linux install script check the SHA-256 themselves.
What's Changed
- Use core v0.52.0: upstream and proxy dialogs show the settings as written; keys behind an eye toggle by @fylorn in #226
- feat(menubar): reorder the menu, drop Undo, and spell out quota windows such as 30d by @fylorn in #227
- Fill the saved key back into the remote connection dialog by @fylorn in #228
- fix(upstreams): say "30-day window", not "30 days window" by @fylorn in #229
- Let a client's config file be moved from the Clients page by @fylorn in #230
- Move a client's connecting, MCP and scan locations together by @fylorn in #231
- Use core v0.52.1: rules that rewrite the model work against listed upstreams; Codex sessions are recognized by @fylorn in #232
- chore: 2026.9.19 by @fylorn in #233
Full Changelog: v2026.9.18...v2026.9.19