Overview
GAIA’s agent registry lets you extend the Agent UI with your own custom agents. Each agent lives in its own directory under~/.gaia/agents/ and is described by either a YAML manifest or a Python module. Once placed there, the agent appears automatically in the agent selector dropdown of the GAIA UI.
Custom agents can have their own:
- Personality and instructions (system prompt)
- Tools (RAG, file search, shell, image generation, vision)
- Preferred models (override the server default)
- Conversation starters (suggestion chips in the UI)
- MCP servers (any Model Context Protocol server)
Quick Start: Gaia Builder Agent
The fastest way to create an agent is to use the built-in Gaia Builder Agent.Click the + button
In the chat input footer, click the + icon (to the left of the agent picker).
On the welcome screen, click Build a Custom Agent.
Follow the prompts
The Builder Agent will greet you, ask for a name, and create your agent automatically.
~/.gaia/agents/<your-agent-name>/agent.py.
Open that file to customize the instructions and add tools.
Manual Creation: YAML Manifest
For full control, write the manifest yourself.Directory structure
Minimal manifest
The smallest valid manifest needs onlyid, name, and instructions:
Full manifest reference
Available tools
| Tool | What it does |
|---|---|
rag | Document Q&A with RAG — index and query files |
file_search | Find files on disk by name or content |
file_io | Read and write files |
shell | Execute shell commands |
screenshot | Capture screenshots |
sd | Generate images with Stable Diffusion |
vlm | Analyze images with a Vision Language Model |
Advanced: Python Agent
For agents that need custom tools or complex logic, write a Python module instead of (or alongside) a YAML manifest.Directory structure
Minimal Python agent
| Method | Purpose |
|---|---|
_get_system_prompt() | Returns the system prompt string |
_create_console() | Returns an AgentConsole instance |
_register_tools() | Registers tools into _TOOL_REGISTRY |
Examples
Zoo Agent — simple YAML personality
Zoo Agent — simple YAML personality
Research Agent — RAG + file search
Research Agent — RAG + file search
Code Review Agent — shell + file I/O
Code Review Agent — shell + file I/O
Troubleshooting
My agent doesn't appear in the selector
My agent doesn't appear in the selector
- Ensure the directory is under
~/.gaia/agents/<id>/and containsagent.yamloragent.py. - The directory name does not need to match the
idin the manifest, but it helps. - Check the server logs for warnings like
Failed to load agent from .... - If you created the agent manually (not via the Builder), restart the GAIA server — discovery runs at boot. Agents created via the Builder Agent are loaded immediately without a restart.
Manifest validation errors
Manifest validation errors
Run
python -c "import yaml; from gaia.agents.registry import AgentManifest; AgentManifest(**yaml.safe_load(open('~/.gaia/agents/<id>/agent.yaml').read()))" to validate your manifest.Common issues:idmust be non-empty and contain only lowercase letters, numbers, and hyphens.toolsmust only reference known tool names (see table above).manifest_versionmust be1.
MCP server not connecting
MCP server not connecting
- Ensure
npxor the MCP server command is installed and accessible in$PATH. - Check the server logs for
MCPconnection errors. - Test the MCP server standalone before adding it to your agent.
Agent uses wrong model
Agent uses wrong model
If your preferred model isn’t loaded on the Lemonade server, GAIA falls back to the server default. Run
gaia init to download additional models.Next Steps
Agent System SDK
Deep dive into the base Agent class, tool registry, and state machine
MCP Integration
Connect any MCP server to extend your agent with external tools
RAG SDK
Add document Q&A to your agent with the RAG SDK
Agent UI Guide
Learn about the GAIA Agent UI and how agents are surfaced there