Skip to content

v0.25.1-rc2

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Oct 12:20
· 272 commits to main since this release
0b14d74

Important

Release candidate for v0.25.1. A pre-release for testing before the final ships. Installers and package managers keep offering the last final release unless you ask for this one.

GAIA v0.25.1 Release Notes

This release needs GAIA agent 0.3.1, which new installs get. With an older agent, private and memory-off chats stop with an update message instead of saving to memory, and Full access still can't open the folders you name.

Breaking Changes

  • The ChatSDK, ChatConfig, ChatResponse and ChatSession aliases are removed — import AgentSDK, AgentConfig, AgentResponse and AgentSession, their names since v0.20.0. (PR #5366)

What's New

  • Each chat shows where it runs and what it changed — a session panel lists the folders it may use, an internet switch, its outputs and every file it changed, and a rail beside each answer lists its sources and the files it wrote. (PRs #5326, #5246)
  • Undo a turn's file changes — Review changes shows the diff; Undo this turn restores every file, even after a restart. (PR #5239)
  • A turn's work reads in plain words — a live plan checklist and one line per tool call replace raw tool cards. (PRs #5245, #5269)
  • See what fills the context window and where the time goes, type while GAIA works, and retry an answer with another model. (PRs #5275, #5241)
  • Chats that need you come first — chats wait their turn for the GPU, and a tray icon shows whether GAIA is working or waiting on you. (PRs #5242, #5354)
  • The model picker shows where each model runs and whether it fits this PC; cloud models show their price before you pick one, with an optional monthly limit. (PRs #5244, #5270)
  • gpt-oss 20B and 120B are supported local models where they fit. (PRs #5356, #5374, #5357)
  • A new look — a frameless desktop window, eight color palettes, and new type and motion that reduced motion turns off. (PRs #5312, #5290, #5266)
  • First-run setup names the chat model and its download size up front. (PR #5240)
  • Lemonade Server v2026.42.1. (PR #5148)

Bug Fixes

A selection of the user-visible fixes; the full list is in the changelog below.

  • Full access opens the folders you name in the desktop app — it used to refuse them, often without asking. Ask mode shows Allow/Deny. (PR #5414)
  • Private and memory-off chats in the desktop app no longer save memories, and relayed chats show their cost and the full details of a permission prompt. (PR #5418)
  • A reply cut short by a restart says so — the Agent UI shows it as interrupted instead of an unanswered question, a resumed TUI session records it the same way, and a document caught mid-index shows Failed with Retry. (PRs #5386, #5390)
  • Esc closes a dialog without stopping the answer. (PR #5433)
  • A rejected cloud key names the fix for the app you are in, and files already saved are listed as saved. (PR #5440)
  • A turn the model gave up on is marked failed, not done, with what ran and what is unfinished. (PR #5432)
  • Ctrl+C on a TUI one-shot stops the agent's turn too. (PR #5435)
  • The desktop app survives an agent that died, and quitting stops every process it started. (PR #5438)
  • Web search keeps working when DuckDuckGo rate-limits — it retries, tries the lite endpoint, and uses Tavily if you connected it. (PR #5434)
  • "Undo may be incomplete" appears only when a snippet or script may have written files, and names what ran. (PR #5436)
  • GAIA stops only a Lemonade Server it started itself. (PR #5439)
  • A long turn that overflows the context window recovers — the overflow check looks only at the agent's own model, and the retry keeps older tool results one call away instead of dropping them. (PRs #5219, #5396)
  • Chats and apps sharing one model server wait their turn instead of failing, evicting each other's model, or reporting a busy server as stopped. (PRs #5321, #5328, #5336, #5337, #5314, #5317, #5264)
  • Closing one TUI session no longer stops the model server for every other session. (PR #5282)
  • A PC that sleeps mid-answer no longer wakes to a stall error. (PR #5387)
  • A failed turn is never re-run behind your back, so its tools don't run twice. (PR #5338)
  • Memory keeps only what you say about yourself, brings it up when a question is about it, stays current as facts change, and refuses corrupted entries. (PRs #5243, #5324, #5395, #5306)
  • A stuck MCP server, web fetch, media decode or chat bridge no longer hangs the turn, and document indexing has limits and a working Cancel. (PRs #5346, #5384, #5383, #5382, #5339)
  • Settings and shared state survive several GAIA processes at once — config writes, the file index and connector tokens are no longer lost or deleted. (PRs #5388, #5377, #5378)
  • GAIA no longer closes your own PowerPoint or ngrok tunnels. (PRs #5345, #5376)
  • Scheduled tasks show runs missed while the PC was off, run in windows that cross midnight, and recover after a crash. (PRs #5391, #5407, #5380)
  • A custom model downloads on its first chat, can be picked in the Agent UI once downloaded, and is no longer reloaded before every turn. (PRs #5360, #5449, #5362)
  • A missing file is reported as not found instead of asking you to approve it, and a download asks about the file, not its folder. (PRs #5307, #5308)
  • Your own scripts get 600 s instead of being killed at 30 s. (PR #5347)
  • One bad batch of parallel tool calls no longer ends the turn with no answer. (PR #5413)
  • gaia install --lemonade checks the installer's size and SHA-256 before running it, for every supported installer. (PRs #5389, #5455)
  • Model servers left behind by a crashed Lemonade are stopped, so the next start doesn't load the same models twice. (PR #5352)

Contributors

Thanks to the community members who contributed to this release:

  • @c0mrade8 — the context-overflow check that looks only at the agent's own model and its trained limit (PR #5219)
  • @agammann — validating the offline hub cache before reading its age (PR #5371)

Full Changelog

126 commits since v0.25.0:

  • d343b3aca — fix(ui): an upload queued for the model isn't stopped as stuck, and Cancel reaches it (#5448)
  • 72b945be4 — fix(ui): let the Agent UI pick a downloaded custom model (#5449)
  • 7e49b1602 — test: catch reverts of the scheduler lease, restart notice and tool limit (#5456)
  • 1158f69ba — test: four flaky unit tests pass reliably and stay out of ~/.gaia (#5468)
  • 53c6697cb — fix(lemonade): ask the daemon once per poll while waiting for GAIA's server (#5444)
  • 1441c1d74 — fix(installer): verify every supported Lemonade installer; clearer uninstall errors (#5455)
  • 107e47fa8 — fix(connectors): keep a connection another GAIA process just forwarded (#5467)
  • b4af7d5c3 — fix(ui): closing the chat database no longer crashes a read still in flight (#5472)
  • a069d793b — ci(release): push the flagship lock PR to a branch that can exist (#5473)
  • d0dc474b3 — fix(agents): report a turn the model gave up on as failed, not done (#5432)
  • 419dbf09a — ci(release): open a PR pinning the flagship's published hashes on main (#5447)
  • c64993de0 — fix(llm): only stop a Lemonade server the client launched itself (#5439)
  • f44b6c0b1 — fix(ui): only warn about untracked work that may have written files (#5436)
  • 143c04ed1 — test(browser): stub DNS in test_public_urls_pass (#5446)
  • 65ba1e173 — fix(agents): keep web search working when DuckDuckGo rate-limits (#5434)
  • 86fa4a6dc — fix(ui): name each front-end's fix for a provider 401/403, keep saved work (#5440)
  • 21f80a215 — fix(security): Full access grants named folders in the desktop app (#5414)
  • 97e117697 — fix(electron): survive a dead agent's stdin and stop every child on quit (#5438)
  • 6fe5e03ba — fix(tui): stop the agent's turn when a one-shot gets Ctrl+C (#5435)
  • 029082e17 — fix(agent): run a shell command the user asked for, and let the RSS tool decide (#4878)
  • 975a59c92 — fix(hub): validate offline cache before reading age (#5371)
  • 76c72aa03 — fix(webui): Esc closes a dialog without stopping the answer (#5433)
  • f20619470 — test(tui): wait for the stuck request to be accepted before stopping (#5437)
  • 48ad949a6 — chore(deps): bump Lemonade Server to v2026.42.1 (#5148)
  • 2387a0470 — test(llm): stop the load-backoff test recording the log lock's sleep (#5431)
  • a73c784db — fix(ui): say when a restart cut a reply or an index short (#5386)
  • e42db3add — fix(agents): one bad parallel batch no longer kills the turn (#5413)
  • d8a9ac363 — fix(agent): check only the agent's own model and clamp to trained ctx ceiling (#5219)
  • 71316cf80 — fix(agents): check claims next to negations and keep the real final answer (#5415)
  • 4b74329bd — fix(packaging): bundle pymupdf's package data in the flagship binary (#5420)
  • 88d277389 — fix(ui): relay token usage, permission details and memory mode to the sidecar (#5418)
  • 05084953a — fix(schedule): run windowed schedules that cross midnight (#5407)
  • 937422e8c — ci(linux): pin the CLI integration job to ubuntu-24.04 (#5416)
  • 8864a3d19 — fix(ui): retry startup settings and offer to install a missing GAIA agent (#5412)
  • 004f617e3 — chore(deps): bump the root-npm-dependencies group across 1 directory with 6 updates (#5372)
  • 85ffc5e5f — chore(deps): bump anthropics/claude-code-action from 1.0.240 to 1.0.252 in the github-actions group across 1 directory (#5044)
  • 2680bc48d — feat(ui): session panel — environment, outputs and changes per chat (#5326)
  • 4217c620a — test(ui,mcp): count scanner work and pin ping deadlines instead of timing them (#5409)
  • 2113c9626 — feat(ui): context and performance panel (what fills the window, where the time goes) (#5275)
  • b0d240f98 — feat(models): support gpt-oss 20B and 120B in the TUI and Agent UI (#5356)
  • 63b51a6fb — feat(ui): type while GAIA works, see context fill, retry with another model (#5241)
  • 0749c8d37 — feat(eval): long-horizon memory benchmark, and the stale-memory bugs it found (#5340)
  • 71e328762 — feat(perf): turn log records how busy the model server was (#5285)
  • af653f070 — feat(ui): model picker shows real device, fit and live status (#5244)
  • 761d89cc9 — fix: Agent UI and agent bugs found in an end-to-end UI test (#5311)
  • b45862286 — fix(mcp): expect the server-named crash error in the installer MCP harness (#5405)
  • b370ea0f0 — fix(memory): keep memory current as facts change over months (#5395)
  • 0cbbac6d4 — fix(llm): a PC that sleeps mid-answer no longer wakes to a stall error (#5387)
  • 75c6373d8 — ci: run every Strix Halo test on the devlab-dispatch pool (#5403)
  • 31f7b110e — fix(lemonade): register and download a custom model on its first chat (#5360)
  • 194363fc5 — fix(agent): overflow retry archives tool results instead of dropping them (#5396)
  • 76e51966a — fix(hub): stop an agent install that waits forever on a pip lock (#5381)
  • c5cfa8344 — fix(release): read released daemon APIs from PyPI, drop the hand-kept table (#5394)
  • 2086c04eb — fix(state): lock and atomically replace shared ~/.gaia files across processes (#5388)
  • 805a3b720 — fix(llm): auto_load fails loudly when the model cannot be downloaded (#5323)
  • c4b53529b — ci(release): retry-safe agent npm publishes; block on ancestor-skip lint (#5393)
  • 6ca505f38 — ci(linux-halo): check the Linux user issues on a real Strix Halo (#5163)
  • f004baeed — fix(daemon): a queued model request waits instead of failing, and shows it is waiting (#5328)
  • f4dcebef4 — fix(schedule): show runs missed while the PC was off or asleep (#5391)
  • c91dc176e — fix(utils): report a watched file once it has finished being written (#5385)
  • 8eb035379 — fix(messaging): stop a Slack or Telegram turn that makes no progress (#5382)
  • 3906fa0b3 — fix(web): give page fetches and downloads an overall deadline (#5384)
  • 446e752de — fix(ui): bound document indexing in parallelism, time and Cancel (#5339)
  • 46c273657 — chore(website,docs): retire the user-facing Agent Hub (#5365)
  • c2d6074e3 — fix(ui): stop reloading a custom model before every chat turn (#5362)
  • ee829a65f — chore(cli): hide gaia hub from help; fix hints name gaia init (#5368)
  • 2ffbb72c9 — feat(ui): a tray icon that shows what GAIA is doing and what needs you (#5354)
  • 7e39510b5 — fix(llm): stop gpt-oss reading control markup in files as its own (#5357)
  • 5a014465e — fix(ui): one chat no longer holds the model away from every other chat (#5337)
  • 664f91bbd — fix(audio): stop an ffmpeg decode that stops making progress (#5383)
  • f1b3b52f2 — fix(llm): stop calling a shared KV-cache collision "conversation too long" (#5322)
  • 884f5312f — fix(scheduler): a job left firing by a crash no longer stays stuck forever (#5380)
  • de79ca8a0 — fix(lemonade): stop the model servers a dead lemond leaves behind (#5352)
  • b4e08e574 — fix(mcp): stop a hung MCP stdio server from freezing the turn (#5346)
  • 92908a483 — fix(mcp): a busy tool call no longer takes the bridge offline (#5375)
  • 8010c6a28 — fix(agents): send items on every array tool parameter (#5374)
  • be663c8b2 — fix(llm): wait for a busy shared Lemonade instead of hanging or failing (#5321)
  • afdda1401 — fix(web): ask permission for the downloaded file, not its folder (#5308)
  • 8ddd6c115 — fix(ui): never re-run a failed chat turn behind the user's back (#5338)
  • 066a3f367 — feat(website): show the desktop app and the terminal at work in their install cards (#5351)
  • 15019a058 — fix(gaia-agent): save a turn the TUI's closing cut short as interrupted (#5390)
  • b8c2264fb — fix(daemon): never kill a live daemon because queued leases slowed its status (#5327)
  • 83cd38c77 — feat(ui): chat list shows what needs you, chats queue for the GPU, notification settings (#5242)
  • d5568b476 — feat(ui): frameless desktop window, color palettes, fading titles (#5312)
  • 04698b6a8 — fix(daemon): closing a TUI session no longer kills the shared model server (#5282)
  • fd4099383 — feat(ui): side rail with each answer's sources, files and data flow (#5246)
  • 645b63f97 — fix(security): report a missing path as not found instead of asking to approve it (#5307)
  • 873c68696 — fix(ui): busy model server is not reported as stopped; polls stop piling up (#5317)
  • 1e2d4704e — feat(ui): show cloud prices before connecting, and a monthly spending limit (#5270)
  • a37ee9e61 — fix(memory): refuse tool-call markup and model reasoning at the store (#5306)
  • 0efa63372 — feat(ui): show a turn's work in plain words, with a live plan checklist (#5245)
  • d10b423dc — fix(memory): background memory jobs stop overwriting the chat's prompt cache (#5286)
  • 0d61f0dd5 — feat(agent,ui): undo the file changes from a turn (#5239)
  • 185125945 — fix(lemonade): wait for GAIA's restarted model server instead of failing the turn (#5264)
  • 6c780d1a8 — feat(ui): warm gray and brass design tokens, soft-tinted controls, Inter (#5290)
  • 81e00990e — feat(ui): first-run setup names the chat model; new chats offer tasks (#5240)
  • 41c5cc557 — fix(ui): cap chat titles and 404 unknown /api paths (#5272)
  • 1c8187a2c — fix(ui): answer footer and permission prompts speak plainly (#5269)
  • 53cdd5023 — ci: stop the account switch, release evals and SWE-bench from going red on a clock (#5369)
  • ef78e7e70 — feat(ui): one motion system on shared tokens, off under reduced motion (#5266)
  • c9a468e3b — ci: cut ~143 runner-hours/week and move small hardware tests off Strix Halo (#5162)
  • 4fd125606 — fix(ui): stop the mobile tunnel killing the user's own ngrok tunnels (#5376)
  • 0d77e3e38 — fix(daemon): a daemon for a scratch home exits once nothing has used it for two hours (#5359)
  • 181c84e25 — fix(eval): the simulated user answers access prompts instead of letting them time out (#5358)
  • b2bd122da — test(agents): rate-limit sleep test counts only the agent's own sleeps (#5355)
  • 5d45d704f — fix(gaia-agent): set up a /query turn off the event loop (#5349)
  • 15200e87a — fix(rag): wait visibly on a busy embedder instead of resending batches (#5348)
  • 2a62a01b0 — fix(shell): give scripts a 600 s default instead of the 30 s kill (#5347)
  • 4bdeb8628 — fix(ui): system status answers in bounded time and tells down from busy (#5344)
  • 349830b34 — fix(ui): keep a running chat's replay buffer small and capped (#5343)
  • 75fd6ea76 — fix(ui): never take a model from under another chat or app (#5336)
  • 6e113b1c4 — fix(memory): surface stored facts in chats and keep saves out of sight (#5324)
  • 915d3a9f3 — fix(tui): a turn waiting for the model is not reported as broken (#5319)
  • 1c1546e30 — fix(tui): follow a daemon that restarted on a new port (#5318)
  • 41ebf01b0 — fix(ui): chat survives a busy, slow or dropped backend connection (#5316)
  • ade5bab45 — fix(lemonade): stop calling a busy shared server stalled, and retry a stolen port (#5314)
  • 0a14f8fd8 — fix(memory): remember only what the user says, and lead the memory page with it (#5243)
  • 889204189 — fix(connectors): stop concurrent token refreshes deleting the connection (#5378)
  • 11da36ac3 — fix(filesystem): stop deleting the file index when it is only locked (#5377)
  • 3a0f1a6b7 — fix(rag): never kill the user's own PowerPoint on a PPTX timeout (#5345)
  • 74c830ed6 — fix(installer): verify the Lemonade installer before running it (#5389)
  • 1ba144752 — chore: delete the disabled agent PyPI lane, ChatSDK aliases, and committed eval runs (#5366)
  • 363b1dc21 — ci(release): RCs publish without approval and never cancel each other (#5367)
  • 65415ee85 — chore(installer): retire the "Terminal Hub" name in user-facing text (#5364)
  • e6d49de58 — fix(hub): let by-reference publishes exceed the inline 250 MiB cap (#5363)
  • 7aaf5f05e — ci(release): remove the Context7 docs refresh from the release workflow (#5353)

Full Changelog: v0.25.0...v0.25.1


Installing this release candidate

Desktop app and terminal

Download the installer for your platform from the assets below:

  • Windows — gaia-0.25.1-rc.2-win-x64-setup.exe: one installer for the desktop app, the terminal, or both. gaia-agent-ui-0.25.1-rc.2-x64-setup.exe is the desktop app on its own
  • macOS — gaia-agent-ui-0.25.1-rc.2-arm64.dmg (Apple Silicon only)
  • Linux — gaia-agent-ui-0.25.1-rc.2-amd64.deb (Debian/Ubuntu) or gaia-agent-ui-0.25.1-rc.2-x86_64.AppImage (any distro)

The terminal hub is also attached as standalone binaries (gaia-<os>-<arch>, checksums in gaia-tui-SHA256SUMS.txt). The terminal's .pkg/.deb/.rpm packages ship with the final release.

The GAIA agent itself is attached as gaia-agent-<os>-<arch>, built from this candidate's commit. This candidate's gaia init and gaia hub install gaia install it from here rather than from the Agent Hub, and say so if it is missing.

Python CLI

pip install --pre amd-gaia            # newest pre-release
pip install amd-gaia==0.25.1rc2     # exactly this one

npm

npm install -g @amd-gaia/agent-ui@next

Found a problem? Open an issue and mention v0.25.1-rc2.