name: anchor-nvidia-gb10 services: mongodb: image: mongo:8.0@sha256:02a0cc7939f5ed38f30f9bc714ef5f682d49baf9350c54acf302ce833087fe8a environment: MONGO_INITDB_ROOT_USERNAME: anchor MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD:-anchor-gb10-local-only} MONGO_INITDB_DATABASE: anchor volumes: - mongo-data:/data/db tmpfs: - /tmp:size=128m,mode=1777 security_opt: - no-new-privileges:true restart: unless-stopped healthcheck: test: - CMD-SHELL - >- mongosh --quiet --host 127.0.0.1 --username $$MONGO_INITDB_ROOT_USERNAME --password $$MONGO_INITDB_ROOT_PASSWORD --authenticationDatabase admin --eval "quit(db.adminCommand('ping').ok ? 0 : 2)" interval: 10s timeout: 5s retries: 20 start_period: 20s mongo-express: image: mongo-express:1.0.2-20@sha256:30fc6333779340217c6a2bc0bc3cd53aa46028ab8fc6caef41bd00bf0faacf53 profiles: [inspect] ports: - "127.0.0.1:${MONGO_EXPRESS_PORT:-8081}:8081" environment: ME_CONFIG_MONGODB_URL: mongodb://anchor:${MONGO_PASSWORD:-anchor-gb10-local-only}@mongodb:27017/?authSource=admin ME_CONFIG_BASICAUTH_ENABLED: "true" ME_CONFIG_BASICAUTH_USERNAME: ${MONGO_EXPRESS_USERNAME:-anchor-inspector} ME_CONFIG_BASICAUTH_PASSWORD: ${MONGO_EXPRESS_PASSWORD:-anchor-gb10-inspect-local-only} depends_on: mongodb: condition: service_healthy read_only: true tmpfs: - /tmp:size=32m,mode=1777 security_opt: - no-new-privileges:true cap_drop: - ALL restart: unless-stopped nemotron: image: ${NVIDIA_VLLM_IMAGE:-nvcr.io/nvidia/vllm:26.05.post1-py3} pull_policy: if_not_present entrypoint: ["/bin/bash", "-c"] command: - | vllm serve /models/nemotron \ --served-model-name nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-NVFP4 \ --host 0.0.0.0 \ --port 8000 \ --max-model-len ${NEMOTRON_MAX_MODEL_LEN:-8192} \ --gpu-memory-utilization 0.35 \ --max-num-seqs 8 \ --trust-remote-code \ --enable-auto-tool-choice \ --tool-call-parser qwen3_coder \ --reasoning-parser nemotron_v3 \ --moe-backend flashinfer_cutlass \ --async-scheduling \ --kv-cache-dtype fp8 environment: FLASHINFER_DISABLE_VERSION_CHECK: "1" ports: - "127.0.0.1:${NEMOTRON_PORT:-18000}:8000" volumes: - ${NEMOTRON_MODEL_DIR:?Set NEMOTRON_MODEL_DIR}:/models/nemotron:ro - nemotron-cache:/root/.cache/vllm shm_size: 16gb ulimits: nofile: 2048 deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] restart: unless-stopped healthcheck: test: ["CMD-SHELL", "curl -f http://127.0.0.1:8000/health || exit 1"] interval: 20s timeout: 10s retries: 90 start_period: 120s digital-twin: image: ${ANCHOR_APP_IMAGE:-anchor-nvidia-gb10:latest} build: context: app dockerfile: Dockerfile.csm-cuda additional_contexts: csm_wheels: ${CARELINE_CSM_WHEELHOUSE:?Set CARELINE_CSM_WHEELHOUSE} ports: - "${CARELINE_BIND_ADDRESS:-0.0.0.0}:${CARELINE_PORT:-8100}:8100" environment: CARELINE_LLM_BASE_URL: http://nemotron:8000/v1 CARELINE_LLM_MODEL: nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-NVFP4 CARELINE_LLM_STRONG_BASE_URL: http://nemotron:8000/v1 CARELINE_LLM_STRONG_MODEL: nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-NVFP4 CARELINE_LLM_MAX_TOKENS: "120" CARELINE_REASONING_BUDGET_TURN: "0" CARELINE_REASONING_BUDGET_EXTRACT: "0" CARELINE_CLONE_BACKEND: cuda CARELINE_CSM_MODEL_DIR: /models/sesame-csm-1b CARELINE_SELF_REF_AUDIO: /run/careline/self_ref.wav CARELINE_SELF_REF_TEXT: /run/careline/self_ref.txt CARELINE_STT_BACKEND: local-whisper CARELINE_STT_MODEL_DIR: /models/whisper-tiny-en CARELINE_TTS_BACKEND: nim CARELINE_MONGO_URI: mongodb://anchor:${MONGO_PASSWORD:-anchor-gb10-local-only}@mongodb:27017/anchor?authSource=admin CARELINE_MONGO_DB: anchor ANCHOR_DEMO_ACCESS_KEY: ${ANCHOR_DEMO_ACCESS_KEY:-} CARELINE_OPENCLAW_WAKE_URL: ${CARELINE_OPENCLAW_WAKE_URL:-} CARELINE_OPENCLAW_HOOK_TOKEN: ${CARELINE_OPENCLAW_HOOK_TOKEN:-} volumes: - ${CARELINE_CSM_MODEL_DIR:?Set CARELINE_CSM_MODEL_DIR}:/models/sesame-csm-1b:ro - ${CARELINE_STT_MODEL_DIR:?Set CARELINE_STT_MODEL_DIR}:/models/whisper-tiny-en:ro - ${CARELINE_SELF_REF_AUDIO:?Set CARELINE_SELF_REF_AUDIO}:/run/careline/self_ref.wav:ro - ${CARELINE_SELF_REF_TEXT:?Set CARELINE_SELF_REF_TEXT}:/run/careline/self_ref.txt:ro deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] init: true read_only: true tmpfs: - /tmp:size=1g,mode=1777 security_opt: - no-new-privileges:true cap_drop: - ALL restart: unless-stopped depends_on: nemotron: condition: service_healthy mongodb: condition: service_healthy healthcheck: test: ["CMD", "python", "-c", "import json, urllib.request; data=json.load(urllib.request.urlopen('http://127.0.0.1:8100/api/status')); assert data['ready']"] interval: 10s timeout: 5s retries: 30 start_period: 30s share-proxy: image: cloudflare/cloudflared:2026.8.2@sha256:0aa26e284f05e6c77ae375b8c9c11d9eb6a448fb7bcd8d40f31cb6176189eb38 profiles: [share] command: tunnel --no-autoupdate --url http://digital-twin:8100 depends_on: digital-twin: condition: service_healthy read_only: true tmpfs: - /tmp:size=16m,mode=1777 security_opt: - no-new-privileges:true cap_drop: - ALL restart: unless-stopped volumes: mongo-data: nemotron-cache: