Skip to main content

Docker Containers

This plan is in development. Implementation has not started yet.

Overview

Three official Docker images for running GAIA in isolated environments:
  1. Linux Runtime (amd/gaia:linux) - GAIA pre-installed via pip
  2. Windows Runtime (amd/gaia:windows) - GAIA pre-installed via pip
  3. Development (amd/gaia:dev) - Full dev environment with Claude Code sandboxing
All images are self-contained—you create the container, then connect from your host terminal using 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
Use cases:
  • 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:
Key design decisions:
  • 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 run time, 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
Environment variables:
  • LEMONADE_BASE_URL - Lemonade URL (required)
Example usage:
Dockerfile:

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
Environment variables:
  • LEMONADE_BASE_URL - Lemonade URL (required)
Example usage:
Dockerfile:

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
NOT included in image (cloned on container startup):
  • GAIA repository (cloned to /src/gaia on first run)
Environment variables (required at docker run):
  • LEMONADE_BASE_URL - Lemonade URL
  • GITHUB_TOKEN - Token for cloning GAIA repo on startup
Example usage:
Startup behavior: On container creation, an entrypoint script:
  1. Authenticates gh CLI with GITHUB_TOKEN
  2. Clones https://github.com/amd/gaia to /src/gaia
  3. Runs uv pip install -e ".[dev]" to install in editable mode
  4. Container remains running for docker exec connections
Claude Code sandboxing: The dev image includes bubblewrap and socat for Claude Code’s sandboxing:
Dockerfile:
Entrypoint script (entrypoint.sh):

Connecting to Lemonade Server

All images require LEMONADE_BASE_URL to connect to a Lemonade Server.

Server setup:

Container configuration:

Set LEMONADE_BASE_URL to the URL of your Lemonade Server when creating the container:
Note: Use 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:linux
  • docker pull amd/gaia:windows
  • docker 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