Skip to content

ThinkWatch Core 0.64.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 03:00
· 41 commits to main since this release
f2d4caf

This release tells clients more about each model. The model listing now says, for every model it knows, how much it can write in one answer, whether it reasons and whether it takes images, besides its context window. An upstream's model can have the last two set by hand, like the context window and output limit before.

Upgrade notes

  • The control-plane protocol version (CONTROL_API_VERSION) goes from 39 to 40. ThinkWatch Lite connects only to a core with the same protocol version: ThinkWatch Lite 2026.10.6 includes 0.63.0 (protocol 39) and does not connect to 0.64.0. A server used with it stays on 0.63.0 until the app is updated to a release that includes 0.64.0; sudo twcore upgrade --version 0.63.0 --restart switches a server back.
  • The request store's schema is unchanged: upgrading from 0.63.0 keeps the request history.
  • The configuration format only gains fields (providers[].model_specs.*.reasoning and .image_input); every 0.63.0 configuration loads.
  • Changed in the protocol:
    • ModelRow gains reasoning, reasoning_source, image_input and image_input_source (SpecSource).
    • ModelSpecSave gains reasoning and image_input. An entry is removed when all four fields are empty. A client written for protocol 39 drops the two new fields when it saves a model spec.
  • Message codes, compared with 0.63.0:
    • New: config.model_spec_nothing_set.
    • Removed: config.model_spec_empty, replaced by config.model_spec_nothing_set because the sentence now names four fields.

What the model listing carries. GET /v1/models adds three fields to each model in the OpenAI and Anthropic shapes, each only when it is known:

  • max_output_tokens, the most tokens one answer can have;
  • supports_reasoning, whether the model reasons;
  • input_modalities, ["text", "image"] or ["text"].

The Gemini shape adds thinking. The values come from the same place as the context window: the upstream's hand-written model spec first, then the price table. When neither says, the field is left out rather than guessed. Clients then use their own defaults: a client told "does not reason" hides its reasoning levels, and that is not something to guess. The price table now keeps "not stated" apart from "no" for reasoning, and reads image support from the dataset's supports_vision.

Reasoning and image input set by hand. providers[].model_specs takes reasoning and image_input (true or false) next to context_window and max_output_tokens, each overriding the price table on its own. PUT /provider-model-spec sets them. The speed test also uses the result: a model set by hand to reason gets room to reason in its probe request, as models the price table marks as reasoning already did.

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.64.0:

curl -fsSL https://raw.githubusercontent.com/ThinkWatchProject/ThinkWatch-Core/main/scripts/install.sh | sudo sh -s -- --version 0.64.0

An installation made with the script switches to 0.64.0 with:

sudo twcore upgrade --version 0.64.0 --restart

Configuration, 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.sha256

On macOS:

shasum -a 256 -c twcore-aarch64-apple-darwin.sha256

On 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

  • The model listing says whether a model reasons and takes images, and its output limit; both can be set by hand, v0.64.0 by @fylorn in #294

Full Changelog: v0.63.0...v0.64.0