Skip to content
View as Markdown

Changelog

Notable updates to the Tinker SDK, the Tinker Cookbook, the Tinker Console, and the Tinker documentation. SDK and Cookbook entries are dated by PyPI release, Console entries by launch date, and Docs entries by their merge-to-main date. For model availability and retirements, see Models & Pricing and Model Deprecations.

Release Date Changes
SDK 0.27.1 September 4, 2026
  • Breaking: Subprocess-isolated sampling has been removed. TINKER_SUBPROCESS_SAMPLING=1 no longer has any effect, and passing subprocess_sampling= to a SamplingClient is now an error — sample() and compute_logprobs() always run in the calling process. If you were relying on it to keep CPU-heavy grading or environment code from stalling network IO, move that work to your own process or thread pool.
  • Added get_console_url() for jumping from code to the Tinker Console: on ServiceClient it returns the current session's page, and on the responses from save_state() and save_weights_for_sampler() it returns the saved checkpoint's page.
Docs September 4, 2026
  • Every page now has Copy as Markdown and View as Markdown buttons above its title, and the site publishes llms.txt (an index of every page, grouped like the nav) plus llms-full.txt (the whole documentation in one file). The Markdown of any page is also fetchable directly at <page-url>index.md.
Cookbook 0.5.7 September 3, 2026
  • The GLM-5.3 renderer now trains the turn terminator on every assistant turn instead of only the last one: each assistant message owns its terminator (<|observation|> when handing off to a tool, <|user|> otherwise) and carries the message's loss weight. For every turn but the last this only moves a chunk boundary — the token was already there as the next message's role token — so multi-turn supervised targets now teach the model to end each turn itself.
SDK 0.26.2 September 1, 2026
  • Added ServiceClient.copy_weights(), which copies weights into the client's own project and returns the tinker path of the copy. Either kind of weights can be copied and the copy keeps that kind; storage is shared with the source, so no bytes are duplicated. The copy lands in a new training run that cannot be trained on, and takes an optional ttl_seconds expiry (the source's is not inherited) and a weights_access_token for sources readable under a different account.
  • The audit log now covers administrative activity — projects, teams, and organizations — alongside checkpoints, and RestClient.get_audit_log() takes event_type="projects", "teams" or "organizations" to filter by resource.
  • AuditLogEntry has a new event_details field carrying the whole record for an event — the actor, the resource, and the action with its own parameters — for every event type. model_id, tinker_path and purpose are deprecated: they are still set on checkpoint events, but events for the new resources leave them unset.
  • loss_fn_config now accepts string values alongside floats, on forward(), forward_backward() and their async variants.
  • tinker auth login --api-key now verifies the key with the server before storing it, and records it under its real key id, with the name and note the server has for it.
Cookbook 0.5.6 September 1, 2026
  • Added support for GLM-5.3: a glm5_3 renderer family (tool calling, reasoning, and the model's <|observation|> / <|user|> turn terminators), model metadata, and hyperparameter lookup entries.
  • Added a forecasting recipe — RL on binary prediction markets from the Prophet Arena subset, with a chronological train/test split and a Brier-score reward.
  • Added Inkling-Small to the hyperparameter lookup tables.
SDK 0.26.0 August 25, 2026
  • Added tinker auth to the CLI. tinker auth login logs in through the browser (WorkOS device authorization), mints an API key, and stores it as the default credential; tinker auth login --api-key stores a key you paste in; tinker auth logout removes the default credential, deleting a browser-minted key on the server and removing a manually entered one locally.
  • Datum can now carry token provenance. datum.with_provenance(model_input=..., loss_fn_inputs=...) attaches runs of PromptProvenanceSpan / SampledProvenanceSpan that tile the input tokens and the loss rows, naming the sampled sequence each run came from. The tiling is validated at the call site, so a miscounted partition fails immediately instead of as a request error.
  • SupportedModel reports trainable and sampleable, so get_server_capabilities() tells you which models can host a training run and which have sampling capacity.
Cookbook 0.5.5 August 22, 2026
  • Added support for Qwen3.8: a qwen3_8 renderer family with tool calling, alongside tool-declaration and parsing updates shared with the other Qwen renderers.
  • Renderer fixes: message text can no longer write Qwen turn markers itself, and a renderer with reasoning disabled now refuses a turn that carries reasoning instead of silently dropping it.
Cookbook 0.5.4 August 11, 2026
  • The [inkling] install extra has been removed and its dependencies folded into the base install, so tml-renderers now comes with pip install tinker-cookbook and Inkling rendering works out of the box. The base install now requires torch>=2.10 and tinker>=0.23.0.
  • Added support for Nemotron 3.5 Lightning (NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16) across the cookbook's training and sampling recipes, plus new nemotron3_preserve_thinking and nemotron3_ultra_preserve_thinking renderers that keep historical <think>…</think> blocks in the context, for multi-turn RL and long-horizon agents.
SDK 0.24.1 August 6, 2026
  • Added a base_model argument to ServiceClient.create_training_client_from_state() and create_training_client_from_state_with_optimizer() (and their async variants), overriding the base model recorded in the checkpoint when you resume training. It must be compatible with the checkpoint's base model — for example, a different-context-length variant of the same model.
Docs August 3, 2026
  • The Under the Hood page has a new Avoid Client-Side Timeouts and Retries section: wrapping sample_async in your own timeouts and retries (common in RL sampling loops like GRPO) turns backend slowness into total failure, because the SDK and backend already retry and latency scales with load. It recommends submitting sampling requests concurrently and letting slow steps resolve on their own.
Docs July 31, 2026
  • The Models & Pricing page now documents its machine-readable interface: the models.json and serverless.json files published alongside the page are the stable contract for reading prices programmatically — with the full field list and a short fetch snippet — so scripts no longer have to scrape the HTML tables.
Cookbook 0.5.3 July 30, 2026
  • Added tinker_cookbook.capture, a token-level capture system for training and sampling traffic with near-zero recipe changes: wrap a run in the capture_to_store(...) context manager (or point an external agent harness at its local Anthropic/OpenAI-compatible proxy), and every sampled sequence — prompt and sampled tokens, logprobs, and run coordinates — lands in a queryable local SQLite store (with HTTP query and SSE streaming) while the run is still going.
  • The inspect/Tinker eval bridge now defaults to max_tokens=2048 (was 128) when a config doesn't set one, matching inspect's own default so generations aren't silently truncated.
  • Cookbook process pools now use the spawn multiprocessing start method, fixing workers that could hang silently because the Tinker client's background event loop doesn't survive fork(). Scripts that call sweep.run() must now guard it under if __name__ == "__main__":.
Console July 30, 2026
  • The Playground now works with all base models and your own fine-tuned checkpoints, not just Inkling, and accepts image and audio input when chatting with Inkling and Inkling-Small. Inkling and Inkling-Small usage in the Playground now draws on your account balance and is billed like other usage (it was free during the initial launch).
SDK 0.24.0 July 29, 2026
  • Added RestClient.export_session_trace() (and export_session_trace_async()), which builds a Perfetto trace (.pftrace) of a session's training and sampling requests and returns a signed download URL you can open at ui.perfetto.dev (the URL expires after about an hour; call again for a fresh one). New tinker session export-trace <session-id> CLI command that downloads the trace (or prints the URL with --url-only).
SDK 0.23.4 July 25, 2026
  • Added RestClient.get_billing_usage() (and get_billing_usage_async()), which returns your organization's usage for any past time window (at most 14 days per request, so step the window to cover longer ranges) as hourly-bucketed, typed billing events — training, sampler prefill and sample, checkpoint, and storage — each tagged with the model, user, session, and project it belongs to.
  • New tinker billing usage <start> <end> CLI command that exports that usage, with --csv and --sessions-csv flags to write the hourly usage rows and the per-session metadata for spreadsheet or pandas use.
SDK 0.23.3 July 22, 2026
  • Fixed the SDK failing to connect (invalid peer certificate: UnknownIssuer) through TLS-intercepting proxies and VPNs when pyqwest 0.7.0 is installed; the HTTP transport now trusts the operating system's certificate store again.
SDK 0.23.2 July 21, 2026
  • Added RestClient.whoami() (and whoami_async()), returning a WhoamiResponse with the calling principal's user URN and, for user-backed credentials, email. It reads the identity from the auth token the SDK already holds, so it makes no extra API requests.
SDK 0.23.1 July 18, 2026
  • Fixed RestClient.get_audit_log() failing when the audit-log response redirects to a signed download URL; the redirect is now followed correctly instead of erroring out.
Docs July 17, 2026
  • Models & Pricing now shows the new pricing that took effect July 17: prefill, sample, and training rates went up on standard context-length models (cached prefill stays 20% of the prefill price); the 128K/256K long-context variants and Inkling keep their existing prices.
Docs July 16, 2026
  • New Data Model & Permissions guide: how Tinker organizes data across organizations, teams, projects, sessions, training runs, and checkpoints, plus the organization- and project-level roles, the sharing model, and the data-isolation rules that govern who can see what.
SDK 0.23.0 July 15, 2026
  • SampleResponse now reports prompt_cache_hit_tokens, the number of prompt tokens billed as prefix-cache hits. It is counted on the prompt itself, so it is not multiplied across samples when num_samples > 1.
  • DmelChunk.length now returns the token count from the tensor instead of raising.
Cookbook 0.5.2 July 15, 2026
  • The inkling.sample_reasoning script's default generation budget now scales with reasoning effort (max_tokens of 4096 / 8192 / 16384) unless you pin a single max_tokens.
Cookbook 0.5.1 July 15, 2026
  • The sl_basic and rl_basic recipes now derive the renderer and dataset tokenizer from a model_name= command-line override, instead of always using the default model's. A model_name override previously trained with the wrong renderer and tokenizer.
Cookbook 0.5.0 July 15, 2026
  • Added a Modal inference integration (tinker_cookbook.inference.modal, installed via the [modal] extra) that turns a tinker:// LoRA checkpoint into an OpenAI-compatible endpoint: prepare merges the adapter into the base model, serve runs it behind an SGLang endpoint on Modal, and compare checks outputs against the Tinker sampler.
  • Supervised NLL evaluation now reports bits-per-byte (BPB) alongside NLL, giving a tokenizer-independent metric for comparing models (special tokens are excluded from the count).
Console July 15, 2026
  • Launched the Playground, opened to all organizations (usage is not billed for now), for chatting with Inkling directly in the console. It includes a reasoning-effort control (minimal / low / medium / high / xhigh, with a custom value), an editable system prompt (with a reset button and a {{ current_date }} template), and a View code button that shows the equivalent API request. The console home page was redesigned around it.
Docs July 15, 2026
  • New Cookbook Using Inkling section covering the Inkling model and how to build its inputs with tml-renderers — chat messages, tool calls, controllable thinking effort, and image and audio input — plus a new tinker.types.DmelChunk reference page for client-encoded audio input.
  • New Anthropic API Compatible Inference page (beta): sample from Inkling, base models, or your own fine-tuned checkpoints through an endpoint compatible with the Anthropic Messages API, so Anthropic SDKs and Claude Code work with only a base-URL and API-key change.
Console July 14, 2026
  • The billing Pricing tab now links out to the Models & Pricing docs page instead of showing a separate in-console table.
Console July 10, 2026
  • Invoices and the Usage page's By Type view now show sampler prefill as separate Cache Hit and Cache Miss line items, instead of one merged Tinker Sampler Prefill line, so you can see how much of your prefill was billed at the discounted cached rate. See Models & Pricing for the rates.
Console July 8, 2026
  • The console is now served at tinker.thinkingmachines.ai. The previous tinker-console.thinkingmachines.ai address now redirects there (preserving the path and query string), so existing links keep working.
Console July 6, 2026
  • Added a Session Metrics view to every session page, rolling out to all organizations. Time-series panels show what your training and sampling traffic did over time — active sample requests, training utilization, and average training, sampling, and prefill throughput — with drag-to-zoom, a time-range picker, and a plain-language explanation of each metric.
  • Added a Download Perfetto button to the session page that exports the full session timeline as a .pftrace you can open at ui.perfetto.dev. The trace goes deeper than the console panels: per-request training and sampling spans, plus counter tracks for concurrency, throughput, per-request sizes, latency percentiles (p50/p90/p99), running totals, and rate-limit events. Re-exporting picks up new session activity. See the session metrics docs for details.
SDK 0.22.7 July 1, 2026
  • Fixed ServiceClient.create_training_client_from_state() not authenticating correctly when given a weights_access_token, which broke loading from checkpoints shared by another account.
SDK 0.22.6 June 26, 2026
  • Added a project_id filter to RestClient.list_training_runs(), so you no longer need to page through all runs to find a project's runs.
  • Weights-info REST clients no longer create a session on construction.
SDK 0.22.4 June 24, 2026
  • ServiceClient now falls back to the TINKER_PROJECT_ID environment variable when no project_id argument is passed, mirroring TINKER_API_KEY.
  • Raised the default cap on in-flight sample requests from 1000 to 2000. The cap is now delivered via server client config; the server value overrides max_connections while preserving your other retry settings.
  • Raised the minimum zstandard dependency to >=0.24.0 so the SDK installs cleanly on Python 3.14.
Cookbook 0.4.3 June 24, 2026
  • Kimi K2 tokenizers are now loaded directly instead of via AutoTokenizer, avoiding a tokenizer regression in some transformers releases (which are also excluded from the supported range).
  • Distillation recipes were rerun and updated to target Qwen3.5 models, with refreshed configs and expected results.
  • Tutorial 407 (RLHF pipeline) now uses a capped 40-step RL stage and documents expected runtime.
Console June 17, 2026
  • Reorganized navigation around sessions: the Training Runs list is replaced by a Sessions list (session ID, created time, owner, project — with filtering and pagination), and each session page shows its training runs. Listing is index-backed, so large projects load much faster.
Cookbook 0.4.2 June 10, 2026
  • Added a Nemotron Ultra renderer with model info and recommended-hyperparameter support, enabling Nemotron Ultra across cookbook training and sampling recipes.
  • Improved tinker_cookbook.scripts.copy_checkpoint with destination-project support and simpler source-access-token handling for cross-organization copies.
  • Added tinker_cookbook.scripts.save_audit_log to archive audit log events as per-day JSONL files, with one-shot, backfill, and recurring polling modes.
  • Added token- and wall-clock-based checkpoint cadence options (save_every_tokens, save_every_seconds) to supervised training and CheckpointManager.
  • Recipe entrypoints now tag Tinker runs with the recipe name and cookbook revision, making recipe-launched jobs easier to trace.
  • Migrated all tutorial series and the cookbook recipes off the models retired on June 12, 2026, alongside fixes for SDK API drift and a GRPO grouping fix in the abstractions tutorials.
SDK 0.22.3 May 31, 2026
  • Added RetryConfig.enable_stuck_detection (default true) to control whether the client raises APIConnectionError when requests stop making progress.
  • Fixed tinker checkpoint delete -y tinker://... failing to parse explicit checkpoint paths.
SDK 0.22.2 May 28, 2026
  • Fixed checkpoint archive downloads that could hang after the signed-URL redirect on the new HTTP transport.
SDK 0.22.1 May 27, 2026
  • TensorData now copies non-writable NumPy inputs at construction, eliminating PyTorch's "given NumPy array is not writable" warning from to_torch().
  • tinker checkpoint download and push-hf now retry transient connection failures.
  • forward_backward uploads can be zstd-compressed (rolled out server-side; payloads shrink roughly 3x or more).
SDK 0.22.0 May 22, 2026
  • Added RestClient.assign_session_project() and assign_session_project_async() to move an existing session — with all of its training runs and samplers — into a project. Note that a session cannot be moved out of a project once placed.
  • The SDK's HTTP client now uses the pyqwest transport (a Rust reqwest/hyper-based backend for httpx) by default.
SDK 0.21.0 May 19, 2026
  • Sampling requests keep a stable request ID across submission retries (sampling is idempotent on the backend), making retries more reliable.
  • Updated the pinned moonshotai/Kimi-K2.6 tokenizer revision to keep client-side tokenization consistent with the serving backend.
Cookbook 0.4.1 May 12, 2026
  • Fixed Kimi K2.6 tokenizer loading by pinning to the fast-tokenizer revision.
  • Fixed get_lora_param_count() for models with per-component LoRA parameter tables.
Cookbook 0.4.0 May 8, 2026
  • Added renderer and model-info support for Kimi K2.6, Qwen3.6 variants, and Nemotron-3 Super low-thinking mode.
  • Added tinker_cookbook.scripts.copy_checkpoint for copying trainable Tinker checkpoints into another authenticated account.
  • Unified checkpoint handling across training loops and added fire-and-forget periodic checkpoint saves for supervised training.
  • Improved supervised training throughput with additional runahead, and normalized SFT example weights for more consistent gradient magnitudes.
  • Renderer.parse_response() now returns ParseTermination instead of a boolean, distinguishing clean EOS from malformed parses and fixing base-model single-turn evals that were incorrectly scored as failed parses.
  • Improved the TextArena tic-tac-toe self-play recipe and added a playable CLI.