GAIA v0.25.0 Release Notes
Breaking Changes
gaia chatruns the flagship GAIA agent, the same agent as the TUI and Agent UI, instead of the retired ChatAgent. (PR #4520)gaia talktranscribes and speaks through Lemonade (Whisper andkokoro-v1), and stops with the reason if Lemonade is down. The[audio]extra is gone. (PR #4665)- The Agent UI runs only the GAIA agent — the Agent Hub home, agent picker, and custom-agent export/import are removed from the UI. (PR #4509)
- The retired nomic embedder is removed — memory saved with it is re-embedded on first start. (PR #4489)
- Indexed documents are re-indexed once — the first query after upgrading rebuilds the document cache. (PR #4624)
- A skill that asks for more than its tier allows no longer loads, including one already on disk; the refusal gives the reason. (PR #4849)
What’s New
- The Agent UI opens straight to a chat and sets itself up — a fresh install runs the TUI’s setup steps in the window, with provider, model and permission settings and revocable “always allow” grants. (PR #4509)
- A new chat answers its first message sooner — its prompt is cached as the chat opens, cutting a first “hello” on Qwen3.6 from ~43 s to ~21 s. (PR #5041)
- Long Agent UI turns keep running while they make progress. A turn stops only after a stretch with no progress (75 minutes by default, set in seconds with
GAIA_STREAM_TIMEOUT). (PRs #4916, #5200) - A larger local model where the GPU holds it —
gaia initpicks Qwen3.6-35B-A3B on a 64 GB+ Strix Halo or a 32 GB GPU and keeps Gemma-4-E4B elsewhere. Qwen3.8 Flash Next is opt-in on 128 GB Strix Halo. (PRs #4479, #4670, #4671, #4658, #4655) - A much smaller install — PyTorch, transformers and accelerate are gone; the desktop app’s Python environment drops from ~0.9 GB to ~0.1 GB on Windows. (PRs #4666, #4621, #4665)
- One Windows installer for the desktop app and the terminal, with a GAIA Windows Terminal profile. (PRs #4720, #4707)
- Setup works behind a TLS-inspecting corporate proxy — GAIA,
install.ps1and the desktop app’s first-run setup trust the OS certificate store, where IT installs the proxy’s certificate. (PRs #4952, #4937, #4938) - Setup installs GAIA agent 0.3.0, built from this release — the Agent Hub’s previous build predated tool approvals. (PRs #4939, #4940, #4941)
- A “no” holds — a declined action isn’t retried through another tool; the agent asks again with the exact command. The TUI gains Shift+Tab permission modes. (PRs #4460, #4461)
- Answers are checked against what the tools actually did, and a short note appears only when work isn’t confirmed. (PRs #4532, #4501, #4508)
- One shell session — commands share a persistent shell, risky ones ask instead of being refused, and “full access” is one setting everywhere. (PR #4408)
- Memory surfaces what’s relevant to each request, keeps what fixed a failure as a lesson, and saves after the answer instead of before it. (PRs #4061, #4066, #4406)
- Long chats say when older turns leave the model’s view, in the Agent UI and the TUI. (PR #5038)
- Document and memory indexing runs on the GPU — freeing ~11 CPU cores on Strix Halo. (PR #5051)
- DeepSeek V4.1 Flash is the default cloud model on the AMD LLM Gateway and Fireworks. (PR #4879)
Bug Fixes
A selection of the user-visible fixes; the full list is in the changelog below.Agent UI
- Tool approvals work with the Hub-installed GAIA agent — gated tools get Allow once / Deny instead of a “Nothing was executed” card that hung the run, a chat’s Full access mode reaches the agent, and answers to its mid-run questions are accepted. (PRs #4943, #4945, #4944)
- Documents reach the agent — files attached to a chat or with the composer’s + button, and documents indexed with no chat open, which now go into the next chat. (PRs #4974, #4955, #5001)
- Follow-up questions keep the conversation’s context with the Hub-installed GAIA agent. (PR #4926)
- A chat is named once, from its first exchange, instead of after its latest question, and is never named “safe” by a safety-classifier model. (PRs #5033, #5037)
- A message sent right after Stop is answered instead of refused until the stopped answer would have finished. (PR #4982)
- An agent installed while the Agent UI is running is picked up without restarting the server. (PR #4935)
- One unreachable MCP server no longer stalls every message by 10 seconds. (PR #4896)
- A bare-number answer shows the number, the status line counts seconds, and a failed or denied tool step is labelled failed. (PRs #5034, #4995, #5005, #5008)
- A failed turn shows its error without a click, and answers keep streaming in a chat that had a non-streaming turn. (PRs #4957, #4897)
gaia-uiexits with the backend’s error when the backend dies, instead of pointing at a page nothing serves. (PR #4933)- The Agent UI stops claiming “100% local” while chat goes to a cloud model, and the chat header names the session’s real model. (PRs #4711, #4550)
- Enter can’t approve a permission prompt, and prompts wait 10 minutes before timing out. (PRs #4700, #4699)
- Stopping a run keeps the turn and its steps visible. (PR #4743)
Terminal
- Setup step 1 installs Lemonade only, retries included, so you can pick a cloud provider before any model downloads. (PRs #4959, #4993)
- The setup gate starts a stopped daemon and agent itself, and gives a kept cloud key back to Lemonade after a reboot instead of asking you to reconnect. (PRs #4975, #4958)
- A cloud chat no longer needs the local chat model downloaded to get past the setup gate. (PR #4967)
/modeland the provider picker switch models instead of sending the choice to the agent as a chat message. (PR #4976)- A mistyped provider key no longer replaces one that works, and
/providerkeeps working after GAIA’s Lemonade restarts. (PRs #4994, #5002, #4997) - Quitting right after an answer keeps that turn’s memories — the TUI waits for them to be saved. (PR #5046)
- Windows remedies work in PowerShell — the Lemonade start hint and the
LEMONADE_SERVER_PATHfix give Command Prompt and PowerShell forms. (PRs #5045, #5047) - Edit prompts keep their line breaks, and an answer’s time no longer counts the time you spent deciding. (PR #5036)
gaia llm "hello"answers on Qwen3.6 instead of thinking until its token cap. (PR #4920)- The TUI remembers the chosen model across restarts and agent-process restarts. (PRs #4497, #4710)
gaia uninstall --purgeremoves installer binaries, PATH edits and daemon state. (PR #4413)
Install and setup
- A 16 GB PC no longer runs out of memory on the desktop app’s first launch — GAIA checks free memory before it loads a model, shrinks the context window to fit (to no less than 32K), and otherwise says how much memory it needs and what to close. First launch runs setup once, and PCs under 24 GB of RAM load the model with the first message. (PR #5117)
- A
default_modelyou chose is downloaded instead of Gemma, which image questions now fetch the first time you ask one, and an interrupted desktop install finishes setup on the next launch instead of reporting GAIA as installed. (PR #5117) - No surprise model downloads —
gaia init --skip-modelsdownloads nothing and says the chat model was skipped, the Agent UI and the GAIA agent don’t download a skipped model when they start, and cloud chats work without it. (PRs #4919, #4964, #4956, #4961, #4960) gaia initshows each model’s size and the total before asking to continue. (PR #4922)- Setup reports failure when the GAIA agent can’t be installed from the Agent Hub, naming the cause, instead of saying GAIA is ready. (PR #4950)
- The first daemon start on a fresh install no longer times out. (PR #4951)
- An older GAIA is only offered agent versions it can run. (PR #4948)
pip install --pregives a GAIA that can chat — httpx and APScheduler are capped below their next major versions. (PRs #4921, #4925)- Background processes on Windows no longer open blank console windows. (PR #5018)
gaia initfails when model verification fails, shows downloads live, and no longer hangs while Lemonade hashes a large model. (PRs #4620, #4564, #4673)gaia initadds a profile’s extras without reinstalling GAIA, which failed on Windows whilegaia.exewas running. (PR #4672)- Qwen3.6 runs on a Strix Halo with an older AMD driver — it used to crash on its first token, so
gaia initfailed; GAIA now turns off the Vulkan path that crashes on those drivers only. (PR #4674)
Agent and models
- Chats survive a Lemonade restart — an open chat follows GAIA’s Lemonade to its new port and gives it back the cloud key, and cloud keys go only to GAIA’s own Lemonade or the one in
LEMONADE_BASE_URL. (PRs #4977, #4981, #4999, #5000) - The agent’s shell tool now validates every command in a pipeline. (PR #5048)
- Every file tool checks the allowed-folders rule, and paths inside an inline shell script are checked one by one. (PRs #4656, #4758)
- Writes and approved edits can’t reach credential folders (
~/.ssh,~/.aws,~/.kubeand others), and shell option values and script arguments get the same path check as plain paths. (PRs #4848, #4847) - Child processes get a trimmed environment — shell, MCP and skill children no longer inherit GAIA’s internal credentials;
GAIA_NO_DOTENVskips loading.env. (PRs #4635, #4659) - Local Qwen models no longer loop on repeated tool calls — they run with their model card’s sampling instead of near-greedy settings. (PR #4655)
- A long PDF no longer hangs or times out while indexing — big documents index in the background, and PDFs that only carry owner-password restrictions now index. (PRs #4754, #4679, #4734)
- Document answers cite the right document and page, and every chunk is embedded whole instead of its first 1,200 characters. (PRs #4688, #4723)
- Every SDK and CLI entry point starts GAIA’s own Lemonade, and every call goes to the resolved URL with its API key. (PRs #4657, #4627)
- Local chat stays cached across turns — the system prompt is fixed and side requests no longer evict the conversation. (PRs #4698, #4543)
- A cloud model selection never preloads a local model, and cloud models no longer get llama.cpp-only fields. (PRs #4757, #4709)
- A file edit keeps the file’s line endings — a one-line edit on Windows used to rewrite every line ending, so a small change showed up as the whole file changed. (PR #4864)
- A broken agent install is reported as broken, not as missing — the error names both package versions and the real import error, and suggests a reinstall that works. (PR #4588)
- A meeting or document summary is never cut off mid-sentence — a thinking model used to spend the summary’s output budget reasoning. (PR #4827)
- “What can you do?” gets an answer instead of an attempt to generate an image of the question. (PR #4809)
gaia connectors connect google --grant-agent installed:gaiaworks — it now asks for read-only Gmail and grants exactly that. (PR #4859)- A “no” to creating a folder also covers writing into it. (PR #4857)
gaia skill importruns the same checks as a hub install — https only, the audit, the permission ceiling, and an explicit opt-in for skills that ship code. (PR #4849)- Memory off and private chats apply to scheduled and background runs too. (PRs #4842, #4821)
- Memory stops false apologies and reusing deleted values, saves “remember this” requests, and skips loading the embedder when memory is off. (PRs #4708, #4756)
- A reply cut off by the token limit is continued instead of ending mid-sentence, and a tool call cut off at the output cap is retried shorter. (PRs #4054, #4556)
- The GPU no longer sits at 100% on ROCm — with llama.cpp on ROCm, the embedding model runs on the CPU, and Settings → Model server says so. (PR #5274)
- GAIA no longer saves over the file you asked it to read from — “save the items in X as Y” writes Y, not X. (PR #5167)
- Pulling every item out of a document outside your folders asks first instead of refusing. (PR #5218)
- Fetch errors name the page you asked for, and web addresses in answers no longer turn into broken folder links. (PR #5238)
- The Agent UI fits better — wide tables scroll, composer menus stay inside the window, the model-wait hint stays quiet while a tool runs, and the Memory page shows chat titles. (PRs #5193, #5196, #5192, #5194)
- Chat models also labeled audio appear in the model picker. (PR #5140)
- The Linux tray shows the GAIA logo instead of a red square. (PR #5273)
- The Windows setup links to the docs and offers to open each app it installed. (PRs #5207, #5208)
gaia.logstays bounded — it rotates at 10 MB with three backups (GAIA_LOG_MAX_MB,GAIA_LOG_BACKUPS). (PRs #4668, #4760)
Known Issues
- Gemini models on the AMD LLM Gateway fail with the Hub-installed GAIA agent — the Agent UI and the TUI’s second and later sessions reply “Sorry, I ran into an unexpected problem”; pick another gateway model. Stop there also waits for the current model call to return. Fix in review: #5006.
Contributors
Thanks to the community members who contributed to this release:- @itomek — the flagship’s browser and tool picker, one shell session, memory extraction off the answer path, stale tool-result eviction, the TUI’s sourced Fireworks rankings, and
--purgecleanup (PRs #4407, #4408, #4406, #4465, #4414, #4413) - @mikemikimike — chained shell command timeouts, bundled skills in frozen builds, and sidecar cleanup reporting (PRs #4463, #4467, #4419)
- @madcow4242 — the
GAIA_STREAM_TIMEOUTsetting for long Agent UI turns (PR #4916) - @Hashim1999164 — honoring
GAIA_HOMEfor cache, chat and index paths (PR #4381) - @krtadev —
~expansion in file and document tool paths (PR #4576) - @aksh8b — telling a broken agent install apart from a missing one, with a reinstall hint that works (PR #4588)
- @Dev-next-gen — numeric prerelease ordering in the hub (PR #4517)
- @vianmangal — recording denied tool calls as unsuccessful in memory (PR #4412)
- @GaetanVDB07 — links to upstream credential setup guides for connectors (PR #4669)
- @rradjabi — moving self-hosted CI jobs to the xsj-dispatch runner pool (PR #4534)