Skip to main content

Installation Issues

Generate detailed logs:
Common causes:
  • 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
If PATH update fails, add GAIA directories to PATH manually.
Restart your terminal, or manually add to PATH:Windows (PowerShell):
Linux:
Run this once to allow script execution:
Then retry the activation command.
GAIA requires Python 3.10-3.12. If uv venv fails:
uv will automatically download Python if not installed.
If 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:
Example error:
The GAIA installer now runs apt update automatically, but you may need to run it manually if you see these errors.

Agent & SDK Issues

Ensure imports use the correct package paths:
The @tool decorator must be inside _register_tools():
Check if Lemonade Server is running:
If not running, start it via the Lemonade tray icon (Windows) or:
If Lemonade is not installed, run:
Use the kill command to force stop Lemonade and child processes:
You’re seeing an error like:
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.
Remediation, in order:
  1. Wait 30s and resend the same query. The first call primes the KV cache; the second is materially faster.
  2. Reduce retrieved RAG chunks for large documents:
  3. Restart Lemonade cleanly:
  4. Close other GPU/NPU-heavy apps competing for the device (image generators, other LLM servers, GPU benchmarks).
See #1030 for the original report and the system-prompt-trim fix that reduces the per-request prompt size by ~5× to keep this from firing on typical indexed-PDF workflows.

API Server Issues

Ensure server is running (default port is 8080; also shared by gaia mcp docker so check for a collision):
Check if port is in use:
Use the correct model ID:
Default model ID is gaia-code.
Ensure Lemonade is running with sufficient context size:
Stop existing server or use a different port:

Model Issues

Models can become corrupted from partial downloads or disk issues. Re-run init with force-models:
Or delete all models and re-download:
Check your network connection and retry. For large models, ensure sufficient disk space (~25GB for chat profile).
Force re-download to get the latest version:

Voice & Audio Issues

The sounddevice package requires the PortAudio runtime library.Linux:
Windows users do not need to install PortAudio separately — it is bundled with the sounddevice Python package.
List available audio devices:
Try a different device index:
  • Check microphone permissions in system settings
  • Ensure microphone is not muted
  • Try speaking louder/closer to microphone
  • Check --audio-device-index is set correctly
Verify Kokoro TTS is installed:
Check audio output device is configured correctly.

RAG & Document Issues

Install the RAG extra:
Or for development:
  • Ensure PDFs have extractable text (not scanned images)
  • For scanned PDFs, use OCR preprocessing first
  • Check file permissions
  • Use --stats to monitor progress
  • Larger documents take more time
  • Consider chunking very large documents
  • Verify documents were indexed successfully at startup
  • Check console output for indexing confirmation
  • Ensure document path is correct

Routing Agent Issues

The routing agent may misdetect the language/framework.Solutions:
  • Be more specific in your query (mention the language)
  • Check the routing confidence in logs
  • Adjust routing thresholds if available
Solutions:
  • Include framework/language in initial query
  • Set default routing preferences
  • Adjust confidence thresholds
Check:
  • Lemonade Server is running
  • Routing model is loaded
  • Query format is valid

Evaluation Issues

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: pick the committed baseline matching your model under tests/fixtures/eval_baselines/ — don’t rely on mtime sorting.
Symptoms like 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 agent process 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.
If you encounter numpy/pandas/sklearn import errors:Symptoms:
  • ValueError: numpy.dtype size changed
  • ImportError: cannot import name 'ComplexWarning'
Fix:

Electron App Issues

Cause: Import path is incorrectFix: Use proper mocking in tests:
Cause: Async operations not completingFix: Add proper timeout handling:

AppImage on Linux

Cause: AppImage v2 requires FUSE 2. Ubuntu 24.04 LTS ships FUSE 3 by default, and the minimal installer does not include libfuse2 at all.Fix: install the FUSE 2 compatibility package:
After installing libfuse2, re-launch the AppImage:
Starting with GAIA 0.17.5, the Linux AppImage is packaged with --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:
If the Python backend bootstrap (uv, virtualenv, amd-gaia[ui] install) got interrupted or is in a half-installed state, clear the cached state and relaunch:
The AppImage will re-run its first-launch bootstrap from scratch.
The Linux AppImage writes logs under ~/.gaia/:
  • ~/.gaia/electron-install.log — Python backend bootstrap (uv, venv, pip install) output.
  • ~/.gaia/gaia.log — runtime backend log from gaia 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.
To inspect all active TCP listeners (the backend uses a dynamic port, not always 4200):
GAIA ships a gaia diagnostics command that bundles the logs above together with a short system-info snapshot (uname -a, distro info, relevant environment variables, ss -tlnp (all TCP listeners)) into a single tarball:
Options:
  • --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.
Attach the resulting .tgz to your GitHub issue.

Still Need Help?

FAQ

Common questions answered

GitHub Issues

Report bugs or request features

Email Support

Contact the GAIA team