Repository navigation
ThinkWatch Core 0.66.0
This release lets an upstream's models be added by hand. An upstream that answers /v1/models but leaves out a model it serves — an account backend that hides newer models, a relay that lists only some — can now be given that model, and requests for it are routed there like for any listed model.
Upgrade notes
- The control-plane protocol version (
CONTROL_API_VERSION) goes from 41 to 42. ThinkWatch Lite connects only to a core with the same protocol version: ThinkWatch Lite 2026.10.9 includes 0.65.0 (protocol 41) and does not connect to 0.66.0. A server used with it stays on 0.65.0 until the app is updated to a release that includes 0.66.0;sudo twcore upgrade --version 0.65.0 --restartswitches a server back. - The request store's schema is unchanged: upgrading from 0.65.0 keeps the request history.
providers[].modelsis now checked when the configuration loads. An entry that is blank, has spaces around it, contains*or?, appears twice, or is longer than 256 characters is refused, and core starts in safe mode with an error naming the upstream and the model; fix or remove the entry. Before, such entries were accepted as written. A configuration that never wrotemodels, or wrote plain model ids, loads unchanged.- Changed in the protocol:
- New endpoint
PUT /provider-manual-models(ManualModelsSave { provider, models, base_version }→ConfigWritten): replaces one upstream's models added by hand, in the order given, and leaves the rest of its entry alone. An empty list removes the key. ModelRowgainsmanual(the model was added by hand) andlisted(the upstream's own list has it).
- New endpoint
- Message codes, compared with 0.65.0:
- New:
config.manual_model_blank,config.manual_model_padded,config.manual_model_wildcard,config.manual_model_duplicate,config.manual_model_too_long.
- New:
Models added by hand. providers[].models used to be a fallback, read only when the upstream did not answer /v1/models. It now always counts: its models are offered by that upstream next to the ones the upstream lists, and are the whole list when the upstream lists none. A model on both lists appears once. Everything that asks which models an upstream has treats them the same way: routing and failover, aliases, routing rules that name a model, a key's allowed models, the gateway's /v1/models, the dry run and the speed test. models_only still limits what is used. Changing the list takes effect on reload, without asking the upstream for its list again.
Downloads
| Platform | Binary | Archive for server installation |
|---|---|---|
| Linux, x86_64 | twcore-x86_64-unknown-linux-gnu |
twcore-x86_64-unknown-linux-gnu.tar.gz |
| Linux, aarch64 | twcore-aarch64-unknown-linux-gnu |
twcore-aarch64-unknown-linux-gnu.tar.gz |
| macOS, Apple silicon | twcore-aarch64-apple-darwin |
— |
| Windows, x64 | twcore-x86_64-pc-windows-msvc.exe |
— |
| Windows, ARM64 | twcore-aarch64-pc-windows-msvc.exe |
— |
Each file is published with a .sha256 file beside it. A Linux archive contains twcore, the systemd unit twcore.service and LICENSE. ThinkWatch Lite includes its own copy of twcore; the files here are for running core separately, such as on a server.
Server installation
On Linux (x86_64 or aarch64), the install script sets up twcore as a systemd service. This installs 0.66.0:
curl -fsSL https://raw.githubusercontent.com/ThinkWatchProject/ThinkWatch-Core/main/scripts/install.sh | sudo sh -s -- --version 0.66.0An installation made with the script switches to 0.66.0 with:
sudo twcore upgrade --version 0.66.0 --restartConfiguration, the remote control port and connecting ThinkWatch Lite are described in docs/server.md.
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 Linux:
sha256sum -c twcore-x86_64-unknown-linux-gnu.tar.gz.sha256On macOS:
shasum -a 256 -c twcore-aarch64-apple-darwin.sha256On Windows, in PowerShell, the following prints True when the binary matches:
(Get-FileHash .\twcore-x86_64-pc-windows-msvc.exe).Hash -eq (Get-Content .\twcore-x86_64-pc-windows-msvc.exe.sha256).Split()[0]The install script and twcore upgrade check the SHA-256 themselves.
What's Changed
- Models added by hand count as offered next to the upstream's own list (protocol 42) by @fylorn in #300
- chore: v0.66.0 by @fylorn in #301
Full Changelog: v0.65.0...v0.66.0