Skip to main content
Source Code: src/gaia/
Table of Contents

Introduction

GAIA is an open-source framework that runs generative AI applications on AMD hardware. GAIA uses ONNX Runtime GenAI via Lemonade Server for running Large Language Models (LLMs). GAIA utilizes both NPU and iGPU on Ryzen AI systems for optimal performance on 300 series processors or above.

Before You Start

System Requirements

Driver Requirements:

Software Requirements


Setup and Installation

GAIA uses uv, a fast Python package manager that handles virtual environments, Python installation, and dependencies automatically.

Step 1: Install uv

Windows (PowerShell):
Linux:

Step 2: Clone GAIA

Step 3: Create Virtual Environment

Note: GAIA supports Python ≥3.10 (classifiers cover 3.10, 3.11, 3.12 in setup.py), but linting configs (black/mypy in pyproject.toml) are pinned to py312, so 3.12 is recommended for contributors. uv will download 3.12 automatically if it’s not installed.

Step 4: Activate the Environment

Windows (PowerShell):
Windows (Command Prompt):
Linux:
You should see (.venv) in your terminal prompt when activated.

Step 5: Install Dependencies

Linux/WSL users: GAIA’s base dependencies (transformers, accelerate) require PyTorch. Always use --extra-index-url to install CPU-only PyTorch and avoid large CUDA packages (~2GB → ~200MB).
Windows:
With optional extras:
The --extra-index-url https://download.pytorch.org/whl/cpu workaround is only needed with plain pip. uv reads tool.uv.sources.pytorch-cpu from pyproject.toml and routes CPU-only torch wheels through the right index automatically.
Available extras (see setup.py for the full list):

Step 6: Claude Code Plugins (Optional)

GAIA ships a .claude/settings.json that declares two recommended Claude Code plugins from the official Anthropic marketplace:
  • frontend-design — higher-quality, less generic UI generation
  • superpowers — structured dev methodology (brainstorm → plan → TDD → review)
Plugins are not auto-installed silently. The first time you open this repo in Claude Code (v2.1.0+), you’ll see a prompt:
“This project declares plugins. Install them?”
Accept it once and the plugins become available for the repo. You can verify with:
To opt out, copy the entry into your local .claude/settings.local.json with false:

Deactivating

When done working:
See also: Agent SDK Documentation

Running GAIA

Verify Installation

Start Chatting

Note: GAIA automatically starts Lemonade Server when needed. For manual start: lemonade-server serve

Running Electron Applications

GAIA includes Electron-based GUI applications. To run the JAX (Jira Agent Experience) app: Windows:
Linux:

Agent UI Development

Start the Agent UI (backend + frontend) with the convenience scripts: Linux / macOS:
Windows PowerShell:
Or start manually:

Linting and Formatting

util/lint.py drives all repo lint tooling. Running it with no flags runs every check in sequence; pass a specific flag to run one:

Running Tests

Key fixtures live in tests/conftest.py (api_client, api_server, require_lemonade, lemonade_available). The require_lemonade fixture auto-skips integration tests when no Lemonade server is running.

Real-World Testing with Claude Code

Unit and integration tests prove code paths; they don’t prove a feature works end-to-end on real hardware. GAIA ships a gaia-testing skill (under .claude/skills/) for Claude Code: it drives the real interface — the Agent UI in a browser, the CLI, or the Agent UI MCP server (gaia mcp serve) — and brings back screenshots, logs, traces, and per-operation timing as evidence, all collected to your local machine. In a session, ask it to “test / validate / QA this feature with screenshots”; it scales from a unit-only run up to a full real-world run gated by a single approval prompt.

Declaring test machines

The real-world tier runs on a machine you nominate. The skill discovers candidates from your loaded Claude config only — it never scans your filesystem. Declare machines under a ## Dev Machines (or ## Test Machines) heading in either:
  • your user-level ~/.claude/CLAUDE.md (shared across all your projects) — which may summarise them inline and point to a detail file it loads, such as ~/.claude/memory/dev-machines.md; or
  • the project ./CLAUDE.md or .claude/settings.json.
Record each machine’s name, access method (local, SSH host, or container), hardware class (CPU / discrete GPU / Ryzen AI NPU), and any setup or test commands. With nothing declared, the skill targets your local machine.
Keep credentials out of committed files. Put sudo passwords, tokens, and keys only in your user-level config (or a memory file it points to) — never in the repo’s CLAUDE.md or .claude/settings.json. The skill reads them write-only and never echoes them into logs, screenshots, or reports.

Troubleshooting

”uv” command not found (Windows)

After installing uv, the command may not be recognized because PATH hasn’t updated. Solution 1: Restart PowerShell (simplest) Solution 2: Update PATH in current session:
Solution 3: Use full path:

Virtual Environment Activation Fails (Windows)

If you see a script execution error:

Model Loading Issues

  1. Check available system memory
  2. Verify model compatibility with your hardware
  3. Ensure all dependencies are correctly installed

Environment Variable Issues

  1. Verify the virtual environment is activated (look for (.venv) prefix)
  2. Try restarting your terminal
  3. Re-run the activation command for your platform

Support

Report issues to [email protected] or create an issue on GitHub.