mezame 0.8.2

An ACP client that bridges a local agent (Kiro CLI, Claude Agent CLI, Gemini CLI, Codex, ...) to a browser UI over WebSockets.
# Mezame on Alpine, orchestrated with Docker Compose.
#
# First-run setup (interactive, one-off):
#   docker compose run --rm setup
#   # inside the container:
#   kiro-cli login --use-device-flow     # or: export KIRO_API_KEY=ksk_...
#   mezame init
#   exit
#
# Normal run:
#   docker compose up
#   # or detached:
#   docker compose up -d
#
# The `setup` and `mezame` services share the same image and volumes, so
# credentials and config written during setup persist into the running
# service.

services:
  mezame:
    build: .
    image: mezame:local
    container_name: mezame
    command: ["mezame"]
    ports:
      - "9510:9510"
    volumes:
      - kiro-state:/root/.local/share/kiro-cli
      - kiro-sessions:/root/.kiro
      - mezame-config:/root/.mezame
    environment:
      # Optional. Alternative to `kiro-cli login --use-device-flow`.
      # Uncomment and set, or put KIRO_API_KEY in a .env file next to
      # this compose file.
      # KIRO_API_KEY: ${KIRO_API_KEY:-}
      KIRO_LOG_LEVEL: ${KIRO_LOG_LEVEL:-info}
    restart: unless-stopped

  # One-shot service for first-run setup. Same image, same volumes, but
  # interactive and without publishing the port. Invoked explicitly via
  # `docker compose run --rm setup`; never started by `docker compose up`
  # thanks to the `setup` profile.
  setup:
    build: .
    image: mezame:local
    profiles: ["setup"]
    command: ["bash"]
    stdin_open: true
    tty: true
    volumes:
      - kiro-state:/root/.local/share/kiro-cli
      - kiro-sessions:/root/.kiro
      - mezame-config:/root/.mezame

volumes:
  kiro-state:
  kiro-sessions:
  mezame-config: