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