services: app: build: context: . target: app ports: - '127.0.0.1:4310:4310' environment: OWNER_TOKEN: ${OWNER_TOKEN:?Set a 24+ character OWNER_TOKEN in .env} APP_ORIGIN: ${APP_ORIGIN:-http://localhost:4310} OWNER_ID: ${OWNER_ID:-opendots-owner} DATABASE_URL: ${DATABASE_URL:-} POSTGRES_URL_NON_POOLING: ${POSTGRES_URL_NON_POOLING:-} POSTGRES_URL: ${POSTGRES_URL:-} USER_DATA_PATH: /data/users OWS_VAULT_PATH: /data/ows MEM0_API_KEY: ${MEM0_API_KEY:-} MEM0_BASE_URL: ${MEM0_BASE_URL:-https://api.mem0.ai} MEM0_ORG_ID: ${MEM0_ORG_ID:-} MEM0_PROJECT_ID: ${MEM0_PROJECT_ID:-} PRIVY_APP_ID: ${PRIVY_APP_ID:-} PRIVY_CLIENT_ID: ${PRIVY_CLIENT_ID:-} PRIVY_APP_SECRET: ${PRIVY_APP_SECRET:-} PRIVY_AUTH_ORIGIN: ${PRIVY_AUTH_ORIGIN:-https://auth.privy.io} INTELLIGENCE_API_KEY: ${INTELLIGENCE_API_KEY:-} CPK_INTELLIGENCE_API_KEY: ${CPK_INTELLIGENCE_API_KEY:-} CPK_TELEMETRY_ID: ${CPK_TELEMETRY_ID:-} INTELLIGENCE_API_URL: ${INTELLIGENCE_API_URL:-} INTELLIGENCE_GATEWAY_WS_URL: ${INTELLIGENCE_GATEWAY_WS_URL:-} INTELLIGENCE_WS_URL: ${INTELLIGENCE_WS_URL:-} DO_NOT_TRACK: ${DO_NOT_TRACK:-0} COPILOTKIT_TELEMETRY_SAMPLE_RATE: ${COPILOTKIT_TELEMETRY_SAMPLE_RATE:-1} COPILOTKIT_TELEMETRY_DISABLED: ${COPILOTKIT_TELEMETRY_DISABLED:-false} VOICE_API_KEY: ${VOICE_API_KEY:-} VOICE_MODEL: ${VOICE_MODEL:-} VOICE_NAME: ${VOICE_NAME:-marin} SLACK_CHANNEL_NAME: ${SLACK_CHANNEL_NAME:-} SLACK_TEAM_ID: ${SLACK_TEAM_ID:-} SLACK_USER_IDS: ${SLACK_USER_IDS:-} SLACK_DOT_ID: ${SLACK_DOT_ID:-} MODEL_PROVIDER: ${MODEL_PROVIDER:-openrouter} OPENROUTER_API_KEY: ${OPENROUTER_API_KEY:-} OPENROUTER_MUSEMODEL: ${OPENROUTER_MUSEMODEL:-${OPENROUTER_MODEL:-meta/muse-wonder}} OPENROUTER_MODEL: ${OPENROUTER_MODEL:-} OPENROUTER_CLAUDE_MODEL: ${OPENROUTER_CLAUDE_MODEL:-anthropic/claude-haiku-5.5} XAI_API_KEY: ${XAI_API_KEY:-} XAI_MODEL: ${XAI_MODEL:-grok-4.7} XAI_IMAGE_MODEL: ${XAI_IMAGE_MODEL:-grok-imagine-image-2.0} OPENAI_API_KEY: ${OPENAI_API_KEY:-} OPENAI_BASE_URL: ${OPENAI_BASE_URL:-https://api.openai.com/v1} OPENAI_MODEL: ${OPENAI_MODEL:-} WEB_SEARCH_PROVIDER: ${WEB_SEARCH_PROVIDER:-parallel} PARALLEL_API_KEY: ${PARALLEL_API_KEY:-} BIRDEYE_API_KEY: ${BIRDEYE_API_KEY:-} BROWSER_URL: http://browser:4311 BROWSER_SECRET: ${BROWSER_SECRET:-} volumes: - opendots-data:/data networks: - browser-link - app-egress init: true restart: unless-stopped security_opt: - no-new-privileges:true cap_drop: - ALL browser: profiles: [browser] build: context: . target: browser environment: BROWSER_SECRET: ${BROWSER_SECRET:-} networks: - browser-link - browser-egress init: true restart: unless-stopped shm_size: 256mb read_only: true tmpfs: - /tmp:size=256m security_opt: - no-new-privileges:true cap_drop: - ALL networks: browser-link: internal: true app-egress: browser-egress: volumes: opendots-data: