Skip to main content

Overview

Docker Compose provides declarative configuration and easier management of Antigravity Manager containers. This method is ideal for persistent deployments on servers and NAS devices.

Prerequisites

  • Docker Engine 20.10+
  • Docker Compose V2 (or docker-compose 1.29+)
  • 1GB RAM recommended
  • Port 8045 available

Quick Start

Step 1: Get the Configuration

git clone https://github.com/lbjlaq/Antigravity-Manager.git
cd Antigravity-Manager/docker

Step 2: Configure Environment

Create a .env file in the same directory:
.env
# API Authentication
API_KEY=sk-your-secure-api-key-here

# Web UI Password (optional, defaults to API_KEY if not set)
WEB_PASSWORD=your-admin-password

# Logging
LOG_LEVEL=info

# Network Binding (true = localhost only, false = all interfaces)
ABV_BIND_LOCAL_ONLY=false
Security: Generate strong, unique values for API_KEY and WEB_PASSWORD. Never commit .env to version control.

Step 3: Start Services

docker compose up -d

Step 4: Verify Installation

# Check container status
docker compose ps

# View logs
docker compose logs -f

# Test health endpoint
curl http://localhost:8045/health

Docker Compose Configuration

Basic Configuration

docker-compose.yml
services:
  antigravity-manager:
    build:
      context: ..
      dockerfile: docker/Dockerfile
    image: lbjlaq/antigravity-manager
    container_name: antigravity-manager
    network_mode: host  # Direct localhost access
    volumes:
      - ~/.antigravity_tools:/root/.antigravity_tools
    environment:
      - LOG_LEVEL=${LOG_LEVEL:-info}
      - API_KEY=${API_KEY:-test}
      - ABV_BIND_LOCAL_ONLY=${ABV_BIND_LOCAL_ONLY:-true}
    restart: unless-stopped

Advanced Configuration

docker-compose.advanced.yml
services:
  antigravity-manager:
    image: lbjlaq/antigravity-manager:latest
    container_name: antigravity-manager
    
    # Use bridge network with port mapping (works on all platforms)
    ports:
      - "8045:8045"
    
    volumes:
      - antigravity-data:/root/.antigravity_tools
      # Optional: custom configuration
      - ./custom-config.json:/root/.antigravity_tools/gui_config.json:ro
    
    environment:
      # Authentication
      - API_KEY=${API_KEY}
      - WEB_PASSWORD=${WEB_PASSWORD}
      - AUTH_MODE=AllExceptHealth
      
      # Performance
      - ABV_MAX_BODY_SIZE=104857600  # 100MB
      
      # Network
      - ABV_BIND_LOCAL_ONLY=false
      - ABV_PUBLIC_URL=https://antigravity.example.com
      
      # Logging
      - LOG_LEVEL=debug
      - RUST_LOG=info
    
    # Resource limits
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 1G
        reservations:
          memory: 256M
    
    # Health check
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8045/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
    
    restart: unless-stopped
    
    # Logging
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

volumes:
  antigravity-data:
    driver: local

Environment Variables

API_KEY
string
required
API key for authenticating AI requests.Default in compose: test (change this!)
WEB_PASSWORD
string
Separate password for Web UI login. Falls back to API_KEY if not set.
LOG_LEVEL
string
default:"info"
Options: debug, info, warn, error
ABV_BIND_LOCAL_ONLY
boolean
default:"true"
In host network mode, binds to 127.0.0.1 if true, 0.0.0.0 if false.
ABV_MAX_BODY_SIZE
integer
default:"104857600"
Maximum request size in bytes (default: 100MB)
ABV_PUBLIC_URL
string
Public URL for OAuth callbacks (e.g., behind reverse proxy)
AUTH_MODE
string
default:"AllExceptHealth"
Authentication mode: Off, Strict, AllExceptHealth, Auto

Network Modes

Best for: Direct localhost access, minimal overhead
services:
  antigravity-manager:
    network_mode: host
    environment:
      - ABV_BIND_LOCAL_ONLY=true
