# `docker compose up` starts local infrastructure for fast agent iteration. # `docker compose --profile full up --build` also runs the LiveKit worker. name: uber-voice-agent services: postgres: image: postgres:16-alpine environment: POSTGRES_USER: uber POSTGRES_PASSWORD: uber POSTGRES_DB: uber_demo ports: - "${PG_PORT:-55432}:5432" # non-default host port: avoids clashing volumes: # with the futureagi platform's postgres - pgdata:/var/lib/postgresql/data # *.sql in this dir run in filename order on first boot only - ./db/schema.sql:/docker-entrypoint-initdb.d/01-schema.sql:ro - ./db/seed.sql:/docker-entrypoint-initdb.d/02-seed.sql:ro healthcheck: test: ["CMD-SHELL", "pg_isready -U uber -d uber_demo"] interval: 3s timeout: 3s retries: 20 tools-api: build: ./tools-api environment: DATABASE_URL: postgresql://uber:uber@postgres:5432/uber_demo ports: - "${TOOLS_PORT:-18090}:8080" depends_on: postgres: condition: service_healthy restart: unless-stopped healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8080/health')"] interval: 5s timeout: 3s retries: 20 agent: profiles: ["full"] build: . env_file: .env.local environment: # The harness may replace this with its recording proxy, but the default full stack must # always stay inside this Compose project rather than calling a host/demo service. TOOLS_API_URL: http://tools-api:8080 GOOGLE_APPLICATION_CREDENTIALS: /etc/vertex/creds.json volumes: # This is supplied once by the harness platform, not by each submitted repository user. # /dev/null keeps infrastructure discovery possible when voice credentials are absent; # run preflight then reports the missing platform capability before placing a call. - ${VERTEX_CREDENTIALS:-/dev/null}:/etc/vertex/creds.json:ro depends_on: tools-api: condition: service_healthy restart: unless-stopped volumes: pgdata: