New to GAIA? Start with the Quickstart for first-time setup, then come back here.
What You Can Do
Find Anything on Your PC
Ask the agent to locate files across your drives — by name, type, content, or recency. No more digging through folder trees.“Find all Python files in my Downloads folder” “Show me the largest files on my Desktop” “Search my project for files that import pandas”The agent searches your common folders first, then offers a deep search across all drives if nothing turns up.
Continue Work Across Turns
In-process chat agents retain file reads, tool calls and tool results for later questions, including after the server restarts. Complete older turns leave the model’s context only when its estimated history budget fills; the transcript and stored evidence remain on your machine. When more older turns leave the model’s view — a long chat, or a switch to a smaller model — the chat shows one quiet line before the reply — “Older messages are now out of the model’s view (N turns)” — and the TUI shows the same line in its transcript. Ask GAIA to recall anything from before it. A Hub-installed GAIA agent relayed from the Agent UI sees only the last 5 exchanges, and the chat says so once, when the sixth one lands. Earlier conversations saved before this feature retain text only. If the current prompt leaves no history budget, GAIA warns and sends no older turns; saved evidence remains intact. Switching to a model without native tool calling replays recorded calls and results as text. For Fireworks, AMD gateway, and catalog-discovered cloud models, history admission uses a conservative 64K budget, independent of local device settings andGAIA_CTX_SIZE; this is not
a claim about the remote model’s actual context capacity. Claude uses its provider
budget.
With a cloud model selected, the model chip and the sidebar’s location line name
the provider (for example Fireworks AI) instead of Local. They say
Local only when GAIA confirms the chat is answered on this PC, and make no
claim when it can’t tell. Hover either for what is sent: the whole conversation,
including anything read out of files, documents or memory, which themselves stay
stored on your machine.
Analyze Any Document
Drag files into the chat — or just ask the agent to find them. It indexes the content and lets you ask questions, extract data, compare sections, or get summaries. Works with:“Summarize this PDF in 3 bullet points” “Compare these two contracts and list the differences” “What’s the total spend in this expense report?”
Install
Pick the install path that fits you best:- Desktop installer (easiest)
- npm
- Python CLI
Prebuilt desktop installers are published on the
GitHub Releases page alongside
each tagged release. They bundle the Electron shell; Lemonade Server and
the default model are downloaded automatically on first launch. This is
the simplest path for non-developer end users.Artifact naming (See the Packaging & Distribution page for more detail on
the installers, supported platforms, and signing.
electron-builder.yml):
gaia-agent-ui-<version>-<arch>-setup.<ext> — e.g. gaia-agent-ui-0.17.2-x64-setup.exe
and gaia-agent-ui-0.17.2-amd64.deb.Windows (.exe):- Download Install GAIA for Windows from amd-gaia.ai (
gaia-<version>-win-x64-setup.exe) and run it. - Tick Desktop app on Choose Components (and the terminal too, if you want it), then launch “GAIA” from the desktop or Start Menu (binary:
gaia-desktop). - Update by running the newer installer; it keeps your choices.
- Uninstall via Windows Settings → Apps → Installed apps → GAIA.
gaia-agent-ui-<version>-x64-setup.exe, is still on Releases for scripted installs of the app alone.Ubuntu (.deb):Uninstall
- npm
- Python CLI
The window
The app opens straight to an empty chat: a message box, the model it will use, and where that model runs.- Sidebar: New chat, search, Memory, Scheduled tasks, Documents,
then your chats grouped by Today, Yesterday, Previous 7 days and older. At the
bottom: where answers are generated right now (for example
Local · Gemma-4-E4B-it-GGUForFireworks AI · glm-5p3-flash), notifications, mobile access and Settings. Collapse it withCtrl+B. - Message box: + attaches files (or drag them in), the shield picks the permission mode, the model chip picks the model, and Send turns into Stop while GAIA is working.
- Tool steps show as one quiet line (“3 steps · 1 tool”) you can open for the detail. “Steps” is the agent’s own count, the same figure the TUI and evals report.
- The line under an answer shows its time and the tokens the whole turn read and wrote, across every model call. Files the answer names by full path, such as a saved deliverable, open in your file explorer when clicked.
- “Getting GAIA ready… 12s” under the message box means a local model is reading GAIA’s instructions ahead of your first message, so that message gets a quick answer. You can type and send meanwhile; a message sent early waits for it to finish rather than starting over.
chat, doc and
file agents stay readable but can’t be continued; start a new chat instead.
Models and where they run
Open Settings → Model (or the model chip in the message box):- Keys are masked, go only to GAIA’s local model server and your OS credential store, and are refused over mobile access. When a key is already set (in the environment or from the TUI) the screen says so; leave the field blank to keep using it. Forget key removes it here and for future sessions.
- Recommended Fireworks models are ranked first, each with the benchmark result behind the pick.
- The model you choose is remembered across restarts (shared with the TUI). If it can’t be restored, a one-line notice says why and asks you to pick one.
- Switching from a local model to a cloud one shows the privacy note first.
When GAIA’s model server runs
Local chat runs on GAIA’s own Lemonade Server, the onegaia init installs.
GAIA manages it for you, and it gives its memory back when you stop using GAIA:
Every GAIA process that talks to the server holds a lease on it while it
runs: the app, each
gaia command, sidecar agents, and a process started with
another GAIA_HOME that points LEMONADE_BASE_URL at this server. The server
is never stopped while a lease is held or a request is in flight.
The server keeps the same port from one start to the next, and moves only if
another program has taken it. Its API key still changes on every start; read
the current one from ~/.gaia/lemonade/env.sh (env.ps1 on Windows).
Fifteen minutes balances giving the GPU memory back to other apps against
the cost of a cold model load, about 20 to 60 seconds, the next time you use
GAIA. Change it, or turn the timeout off with 0:
LEMONADE_BASE_URL: GAIA never unloads its models or stops it.
Which server and which GPU backend
Settings → Advanced → Model server shows what is actually running:- Server: GAIA’s own Lemonade or yours (another Lemonade on this PC, or one on another machine), with its version.
- Address: the URL and port GAIA talks to.
- Chat model and Runs on: the loaded model and its llama.cpp backend (Vulkan, ROCm, CPU), NPU, or Remote (cloud). “Lemonade’s default” means the load did not name a backend and Lemonade picked it. unknown means this Lemonade does not report it.
- Context window and the Embedding model with its backend.
LEMONADE_BASE_URL.
Permissions
GAIA asks before it changes files, runs commands or uses tools that act for you. The question appears above the message box with three answers:- Allow once
- Always allow this exact action in this chat (offered only when the action
is narrow enough to name, e.g.
write_file on notes.md) - Deny
Settings
One window with General (appearance: Light, Dark, Match system; shortcuts), Model, Permissions, Skills (what GAIA can load, with Use to try one), Connectors, Memory, Privacy and Advanced (model server and llama.cpp backend, context size, custom model ID, beta options, MCP servers, version and roll back). Settings → Advanced → Model server switches between GAIA’s own Lemonade Server and one you already run: enter its address (and its API key, if it needs one) and choose Use this server. The setup screen offers a Lemonade it finds running the first time. GAIA never changes your server’s setup: connecting a cloud provider uses the one your server already has, and says so if it has none. Use GAIA’s own is refused, with nothing changed, when GAIA’s own server isn’t installed;gaia init --gaia-lemonade installs it and switches. See
Use a Lemonade you already run.
Roll back to a previous version
If an update introduces a regression, you can roll back to a specific earlier release directly from the app — no need to hunt down an old installer on GitHub. How to roll back (desktop installer only):- Open Settings → Advanced.
- Click “Roll back to a previous version”.
- The app fetches the list of published releases from GitHub and shows them newest-first, with your currently installed version marked.
- Click an older release to open a confirmation step.
- Confirm — the app downloads the selected version and shows a native “Restart now?” prompt when ready. Click Restart and the older version launches.
Platform support
The rollback list only shows releases that have an installer for your current platform. Releases without a matching artifact are filtered out automatically.
Sessions and Shortcuts
Sessions let you organize conversations by topic. They sync between the CLI (gaia chat) and the Agent UI — start in one, pick up in the other. Export any session as Markdown or JSON from the session menu.
When GAIA asks permission, the prompt takes focus and
Enter does nothing, so a message you were typing can’t approve it. Escape denies (it takes priority over stopping the reply); Tab to Allow once or Always allow and press Enter or Space to approve. The prompt counts down the time the agent will wait, and GAIA denies when it runs out.
Long Responses
A chat reply has no time limit while the agent is making progress: model output, a tool starting or finishing, any step. A running tool, or a question or permission prompt waiting on you, also counts, since each has its own time limit. A model that stops sending is handled by GAIA’s model-stall check, which ends and retries the request. GAIA stops a reply only after 75 minutes with no progress at all, and the reply says so: “This turn ran for 75 minutes without progress, so GAIA stopped it.” Anything finished before then is kept; send “continue” to pick up where it left off. Change the window withGAIA_STREAM_TIMEOUT, set before GAIA starts:
Memory
The agent can remember facts, preferences, and decisions across sessions. Memory is on by default (beta) — see the Agent Memory guide to learn more. Turn it off in Settings → Memory, and open Memory in the sidebar to search, edit or forget what GAIA remembers.Scheduled Tasks
Run a prompt on a recurring schedule — “every morning at 9, summarize my inbox” — without leaving the UI. Click Scheduled tasks in the sidebar to open the Schedule Manager. Describe the schedule in natural language; the parser previews the interpretation live before you create it:
Each schedule runs in its own chat session, so the full history of runs (prompt + response per run) is one click away via the session list. Pause, resume, or delete schedules from the panel; run counts and the next-run countdown update live.
Behavior notes:
- Scheduled runs use the GAIA agent and the model you picked; with a local model nothing leaves your machine.
- Runs are suspended while mobile access (tunnel) is active, matching the autonomous agent loop’s security posture. Set
GAIA_AUTONOMOUS_ALLOW_TUNNEL=1to override. - One run executes at a time; overlapping schedules queue.
- Per-run timeout defaults to 300 s; override with
GAIA_SCHEDULE_TIMEOUT. - Times are your local time, taken from the browser’s time zone, and stay put across daylight-saving changes. A time skipped when clocks jump forward runs just after the jump; a time repeated when they fall back runs once. Schedules made before this was fixed were read in UTC; they move to this PC’s time zone on the next start.
/api/schedules (create/list/get), /api/schedules/{name} (pause/resume/cancel via PUT, delete via DELETE), /api/schedules/{name}/results (run history), and /api/schedules/parse (natural-language preview).
Policy Alerts and Receipts
When a governance-enabled agent blocks a tool call, the Agent UI shows a non-actionable policy alert instead of an approval prompt. Policy blocks appear as inline Policy Shield activity cards, critical notifications, and a toast with a View receipt link when a receipt ID is available. Policy alerts are durable session history. If you reload the UI or reconnect after a blocked request with no assistant text, the block reason, rule IDs, policy version, and receipt ID remain attached to the assistant message.Extend with MCP
The agent supports the Model Context Protocol in both directions — connect external tools to expand what the agent can do, or expose the Agent UI itself so other AI tools can drive it.Add Tools to the Agent
Connect GitHub, Slack, databases, and more via MCP servers
Expose Agent UI to Other Tools
Let Claude Code, Cursor, or any MCP client control GAIA agents
Troubleshooting
Lemonade Server not running
Lemonade Server not running
You shouldn’t have to start the model server yourself — The usual cause is that GAIA isn’t set up yet. The app shows its setup steps in that case;
gaia daemon starts and supervises it. So the question is why that didn’t happen.gaia init from a terminal does the same.No model loaded
No model loaded
Port 4200 already in use
Port 4200 already in use
Database locked error
Database locked error
Close any other GAIA Agent UI or CLI instances. Only one writer at a time is supported.
Document indexing fails
Document indexing fails
- Ensure the file is a supported format and does not need a password to open (PDFs with only permission restrictions index fine)
- Keep file size under 100MB
- For PDF image extraction, download the VLM model:
gaia download --agent chat
Access denied: path must be within one of ...
Access denied: path must be within one of ...
Documents can only be read from an allowed root. By default that is your
home directory — a file elsewhere on disk is rejected with HTTP 403.This bites on service accounts and CI runners, whose home
(Each entry must be an absolute path to a directory that exists; a relative
or missing one fails the request with HTTP 500 rather than being ignored.
The containment check still applies — declaring a root widens access to
that root only, never to its parent, and a symlink escaping it is still
rejected.Two limits worth knowing before you set this:
C:\Windows\System32\config\systemprofile) is not where their files live.
Add the extra directory before starting the server:- A declared root is browsable and previewable, but not searchable. File search and “open in file manager” still only look at your home directory, so files under a declared root are reachable by path but will not turn up by name.
- The roots apply to every client of the backend, including one reaching it over the tunnel feature. Declare only what you would be comfortable serving remotely.
First-run network egress to huggingface.co
First-run network egress to huggingface.co
The first time you index a document, Lemonade Server pulls the embedding
model (
user.embeddinggemma-300m-GGUF, ~334 MB) from huggingface.co,
cached under ~/.cache/huggingface/hub/. Subsequent runs are offline.If your environment blocks huggingface.co, pre-seed the cache on a
machine with internet access and copy it to the target machine, or set
HF_HOME to point at a pre-populated cache directory before launching
the UI.Frontend shows JSON instead of the UI
Frontend shows JSON instead of the UI
The Agent UI frontend has not been built.npm install (Then restart
gaia-ui): This is handled automatically — gaia-ui tells the Python server where to find the pre-built frontend. If you still see this error, try reinstalling: npm install -g @amd-gaia/agent-ui@latest Then restart with gaia-ui.Source/dev installs (git clone): Run gaia init to build it automatically, or manually (from the repo root):gaia chat --ui.pip/PyPI installs (without gaia-ui): Use the npm install path — the pip package does not include frontend source files.LLM response times out or fails
LLM response times out or fails
If you see “I wasn’t able to generate a response” errors, check your MCP server configuration. Misconfigured or unreachable MCP servers cause the agent to wait up to 10 seconds per server before responding.Check your config:If it contains servers you don’t recognize or aren’t running, either remove them or reset the file:You can also manage MCP servers through the Agent UI settings panel or with the CLI:
Architecture
For the REST API reference and backend classes, see the Agent UI SDK Reference.Next Steps
Agent UI SDK Reference
REST endpoints, database schema, and Python backend API
Document Q&A Agent
CLI-based document agent with RAG, debug mode, and chunking strategies
Build Your First Agent
Create a custom agent with tools in minutes
MCP Server
Connect Claude Code, Cursor, or any MCP client to the Agent UI
Hardware: Tested on AMD Ryzen AI MAX+ 395 with Qwen3.5-35B-A3B-GGUF via Lemonade Server. Other configurations may work — report issues here.