Docker Containers
Overview
Three official Docker images for running GAIA in isolated environments:- Linux Runtime (
amd/gaia:linux) - GAIA pre-installed via pip - Windows Runtime (
amd/gaia:windows) - GAIA pre-installed via pip - Development (
amd/gaia:dev) - Full dev environment with Claude Code sandboxing
docker exec -it.
Motivation
Pre-built Docker images enable rapid testing and development with GAIA in one or two commands. Spin up an isolated environment, run tests, and tear it down instantly. Key benefits:- Rapid testing: Launch GAIA in seconds with
docker run+docker exec - Clean isolation: Test different configurations without affecting your host system
- Consistent environments: Same setup across all platforms and team members
- Quick cleanup: Remove containers when done, no residual files
- Rapid prototyping and experimentation
- CI/CD pipelines and automated testing
- Development in isolated environments
- Multi-configuration testing
- Containerized deployments
Architecture
Common Design Pattern
All three images follow the same pattern:- Self-contained: No volume mounts required (optional for persistence)
- Background execution: Containers run detached, accessed via
docker exec - Consistent ports: All images expose the same ports for predictability
- Environment config: Set at
docker runtime, not build time
Port Mappings
All images expose the same ports for consistency:
Map ports when creating container:
Image Specifications
1. Linux Runtime Image
Name:amd/gaia:linux
Base: python:3.12-slim
Contents:
- Python 3.12
- GAIA installed via
pip install amd-gaia - zsh shell
- Git, curl, basic utilities
LEMONADE_BASE_URL- Lemonade URL (required)
2. Windows Runtime Image
Name:amd/gaia:windows
Base: mcr.microsoft.com/windows/servercore:ltsc2022
Contents:
- Python 3.12
- GAIA installed via
pip install amd-gaia - PowerShell + cmd available
- Git for Windows
LEMONADE_BASE_URL- Lemonade URL (required)
3. Development Image
Name:amd/gaia:dev
Base: ubuntu:24.04
Contents (pre-installed in image):
- Python 3.12 + UV package manager
- Node.js LTS v20 + npm
- GitHub CLI (
gh) - Claude Code (
npm install -g @anthropic-ai/claude-code) - Sandboxing dependencies:
bubblewrap,socat - zsh shell, git, build tools
- GAIA repository (cloned to
/src/gaiaon first run)
docker run):
LEMONADE_BASE_URL- Lemonade URLGITHUB_TOKEN- Token for cloning GAIA repo on startup
- Authenticates
ghCLI withGITHUB_TOKEN - Clones
https://github.com/amd/gaiato/src/gaia - Runs
uv pip install -e ".[dev]"to install in editable mode - Container remains running for
docker execconnections
bubblewrap and socat for Claude Code’s sandboxing:
entrypoint.sh):
Connecting to Lemonade Server
All images requireLEMONADE_BASE_URL to connect to a Lemonade Server.
Server setup:
Container configuration:
SetLEMONADE_BASE_URL to the URL of your Lemonade Server when creating the container:
host.docker.internal to reference the host machine from inside the container (Docker Desktop feature).
Image Build & Distribution
Build locally
Official distribution
Images will be published to Docker Hub:docker pull amd/gaia:linuxdocker pull amd/gaia:windowsdocker pull amd/gaia:dev
Versioning
Images follow GAIA’s semantic versioning:amd/gaia:linux(latest)amd/gaia:linux-0.15.2(specific version)amd/gaia:dev(latest dev environment)
Vote on this plan: GitHub Issue #270