Installation Issues
Installer fails or hangs
Installer fails or hangs
- Hardware Compatibility: The installer detects available hardware capabilities
- Driver Incompatibility: For Ryzen AI systems, ensure you have compatible NPU drivers
- PATH issues: If the installer can’t update your PATH, a warning will be displayed
uv not recognized after install
uv not recognized after install
PowerShell script execution error
PowerShell script execution error
CERTIFICATE_VERIFY_FAILED on a corporate network
CERTIFICATE_VERIFY_FAILED on a corporate network
CERTIFICATE_VERIFY_FAILED:- A warning says GAIA “could not switch HTTPS verification to the system
certificate store” — the
truststorepackage is missing or broken. Runpip install --upgrade "truststore>=0.10.0"in GAIA’s environment. The warning appears in the terminal, or ingaia daemon logs(add--agent <id>for an agent’s own requests). - No such warning in either place — the proxy’s root certificate is not in the OS store. Ask IT to install it there; opening the failing URL in a browser on the same machine tells you whether the OS trusts it.
Python version issues
Python version issues
uv venv fails:Lemonade install fails with 404 errors (Linux)
Lemonade install fails with 404 errors (Linux)
gaia init fails with 404 Not Found errors when installing dependencies:Cause: Your apt package cache is stale. Ubuntu repositories are updated frequently, and old package versions get removed.Solution: Update your package cache first:apt update automatically, but you may need to run it manually if you see these errors.gaia init fails with a Node.js version error (dev/source installs)
gaia init fails with a Node.js version error (dev/source installs)
gaia init builds the Agent UI frontend from source, which requires a
minimum Node.js version. If the node on your PATH is older than that, gaia init
now fails with an actionable error naming the required version, the version found, and
the exact node path in use — instead of silently reporting success with a broken UI.Solution: Install or switch to a newer Node.js. If you already have one installed
via nvm/fnm/volta, make sure it comes first on PATH — a system-installed Node can
shadow it in non-interactive shells (e.g. ssh host 'gaia init').Workaround: To skip the Agent UI frontend build entirely (the CLI still works),
pass --skip-webui-build or set GAIA_SKIP_WEBUI_BUILD=1.GAIA runs a second Lemonade next to mine
GAIA runs a second Lemonade next to mine
gaia lemonade connect http://localhost:13305, or
in the Agent UI under Settings → Advanced → Model server. Switching stops
GAIA’s own server. See
Use a Lemonade you already run.Connecting a cloud provider fails while GAIA uses my Lemonade
Connecting a cloud provider fails while GAIA uses my Lemonade
LEMONADE_FIREWORKS_API_KEY or
LEMONADE_AMD_API_KEY) in your server’s environment, then connect again. Or go
back to GAIA’s own server with gaia config set lemonade_mode gaia.The model list says macOS is asking for keychain access
The model list says macOS is asking for keychain access
Use GAIA's own says GAIA's server is not installed
Use GAIA's own says GAIA's server is not installed
gaia init --gaia-lemonade to install GAIA’s own and switch in one
step.gaia init can't download or start Lemonade Server
gaia init can't download or start Lemonade Server
gaia init downloads GAIA’s own Lemonade Server from GitHub into ~/.gaia/lemonade
and starts it on a private port. It needs no admin rights and never uses a package
manager. The error names which part failed:Failed to download …/dropped mid-transfer— GAIA could not reachgithub.com. Check your network or proxy and re-rungaia init.Checksum mismatch …— the download was corrupted. Re-rungaia init; if it keeps happening, the release asset changed and GAIA needs an update.not published for <OS>/<arch>— there is no Lemonade build for this machine (for example, Intel Macs). Run Lemonade Server on another machine and point GAIA at it withLEMONADE_BASE_URL.exited immediately/did not answer— the server started but failed. Its own error is in~/.gaia/lemonade/lemond.log.could not bind port …: it was taken by another program first— another program took each port GAIA picked before the server could bind it. GAIA tries three ports, and logs each retry. Free a port and start it there withgaia lemonade embedded start --port <port>. With--port, the error readsit is in use by another programinstead, and GAIA does not try another port.busy loading or swapping a model; requests wait for itingaia lemonade embedded status— its health check is slow while a model loads or unloads. It is working: don’t stop it.is running but not answering on port …— the server answers nothing, or its model backends have done no work for over 5 minutes. Check~/.gaia/lemonade/lemond.log; if it shows no progress, rungaia lemonade embedded stop, then start it again.
gaia init --force-reinstall.GAIA says the Lemonade Server is stuck or not answering
GAIA says the Lemonade Server is stuck or not answering
GAIA's Lemonade Server … is running but stuckorEmbedded Lemonade … is running but not answering— GAIA’s own server. Check~/.gaia/lemonade/lemond.logfor what it was doing. If it shows no progress, rungaia lemonade embedded stop, then start it again (or rungaia init).… is stuck rather than loading a model— the Lemonade you installed. Restart it with the command the error names, then retry.
gaia init can't install the GAIA agent
gaia init can't install the GAIA agent
gaia init installs the GAIA agent from GAIA’s download server (https://hub.amd-gaia.ai, or
GAIA_HUB_URL). If the server can’t be reached, setup finishes everything else, then
reports the setup incomplete and exits with code 1. The Agent UI setup shows the same
error instead of “GAIA is ready”.CERTIFICATE_VERIFY_FAILED: your network inspects HTTPS. Install the proxy’s root certificate in the system certificate store (IT usually can).- Anything else: check your internet connection, proxy settings, or
GAIA_HUB_URL.
gaia init again. The full error is in ~/.gaia/gaia.log.Agent & SDK Issues
Agent says a tool 'requires explicit user approval'
Agent says a tool 'requires explicit user approval'
gaia chat -q "…" > out.txt), a CI job, or a host process such as
the OpenAI-compatible gaia api server, which has no way to show a prompt.- Working interactively? Run the command in a terminal without redirecting
stdout, and answer the
[y]es / [N]o / [a]lwaysprompt. In the Agent UI, approve the permission dialog instead. - Genuinely unattended run you trust (CI, a batch job, a host that already
asked the user): export
GAIA_AUTO_APPROVE_TOOLS=1in the environment that launches GAIA. Every tool approved this way is logged with its name. A.envfile cannot set it — that would let a project directory switch off your prompts.
Memory recall fails with an OpenMP runtime error (macOS)
Memory recall fails with an OpenMP runtime error (macOS)
faiss-cpu and torch each ship their own copy of
libomp.dylib. With both loaded in one process, the next FAISS search
initialises the second copy and macOS kills the process outright —
OMP: Error #15, no traceback, nothing an error handler can catch. GAIA
refuses the search instead:torch, so it arrives from something else in the environment — another
package, or code a skill runs in-process. Memory recall needs faiss-cpu;
a virtual environment holding only GAIA and its extras is the fix.If your host runs both runtimes together without aborting, set
GAIA_ALLOW_FAISS_TORCH_OMP=1 to search anyway. Check it in a throwaway
process first — when the host is not in fact safe, the override restores the
crash rather than working around it.Agent not found after install
Agent not found after install
Module not found errors
Module not found errors
Tools not registering
Tools not registering
@tool decorator must be inside _register_tools():LLM not responding
LLM not responding
gaia daemon
resolves, starts and supervises it, and every front-end asks the daemon
instead of making you launch anything. So the question is why that didn’t
happen.Start with the daemon, which reports the model server it supervises:gaia init
installs the server and pulls the model:Lemonade Server won't stop
Lemonade Server won't stop
The local model didn't respond in time
The local model didn't respond in time
The local model didn’t respond in time. The Lemonade Server is running, but its model call timed out — usually because the model is still warming up (cold KV cache) or the prompt is too large for the current hardware on a fresh load.What it means. Lemonade Server itself is reachable; the upstream inference call (libcurl → child
llama-server) didn’t return a
first token before Lemonade’s internal timeout. This is distinct
from the connection-refused / unreachable case and uses its own
typed error (LemonadeUpstreamTimeoutError).Why it happens.- Cold KV cache — the first request after a model load or swap always pays a one-time prompt-processing cost. The same query will usually complete in a fraction of the time on the second try.
- Prompt too large for the hardware — heavy RAG retrieval or a multi-doc index can push the request past the iGPU/NPU prompt-processing budget on lower-spec systems. Reducing retrieved chunks is the most direct fix.
- Stale model state — a recent unload/swap can leave the llama-server child in a half-loaded state.
- Wait 30s and resend the same query. The first call primes the KV cache; the second is materially faster.
- Reduce retrieved RAG chunks for large documents:
- Restart the model server cleanly. This stops it and its child
processes; the daemon starts a fresh one on the next request:
- Close other GPU/NPU-heavy apps competing for the device (image generators, other LLM servers, GPU benchmarks).
API Server Issues
Connection refused
Connection refused
Model not found error
Model not found error
AGENT_MODELS is empty by default, so /v1/models returns no models until
one is registered:Agent processing failed
Agent processing failed
Port already in use
Port already in use
Not enough free memory
GAIA checks free memory before it loads a model, so a PC that is short on memory gets a message instead of a crash. The message says how much the model needs and how much is free:- The context window shrinks to fit. Gemma-4-E4B loads with a 65,536-token window when there is room, and otherwise steps down in 8,192-token steps to no less than 32,768. The log says so. Restart GAIA after freeing memory to get the full window back.
- Below 32,768 tokens, GAIA refuses. The flagship’s prompt and tools alone take about 20,000 tokens, so a smaller window could not answer.
gaia initpicks the chat model by free memory too. A PC that could hold Qwen3.6-35B-A3B but is short on free memory at setup gets Gemma-4-E4B, and setup says why. Close other apps and re-rungaia initto get Qwen3.6.- Under 24 GB of RAM, the Agent UI loads the model with your first message, not at startup. That first answer takes longer.
- Another Lemonade counts as used memory. GAIA runs its own Lemonade, so a
server you started yourself keeps its models loaded beside GAIA’s. To have GAIA
use that server instead, set
LEMONADE_BASE_URL(seegaia init, “Another Lemonade Server”).
Model Issues
Model appears corrupted or gives errors
Model appears corrupted or gives errors
Model download stuck or failed
Model download stuck or failed
gpt-oss answers nothing after reading a file or page
gpt-oss answers nothing after reading a file or page
<|channel|>, <|message|> and similar markers as its own reply
structure, so a file or web page containing them used to leave the reply empty, or
make the model server return an error. GAIA now breaks those markers up (< |channel|>)
before gpt-oss sees them, in every message and in the arguments of its earlier tool
calls, so the text still reads the same. Other models get the text unchanged. One
trade-off: gpt-oss sees < |channel|>, so an edit it asks for that quotes those exact
characters will not match the file; ask for that edit on another model. If an answer
is still empty, report it with gaia diagnostics.Wrong model version installed
Wrong model version installed
Voice & Audio Issues
PortAudio library not found
PortAudio library not found
sounddevice package requires the PortAudio runtime library.Linux:Audio device errors
Audio device errors
Speech not recognized
Speech not recognized
- Check microphone permissions in system settings
- Ensure microphone is not muted
- Try speaking louder/closer to microphone
- Check
--audio-device-indexis set correctly
TTS not working
TTS not working
RAG & Document Issues
Missing RAG dependencies
Missing RAG dependencies
gaia init installs the RAG extra and fails, showing the installer’s error, if that install fails. To install it yourself into the one-line installer’s environment (no pip, not activated):PDF processing errors
PDF processing errors
- Ensure PDFs have extractable text (not scanned images)
- For scanned PDFs, use OCR preprocessing first
- Check file permissions
Slow document indexing
Slow document indexing
- Use
--statsto monitor progress - Larger documents take more time
- Consider chunking very large documents
did not answer within 300s; the GPU or CPU it runs on is likely busy. Index the document again once the other work finishes.Context not being used
Context not being used
- Verify documents were indexed successfully at startup
- Check console output for indexing confirmation
- Ensure document path is correct
Embedding model downloaded but won't load (memory and document search off)
Embedding model downloaded but won't load (memory and document search off)
Memory is unavailable this session: the embedding model ... is downloaded but would not load, or indexing fails with model_load_error / llama-server failed to start.GAIA loads its embedding model on the GPU, using the llama.cpp backend Lemonade picks for your machine (Vulkan on most Windows and Linux PCs, Metal on a Mac). With ROCm it uses the CPU instead (see the next entry). If the GPU load fails to start, GAIA loads the embedding model on the CPU backend instead and logs a warning naming the model, the backend that failed, and the error:GGML_VK_DISABLE_COOPMAT=1 also avoids that crash, but it slows prompt processing for every model: Qwen3 30B A3B on a Radeon 8060S drops from about 1,290 to 680 tokens/s. Generation speed is unchanged.If the CPU load fails too, the cause is something else: out of memory, or a context size the model can’t take. Lemonade’s server log has llama-server’s own error.GPU stuck at 100% on ROCm with two models loaded
GPU stuck at 100% on ROCm with two models loaded
Evaluation Issues
--compare reports no baseline
--compare reports no baseline
gaia eval agent --compare only diffs scorecards — it does not run an eval.- Fix: Run the eval first (
gaia eval agent --category <cat>); it prints the run dir and writes<run-dir>/scorecard.json. - Then:
gaia eval agent --compare <baseline>/scorecard.json <run-dir>/scorecard.json. - Baseline: flagship baselines live in
tests/fixtures/eval_baselines/gaia-flagship/. None is committed yet, so until the first one lands there is no regression verdict to report, only the scores the run measured.
Eval runs fail with chaotic context/model errors
Eval runs fail with chaotic context/model errors
request exceeds the available context size, spurious INFRA_ERROR, or llama-server failed to start usually mean two evals raced the same Lemonade server.- Rule: run at most one
gaia eval agentprocess at a time — never in parallel (&). Chain runs serially instead. - Backend: the Agent UI backend must be running (
python -m gaia.ui.server --port 4200). - Judge access: if the run errors with
ANTHROPIC_API_KEY not found, export the key for the judge/simulator.
Dependency compatibility issues
Dependency compatibility issues
ValueError: numpy.dtype size changedImportError: cannot import name 'ComplexWarning'
Electron App Issues
Cannot find module 'electron'
Cannot find module 'electron'
Tests timeout
Tests timeout
AppImage on Linux
Ubuntu 24.04 LTS minimal: AppImage fails to mount
Ubuntu 24.04 LTS minimal: AppImage fails to mount
libfuse2 at all.Fix: install the FUSE 2 compatibility package:libfuse2, re-launch the AppImage:Chromium sandbox / --no-sandbox on Ubuntu 24.04.1+
Chromium sandbox / --no-sandbox on Ubuntu 24.04.1+
--no-sandbox by default. This works around Ubuntu 24.04.1’s
AppArmor-based unprivileged-userns restriction
(kernel.apparmor_restrict_unprivileged_userns=1), which otherwise
aborts Chromium with a FATAL sandbox error on first launch.Security note: --no-sandbox disables Chromium’s renderer sandbox
entirely — it is not a partial reduction. A compromised renderer can
reach anything the user account can: files in your home directory, the
keychain, network access. OS-level isolation (user account, AppArmor
profiles if any) is the only layer that remains. The .deb package
(gaia-agent-ui-*-amd64.deb) ships with the same --no-sandbox
posture as the AppImage for the same AppArmor-userns reason, so
switching packaging formats does not restore the Chromium sandbox on
Ubuntu 24.04.1+.Older AppImages (≤ 0.17.3) require the user to pass --no-sandbox
manually:App crashes at launch, or the window looks wrong on Wayland
App crashes at launch, or the window looks wrong on Wayland
SIGTRAP or core dump with no
window): the Chromium GPU process is crashing on your graphics stack.
Turn GPU acceleration off:GAIA_DISABLE_GPU=1 in your shell profile
(covers terminal launches), and add it to the Exec= line of the
desktop entry you launch from the app menu
(Exec=env GAIA_DISABLE_GPU=1 /path/to/gaia-agent-ui.AppImage %U). For
the .deb, don’t edit the entry in /usr/share/applications/, because
upgrades replace it: copy it to ~/.local/share/applications/ and edit
the copy, which overrides the system one. It accepts 1, true, or
yes, and also works on Windows and macOS.
The UI still works without the GPU; scrolling and animations may be
less smooth.The window is missing its frame, draws wrong, or won’t resize on
Wayland: run the app under XWayland instead:--ozone-platform=x11 to the desktop entry’s Exec=
line, using the same ~/.local/share/applications/ copy for the
.deb. Use the flag, not the ELECTRON_OZONE_PLATFORM_HINT
environment variable, which current Electron releases ignore.Resetting a broken bootstrap
Resetting a broken bootstrap
amd-gaia[ui] install)
got interrupted or is in a half-installed state, clear the cached state
and relaunch:Log files
Log files
~/.gaia/:~/.gaia/electron-install.log— Python backend bootstrap (uv, venv, pip install) output.~/.gaia/gaia.log— runtime backend log fromgaia chat --ui.~/.gaia/electron-main.log— Electron main-process stdout/stderr, teed to disk so errors are visible even when the app was not launched from a terminal.
gaia.log is capped at 10 MB. When it fills, it moves to gaia.log.1
(older copies shift to gaia.log.2 and gaia.log.3, and the oldest is
deleted), so all of GAIA’s logs together stay under about 40 MB. Change
the cap with GAIA_LOG_MAX_MB and the number of copies with
GAIA_LOG_BACKUPS. A gaia.log already larger than the cap is moved to
gaia.log.1 the first time GAIA starts, not deleted.To inspect all active TCP listeners (the backend uses a dynamic port, not always 4200):Collecting a diagnostics bundle for bug reports
Collecting a diagnostics bundle for bug reports
gaia diagnostics command that bundles the logs above,
including the rotated gaia.log.1, gaia.log.2, … copies, plus the
daemon, Lemonade and agent sidecar logs, together with a short
system-info snapshot (OS version, relevant environment variables, the
ports GAIA’s daemon, Lemonade and UI backend are on, and all TCP
listeners) into a single tarball:--output <path>— write the bundle to a custom path.--no-logs— omit log files (useful if logs might contain sensitive chat content). State and system info are still included.
.tgz to your GitHub issue.