ThinkWatch-Lite v2026.10.0 升级说明:内置 core 升至 0.57.1,使用控制面协议 31,远程服务端需同为 0.57.x,与 0.56.x 及 2026.9.26 及更早版本互不兼容;首次启动会清空请求历史(配置、密钥与上游保留)。默认启用两条脱敏规则——中国居民身份证号与银行卡号,Observe 模式仅记录,Enforce 模式在请求发出前替换,可在安全页关闭。输入 token 路由改用网关估算:每 CJK 字符 1 token、每图片或文件 1600 token,不含 thinking。Traffic 页的搜索与过滤从仅限已加载的最近 2000 条请求扩展为遍历全部已存请求,并支持内容检索(含最后一条用户消息、工具结果与回答),匹配处显示脱敏后的摘录。Upstreams › Check-up 可在 24 小时、7 天、30 天或自定义区间内对比各上游的请求数与失败率、模型名一致性、输入量相对本地估算的倍数、后续轮次 prompt cache 读取占比、首 token 中位时间与生成速度,并标注样本量,仅在双方样本充足时标记偏差。客户端页新增 Pi、oh-my-pi、Grok Build、Qwen Code 和 Hermes Agent 接入。
68
正文
Official release notes (https://github.com/ThinkWatchProject/ThinkWatch-Lite/releases/tag/v2026.10.0)
**Upgrade notes:**
- The bundled core is now 0.57.1, which speaks control-plane protocol 31. A remote server has to run core 0.57.x too: this version does not connect to 0.56.x, and 2026.9.26 and earlier do not connect to 0.57.x.
- **Request history is cleared** on the first start, as the request store is rebuilt. Configuration, keys and upstreams are kept.
- Two redaction rules are on by default: Chinese resident ID numbers and bank card numbers. In Observe, the factory mode, they are only recorded; in Enforce they are replaced before a request leaves. Either can be switched off on the Security page.
- Routing rules on input tokens now use the gateway's token-count estimate: one token per CJK character and 1,600 per image or file, with thinking left out. A request with many images can now cross a size threshold it used to stay under.
**Searching the whole history:**
- The Traffic page used to search only the latest 2,000 requests it had loaded. A search or filter now also runs over every stored request, newest first. The footer says how far back the search has got, and **Search further** goes back another page.
- The toggle inside the search box also searches content. It covers what each request newly sent (the last user turn, tool results included) and its answer (text and tool calls), for requests whose payloads are still kept.
- Each content match shows an excerpt under the request, with credentials masked.
**Upstream check-up:**
- **Upstreams › Check-up** compares each upstream with the others over 24 hours, 7 days, 30 days or a custom range:
- requests and failure rate;
- whether the model named in its answers matches the one sent, with the pairs that differ;
- the input it reports, as a multiple of the local estimate, against other upstreams serving the same model;
- the share of input read from the prompt cache in follow-up turns, against those upstreams too;
- median time to first token and generation speed.
- Every figure comes with its sample size. A deviation is marked only when both sides have enough samples:
- input: a gap of 25% or more, and only on the upstream further from the local estimate;
- cache: other upstreams read at least 30% from the cache and this one less than half of that.
**ID and bank card numbers:**
- Outbound redaction now also replaces Chinese resident ID numbers and bank card numbers. A number counts only when its structure and check digit are valid:
- an ID number needs a region code, a real birth date and a valid check character;
- a card number needs the prefix and length of UnionPay, Visa, Mastercard, American Express, JCB, Discover or Diners Club, and must pass the Luhn check.
- Placeholders say what was there, such as ``, and the security log shows only the last four characters.
**More clients:**
- The Clients page now connects Pi, oh-my-pi, Grok Build, Qwen Code and Hermes Agent:
- **Pi and oh-my-pi** get a provider of their own with the models the key can use. Their default model stays as it is, and ThinkWatch models are chosen in `/model`.
- **Grok Build** gets one model entry per gateway model, each with its own key, so the xAI session token is never sent to the gateway. One of them becomes the default model. Remote campaigns, which can change the default model, are turned off while it is connected.
- **Qwen Code** 0.19.3 or later gets a provider of its own in the OpenAI format, and the change applies after a restart.
- **Hermes Agent**: its default profile is pointed at the gateway, and other profiles keep their own configuration.
- **DeepSeek Harness** counts as installed when only its desktop app is. Models used through a DeepSeek account in the desktop app still go to DeepSeek directly, which the plan now says.
- The MCP page lists the servers of the five new clients without writing to them. Skills in the shared `~/.agents/skills` folder appear under a shared folder, and Cursor's hooks are scanned too.
- Codex stopped reading `OPENAI_BASE_URL` in April 2026, so a shell that still exports it is no longer reported as overriding the connection.
**Getting started:**
- Until the first request reaches an upstream, the Overview page shows a checklist: add an upstream, connect a client, send a first request.
- Other pages show a hint for the next step where it applies. A hint can be hidden, and **Settings › General** shows the hidden ones again.
**Requests other than POST:**
- These now get a 404 from the gateway itself. Hermes Agent sends such GETs when it starts, to tell whether a server is Ollama or LM Studio.
- They used to be sent to an upstream as empty POSTs and recorded as failed requests.
The [Features](https://thinkwat.ch/docs/lite/features) page describes each of these in full.
## Downloads
| Platform | File |
|---|---|
| macOS, Apple silicon | [`ThinkWatch-Lite-2026.10.0-arm64.dmg`](https://github.com/ThinkWatchProject/ThinkWatch-Lite/releases/download/v2026.10.0/ThinkWatch-Lite-2026.10.0-arm64.dmg) |
| Windows, x64 | [`ThinkWatch-Lite-2026.10.0-x64-setup.exe`](https://github.com/ThinkWatchProject/ThinkWatch-Lite/releases/download/v2026.10.0/ThinkWatch-Lite-2026.10.0-x64-setup.exe) |
| Windows, ARM64 | [`ThinkWatch-Lite-2026.10.0-arm64-setup.exe`](https://github.com/ThinkWatchProject/ThinkWatch-Lite/releases/download/v2026.10.0/ThinkWatch-Lite-2026.10.0-arm64-setup.exe) |
| Linux, x86_64 | [`ThinkWatch-Lite-2026.10.0-x86_64.AppImage`](https://github.com/ThinkWatchProject/ThinkWatch-Lite/releases/download/v2026.10.0/ThinkWatch-Lite-2026.10.0-x86_64.AppImage) |
| Linux, aarch64 | [`ThinkWatch-Lite-2026.10.0-aarch64.AppImage`](https://github.com/ThinkWatchProject/ThinkWatch-Lite/releases/download/v2026.10.0/ThinkWatch-Lite-2026.10.0-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:
```sh
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`:
```sh
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](https://github.com/ThinkWatchProject/ThinkWatch-Lite#install).
## 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:
```sh
shasum -a 256 -c ThinkWatch-Lite-2026.10.0-arm64.dmg.sha256
```
On Linux:
```sh
sha256sum -c ThinkWatch-Lite-2026.10.0-x86_64.AppImage.sha256
```
On Windows, in PowerShell, the following prints `True` when the installer matches:
```powershell
(Get-FileHash .\ThinkWatch-Lite-2026.10.0-x64-setup.exe).Hash -eq (Get-Content .\ThinkWatch-Lite-2026.10.0-x64-setup.exe.sha256).Split()[0]
```
The Homebrew cask and the Linux install script check the SHA-256 themselves.
## What's Changed
* README: name the relay threat that tool-call inspection guards against by @fylorn in https://github.com/ThinkWatchProject/ThinkWatch-Lite/pull/259
* README: the ThinkWatch Lite logo at the top by @fylorn in https://github.com/ThinkWatchProject/ThinkWatch-Lite/pull/260
* Guidance: a get-started checklist and next-step hints by @fylorn in https://github.com/ThinkWatchProject/ThinkWatch-Lite/pull/261
* chore(deps): fix the npm advisories; shadcn is a dev dependency by @fylorn in https://github.com/ThinkWatchProject/ThinkWatch-Lite/pull/262
* feat(adopt): connect Pi and oh-my-pi; list the shared skills folder by @fylorn in https://github.com/ThinkWatchProject/ThinkWatch-Lite/pull/263
* Use core v0.57.0: search the whole history, upstream check-up, ID and card redaction by @fylorn in https://github.com/ThinkWatchProject/ThinkWatch-Lite/pull/264
* feat(adopt): connect Grok Build, Qwen Code and Hermes Agent by @fylorn in https://github.com/ThinkWatchProject/ThinkWatch-Lite/pull/265
* chore: 2026.10.0 by @fylorn in https://github.com/ThinkWatchProject/ThinkWatch-Lite/pull/266
**Full Changelog**: https://github.com/ThinkWatchProject/ThinkWatch-Lite/compare/v2026.9.26...v2026.10.0
Repository README (current repository documentation, not release changes)
# ThinkWatch Lite
**[English](README.md) | [中文](README.zh-CN.md)**
A local gateway for Claude Code, Codex and other AI clients, on macOS, Windows
and Linux. Each client is connected once; after that, upstreams and models
change without touching its configuration. Every request is recorded with its
cost and route; the API keys in it can be replaced before it leaves the
machine, and dangerous tool calls a relay slips into an answer can be cut off
before the client runs them.
**Sponsors:** [Want to appear here?](mailto:fylorn@outlook.com?subject=ThinkWatch%20Lite%20Sponsorship)
## Highlights
- **Connect once, switch freely.** Claude Code, Claude Desktop, Codex,
opencode, Pi, oh-my-pi, Grok Build, Qwen Code, Hermes Agent, Zed, Aider and
DeepSeek Harness are pointed at the gateway in one step, with the change
previewed, the original file backed up and a restore always available;
Cursor, Continue and Antigravity CLI come with instructions. Switching
upstreams then happens in the gateway alone.
- **Protection against relays.** A relay sees every request in full and can
rewrite every answer. Outbound redaction swaps API keys, private keys, JWTs,
connection-string passwords, Chinese resident ID numbers and bank card numbers
for placeholders before a request leaves, so the relay never holds the real
values. When an answer carries a tool call
that downloads and runs code, sends out environment variables or credential
files, reads private keys or installs a startup item or scheduled job,
tool-call inspection cuts the answer off before the client can run it.
Hidden characters and prompt injection can be refused as well. The
protections start in Observe and switch to Enforce one by one.
- **Upstream check-up.** Each upstream is compared with the others serving the
same model: answers naming a different model, reported input well above or
below theirs and low prompt-cache reads are marked, with sample sizes.
- **MCP servers, skills and hooks, scanned.** The MCP servers of thirteen
clients side by side, with third-party servers marked, and a scan of client
configuration, skills, hooks and project instructions for hidden characters,
prompt injection, dangerous commands and overly broad permissions.
- **Every request traceable.** The rule a request matched, each upstream it
tried, any conversion between API formats and how its cost was calculated;
a finished request can be replayed against another upstream and compared
side by side. The whole history can be searched, including the text of
requests and answers.
- **Routing and failover.** Rules by model, tools, images, extended thinking
and more. When an upstream fails before the answer begins the next one takes
over, and each session stays on one upstream so its prompt cache keeps
hitting. Auxiliary requests such as title generation can be answered locally.
- **Any upstream, any API format.** API keys, Amazon Bedrock, ChatGPT and Z.ai
accounts, relays such as OpenRouter and local models, with conversion between
the Anthropic, OpenAI and Gemini APIs.
- **Costs stated as they are.** Estimated amounts are marked and requests
without a price are counted separately instead of as zero.
- **Remote core.** The gateway can also run on a Linux server; the app
connects to it over an encrypted control channel.
## Install
| Platform | Install |
|---|---|
| macOS 12 or later, Apple silicon | `brew install --cask thinkwatchproject/tap/thinkwatch-lite`, or [`ThinkWatch-Lite--arm64.dmg`](https://github.com/ThinkWatchProject/ThinkWatch-Lite/releases/latest) |
| Windows 10 21H2 or later, x64 | [`ThinkWatch-Lite--x64-setup.exe`](https://github.com/ThinkWatchProject/ThinkWatch-Lite/releases/latest) |
| Windows 10 21H2 or later, ARM64 | [`ThinkWatch-Lite--arm64-setup.exe`](https://github.com/ThinkWatchProject/ThinkWatch-Lite/releases/latest) |
| Linux, x86_64 or aarch64 | `curl -fsSL https://github.com/ThinkWatchProject/ThinkWatch-Lite/releases/latest/download/install.sh \| sh`, or [`ThinkWatch-Lite--.AppImage`](https://github.com/ThinkWatchProject/ThinkWatch-Lite/releases/latest) |
The gateway, [ThinkWatch Core](https://github.com/ThinkWatchProject/ThinkWatch-Core),
ships inside the app. The app is not signed by Apple or Microsoft, so the
first launch needs one extra step; [Install and update](https://thinkwat.ch/docs/lite/install)
covers it, along with how updates arrive. The interface is in English and
Simplified Chinese, and the app updates itself (a Homebrew installation
updates through Homebrew).
## Documentation
- [Features](https://thinkwat.ch/docs/lite/features): every page, in detail
- [Install and update](https://thinkwat.ch/docs/lite/install)
- [Connecting to a remote core](https://thinkwat.ch/docs/lite/remote-core) and
[server deployment](https://thinkwat.ch/docs/core/server-deployment)
- [Import links](https://thinkwat.ch/docs/lite/import-links), for relays and vendors
- [Architecture](https://thinkwat.ch/docs/lite/architecture)
## Build from source
```bash
pnpm install
bash src-tauri/scripts/fetch-core.sh
pnpm tauri dev
```
`fetch-core.sh` downloads the `twcore` release that `Cargo.lock` pins into
`src-tauri/resources/`. See [CONTRIBUTING.md](CONTRIBUTING.md) for the layout
of the repository and the checks to run before opening a pull request.
## License
MIT. See [LICENSE](LICENSE).