services: kafka-data-init: image: busybox command: ["chown", "-R", "1000:1000", "/mnt/kafka-data"] volumes: - ${KAFKA_DATA_DIR:-kafka-data}:/mnt/kafka-data kafka: image: apache/kafka:3.8.0 depends_on: kafka-data-init: condition: service_completed_successfully environment: KAFKA_NODE_ID: 1 KAFKA_PROCESS_ROLES: broker,controller KAFKA_LISTENERS: PLAINTEXT://:9092,CONTROLLER://:9093 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092 KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka:9093 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 CLUSTER_ID: MkU3OEVBNTcwNTJENDM2Qk KAFKA_LOG_DIRS: /mnt/kafka-data ports: - "9092:9092" volumes: - ${KAFKA_DATA_DIR:-kafka-data}:/mnt/kafka-data healthcheck: test: ["CMD", "/opt/kafka/bin/kafka-broker-api-versions.sh", "--bootstrap-server", "localhost:9092"] interval: 5s timeout: 5s retries: 10 start_period: 20s bridge: build: context: . ports: - "8080:8080" environment: ARK_CONFIG_FILE: /var/lib/ark/config.yaml # Demo tokens. Change them (or unset them to allow only localhost) # before exposing this anywhere. ARK_API_ADMIN_TOKENS: ${ARK_API_ADMIN_TOKENS:-demo-admin-token} ARK_MCP_ADMIN_TOKENS: ${ARK_MCP_ADMIN_TOKENS:-demo-mcp-token} # Bearer token for the demo HTTP source (POST /ingest/demo). ARK_SOURCE_DEMO_TOKEN: ${ARK_SOURCE_DEMO_TOKEN:-demo-source-token} # Tokens for project MCP endpoints with tokens_env: ARK_PROJECT_DEMO_TOKENS. ARK_PROJECT_DEMO_TOKENS: ${ARK_PROJECT_DEMO_TOKENS:-demo-project-token} # Connection string for flow database steps with dsn_env: ARK_DEMO_DB. ARK_DEMO_DB: ${ARK_DEMO_DB:-} # The demo config is copied into the volume on first start, so console # and MCP changes are kept; docker compose down -v starts over. entrypoint: ["sh", "-c", "test -f /var/lib/ark/config.yaml || cp /etc/bridge/seed.yaml /var/lib/ark/config.yaml; exec ark"] volumes: - ${ARK_CONFIG:-./bridge-engine/config.demo.yaml}:/etc/bridge/seed.yaml:ro - ark-config:/var/lib/ark depends_on: kafka: condition: service_healthy ark-config-init: condition: service_completed_successfully # Lets the assistant reach a model server on this machine, such as # Ollama at http://host.docker.internal:11434/v1 extra_hosts: - "host.docker.internal:host-gateway" restart: on-failure:5 ark-config-init: image: busybox command: ["chown", "-R", "10001:10001", "/var/lib/ark"] volumes: - ark-config:/var/lib/ark demo-echo: build: context: ./bridge-engine entrypoint: ["demo-echo"] command: [] volumes: kafka-data: ark-config: