# AI Game Developer v0.21.0 — Tripo asset tools, a committed Knowledge Base, and local image groundwork

Tripo's 3D, Textures, Mesh, Rig & animate and 2D tools are now separate per-session switches, each with its own settings popup, and a single asset request comes back with saved project file paths. This release also ships a committed project Knowledge Base with a 3D graph window, plus the package and kernel groundwork for local image generation.

_Last updated: 2026-10-05_

Released 2026-10-05. All releases: https://ai-game.dev/releases

## Featured

### Tripo session tools with authenticated paid execution

Desktop gains 3D, Textures, Mesh, Rig & animate and 2D tools that you enable separately for a session, each configured in its own popup; the agent only sees the groups you enabled and the variants the server offers for your account. Paid operations use your existing subscription budget under the approval policy you configured, and what is available depends on your plan and server permissions rather than on a fixed free allowance. (#652)

### Committed project Knowledge Base

A new first-party package indexes the notes and folders under a project's committed knowledge folder and gives the agent tools to browse, search and read them. It re-indexes incrementally as notes change, tracks links and reports broken ones, and exposes a snapshot that other views can build on. (#654)

### 3D Knowledge Base graph window

The Knowledge Base opens as an animated 3D graph in its own window: folders as rings, notes as orbs sized by connectivity and coloured by folder, with containment and link lines and a starfield background. Layout runs in a worker with a main-thread fallback, and apps without native webview windows show the same graph in a pane. (#659)

### Tripo operations wait for completion and save project files

A Tripo request now runs to completion inside one operation: the agent receives the saved project file paths for every artifact, or a clear failure with the reason, instead of polling job status and fetching results itself. An output location can be chosen up front and survives a lost response, so an interrupted job is recovered without paying for the generation again. (#686)

## New

### Package webviews in their own native window

Packages can open a webview in a dedicated window instead of a pane, reusing the same page code and message API. The window is a singleton per package, view type and project, reopening reveals the existing panel, and it is not restored after a relaunch. (#655)

### Content-addressed store for downloaded files

A new machine-wide store keeps downloaded files by their SHA-256 hash and verifies size and hash before publishing anything, with a single commit path that never overwrites existing data. Owners are tracked per hash so files still in use are kept and unused blobs can be collected. (#663)

### Machine-wide runtime coordinator

A background coordinator now owns local runtime processes on a machine, handing out leases to the clients that need them so one copy of a runtime serves every window and project. It binds to the loopback interface, requires a per-start token, exits when idle, and refuses to be stopped by an older client. (#668)

### Runtime and image-model contribution points

Packages that are pure data can now declare runtimes and image models, including per-platform variants, download files, licences and the hardware tiers each model fits. A rule that fails drops only the runtime or model it names, never the whole package. (#662)

### Package settings: path fields and dynamic choices

Package settings gain an absolute-path field with a Browse button, plus writability and free-space feedback, and string fields whose choices come from a provider instead of a fixed list. A stored value that is no longer offered is shown as unavailable and never rewritten. (#666)

### Hardware probe

The kernel can report the machine's graphics adapters, video memory, driver version, compute capability, installed memory, operating system, free disk space and relevant system security settings, with results cached between runs. The answer is used as a hint when choosing between runtime variants. (#665)

### Kernel session tool settings with independent Tripo controls

Packages can declare their own session toolbar controls and settings, rendered natively with package, window, project and session ownership checked and stale edits reconciled. Tripo keeps five separate tools: clicking an empty tool opens its settings, choosing a subfeature activates it, and clearing the last selection turns it off without disturbing the others. (#661)

### Publisher-qualified tool server names

Package tool servers are now named publisher and name joined by a double dash, removing an ambiguity between similar package identifiers. Unqualified names still work but warn that they will stop being accepted in a later release, first-party legacy names keep standing, and an over-long name is reported with its length instead of being truncated. (#667)

### Local image runtime launch planning and failure classification

The local image runtime gains its deterministic half: it builds the launch arguments for a chosen model and hardware fit, parses which devices the backend can use, and classifies the ways a run can fail, such as a busy port, an invalid model file, a system policy block or a missing system library, into a reason the user can act on. (#672)

### Package settings from the CLI

Package settings can be read and written from the command line, with values parsed and validated by their declared type before anything is written, level restrictions respected, and unavailable choices reported. Exit codes separate success, refusal and usage errors. (#671)

### Coordinator job queue

The runtime coordinator now schedules generation jobs through a single backend slot, grouping waiting work by model and tiling, giving each key a fair turn once a dwell window has passed, and never interrupting an image that is already running. It can preload a model when a client appears, cancels queued or running jobs, and keeps finished jobs until a client collects them. (#670)

### Package tool results can carry images

A package tool can now return image blocks alongside text, passing the same size, dimension, format and encoding checks used for engine results; anything that fails becomes an explanatory text note while the rest of the result survives. The package API version moves to 0.3.0, and the CLI saves returned images into the project. (#674)

### Resumable, verified downloads

A kernel download manager fetches files into the content-addressed store from stable sources, resumes from partial data with range requests, verifies size and hash while streaming, and supports pausing, resuming, retrying and cancelling by group or by item. State is written as work starts, so a download resumed after a restart still finishes. (#669)

### Local image runtime package

A new first-party package describes the local image runtime as data: its platform variants for CUDA, Vulkan, Metal and a preview Linux build, the driver and library requirements each imposes, the model settings it exposes, and its licence components including the NVIDIA runtime terms. It ships without any code. (#673)

### Runtime coordinator ships with the CLI and desktop

The coordinator is now embedded in the CLI binary and started on demand, with a small command for checking or starting it. Desktop starts it when local runtimes are used, updates drain running work before replacing it, and portable and AppImage installations are handled. (#677)

### Desktop and CLI download transports

Real network transfers are now wired into the download manager on both surfaces, with redirect tracing that refuses downgrades and opaque redirects, a size fallback for hosts that only report it after the first hop, and one store and download manager per process. (#679)

### Local image server backend

The code that starts the local image server now spawns only from a verified runtime tree, waits for readiness against the exact model it launched, treats a silent fallback to CPU as a visible failure, and retries an out-of-memory launch once with a reduced video-memory budget. Unexpected crashes back off and are reported with a classified reason. (#676)

### Four local image model packages

Four data-only packages describe image models with their files, download sizes, default settings and the hardware tiers each one fits, so the app can pick a model the machine can actually run and can say clearly when none fits. Their licences and upstream revisions are recorded in the packages. (#678)

### Download progress in desktop notifications

Active downloads appear as live notifications in every window, with bytes, speed and estimated time remaining for each item, and pause, resume, cancel, retry and discard actions that any window can trigger. Updates are throttled, a window opened mid-download picks up current state on its first read, and finished items stay until you dismiss them. (#682)

### Model registry and variant selection

The kernel can now choose a runtime variant for the machine it is running on and explain each rejection, such as an older driver, insufficient memory or a missing system library, then match a downloaded model to a hardware tier. Downloaded models are usable from any project on the machine and can be removed or updated from the app. (#685)

### Progress lines in the CLI

The CLI shows download and package progress above the input: bytes, percentage, speed and remaining time per group, and one line per running item. Escape cancels the newest cancellable progress only when nothing else needs it, and a finished group leaves a single summary line. (#681)

### Browse a Tripo tool's generated assets

Each Tripo tool's settings popup shows a compact count of the assets it has produced this session, and opening it lists only that tool's completed files from the current session. Files open in the project viewer or the file manager, and an output that was moved or changed can be recovered without another paid generation. Nothing opens on its own. (#687)

### Storage, downloads and hardware APIs for packages

Packages gain access to the kernel's file store, download manager and hardware probe, with ownership of stored files forced to the calling package so one package cannot claim or release another's data. Long-running work returns immediately and reports progress through events; the namespaces ship as proposals and may change. (#684)

## Improved

### Reworked workbench themes and panels

The desktop workbench now uses a neutral black and metallic Dark palette, with the previous charcoal look kept as the separate Carbon theme. Panel headers, split corners, tabs and the sidebar share one geometry, every theme gains interactive empty-session scenes that respect reduced-motion settings, and splash and sign-in screens get their own ambient palettes. (#639)

### Catalog sync keeps saved model choices working

The client was brought up to date with the current server catalog contract, and older model versions saved in existing projects still send requests even when they no longer appear in the public catalog. (#656)

### Engine tool results carry images and compact JSON

Screenshot results from engine tools now arrive as real image attachments when they pass size, dimension and format checks, and as a short text note explaining why an image was skipped otherwise. Results are compact JSON instead of one pretty-printed block, and failed calls include the server's error message. (#645)

### Hidden image-generation placeholder removed

A hidden prototype capability row that did nothing is gone, and the icon it used now serves the Tripo 2D group. Stored selections that referenced the old identifier are ignored quietly and survive later toggles. (#664)

## Fixed

### Release job now checks out everything it needs

The announcement step failed before posting because a helper file was outside its partial checkout. The job now brings in every file it depends on, so approved notes can be assembled without installing anything. (#623)

### Full release checkouts on reused runners

After a partial checkout, a reused runner could come back with tracked files missing, which broke release verification. Full checkouts now restore the whole tree explicitly. (#624)

### Login tests stop opening browser tabs

Running the CLI login tests used to launch a real browser tab on the developer or CI machine on every run. The tests now stub the browser opener while keeping the real command wiring and assertions. (#640)

### Window controls match the title bar in every theme

The minimize, maximize and close strip could show a different background from the renderer title bar, especially behind the sign-in and startup screens. It is now transparent in all six themes so one continuous surface is painted, with themed glyph colours and existing modal dimming preserved. (#644)

### Sign-in when no browser is associated, and a skills shutdown race

On Windows machines with no default application for web links, signing in stalled at waiting for the browser without saying why. The app now shows a notice with the link and a copy-link action, and files with no associated app are revealed in the file manager instead of failing silently; a race when the skills service closed during shutdown is fixed as well. (#648)

### Package provider registration and webview cleanup

A package could be reported as failing to activate because its own declared provider was judged unowned while a package-set restart was still pending; the declaration is now accepted until that restart completes. A stale tip webview and a package folder that is not a plugin are handled without spurious errors. (#650)

### A wrong project folder is a usage error, not a crash

Running the CLI with a first word that is not a project folder, such as a misremembered subcommand, used to end in a raw stack trace and a crash report. The path is now checked before bootstrap, named in a clear message, and reported as a usage error with the matching exit code. (#647)

### Quieter crash reports at shutdown and on update checks

Windows log-off was being filed as an application crash, once for every process the system killed, and Chromium utility services killed from outside were filed too. Those deaths are no longer reported, repeats are collapsed to once per session, and update checks that cannot reach the network no longer raise errors. (#649)

### Sign-in for users far from the server

Connection attempts gave each resolved address only 250 milliseconds, so people roughly 300 milliseconds from the server could never finish account registration. Address families are now raced with a longer allowance, and sign-ins the user declined or that timed out are no longer filed as errors. (#651)

### Session agents use their window's own project

A window could start its session agent in a different project's directory when the saved global folder pointed elsewhere, so the Tools panel showed a tool enabled while provider lookup read the wrong project. Sessions now use the project directory captured for their window. (#657)

### Scrollbars clear of rounded corners

Rounded frame corners were clipping scrollbar thumbs in chat panels, side panels and tool popups. Scrollbars now keep a small margin at both ends on either axis, without shifting scroll content, in the app and in injected package webviews. (#660)

---

Source (HTML): https://ai-game.dev/releases/0.21.0