Host network mode doesn’t work on macOS/Windows Docker Desktop.
Access at: http://localhost:8045

Volume Management

services:
  antigravity-manager:
    volumes:
      - antigravity-data:/root/.antigravity_tools

volumes:
  antigravity-data:
    driver: local
Benefits:
  • Docker-managed lifecycle
  • Easy backup/restore
  • Platform-independent

Bind Mount

services:
  antigravity-manager:
    volumes:
      - ~/.antigravity_tools:/root/.antigravity_tools
      # Windows: C:\Users\YourName\.antigravity_tools:/root/.antigravity_tools
Benefits:
  • Direct file access
  • Easy manual editing
  • Shared across containers

Managing Services

# Start in background
docker compose up -d

# Start with rebuild
docker compose up -d --build

Health Checks

Add health checks to monitor service availability:
services:
  antigravity-manager:
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8045/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
Check health status:
docker compose ps

Multi-Service Example

Deploy with Nginx reverse proxy:
docker-compose.full.yml
services:
  antigravity-manager:
    image: lbjlaq/antigravity-manager:latest
    container_name: antigravity
    networks:
      - app-network
    volumes:
      - antigravity-data:/root/.antigravity_tools
    environment:
      - API_KEY=${API_KEY}
      - WEB_PASSWORD=${WEB_PASSWORD}
      - ABV_BIND_LOCAL_ONLY=false
      - ABV_PUBLIC_URL=https://antigravity.example.com
    restart: unless-stopped

  nginx:
    image: nginx:alpine
    container_name: nginx-proxy
    networks:
      - app-network
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
      - ./ssl:/etc/nginx/ssl:ro
    depends_on:
      - antigravity-manager
    restart: unless-stopped

networks:
  app-network:
    driver: bridge

volumes:
  antigravity-data:
    driver: local

Backup and Restore

Backup Data

# Named volume backup
docker run --rm \
  -v antigravity-data:/data \
  -v $(pwd):/backup \
  alpine tar czf /backup/antigravity-backup-$(date +%Y%m%d).tar.gz -C /data .

# Bind mount backup
tar czf antigravity-backup-$(date +%Y%m%d).tar.gz ~/.antigravity_tools

Restore Data

# Named volume restore
docker run --rm \
  -v antigravity-data:/data \
  -v $(pwd):/backup \
  alpine tar xzf /backup/antigravity-backup-20260303.tar.gz -C /data

# Bind mount restore
tar xzf antigravity-backup-20260303.tar.gz -C ~/

Local Development Build

For local development with pre-built frontend:
docker-compose.localdist.yml
services:
  antigravity-manager:
    build:
      context: ..
      dockerfile: docker/Dockerfile.localdist
      args:
        USE_MIRROR: auto
    image: antigravity-manager:dev
    # ... rest of config
Build and run:
# Build frontend locally first
npm ci --legacy-peer-deps
npm run build

# Build and start container
docker compose -f docker-compose.yml -f docker-compose.localdist.yml up -d --build

Troubleshooting

Change the host port mapping:
ports:
  - "3000:8045"  # Use port 3000 instead
Fix permissions:
sudo chown -R $USER:$USER ~/.antigravity_tools
chmod -R 755 ~/.antigravity_tools
Ensure:
  1. Using bridge network mode (not host)
  2. ABV_BIND_LOCAL_ONLY=false
  3. Firewall allows port 8045
  4. Access via host IP: http://192.168.x.x:8045
Check logs:
docker compose logs --tail=50 antigravity-manager
Disable restart to debug:
restart: "no"

Next Steps

Headless Mode Features

Learn about headless-specific configuration options

Reverse Proxy Setup

Add HTTPS and custom domain with Nginx/Caddy

API Integration

Connect Claude CLI, OpenCode, and other clients

Monitoring

Set up logging and monitoring for production

Build docs developers (and LLMs) love