version: '3.8' volumes: uploads: driver: local driver_opts: type: none o: bind device: ./data/uploads services: rowboat: build: context: ./apps/rowboat dockerfile: Dockerfile ports: - "${PORT:-3000}:3000" environment: - OPENAI_API_KEY=${OPENAI_API_KEY} - MONGODB_CONNECTION_STRING=mongodb://mongo:27017/rowboat - USE_AUTH=${USE_AUTH} - AUTH0_SECRET=test_secret - AUTH0_BASE_URL=http://localhost:3000 - AUTH0_ISSUER_BASE_URL=https://test.com - AUTH0_CLIENT_ID=test - AUTH0_CLIENT_SECRET=test - AGENTS_API_URL=http://rowboat_agents:3001 - AGENTS_API_KEY=${AGENTS_API_KEY} - COPILOT_API_URL=http://copilot:3002 - COPILOT_API_KEY=${COPILOT_API_KEY} - REDIS_URL=redis://redis:6379 - USE_RAG=${USE_RAG} - QDRANT_URL=http://qdrant:6333 - QDRANT_API_KEY=${QDRANT_API_KEY} - USE_RAG_UPLOADS=${USE_RAG_UPLOADS} - USE_RAG_S3_UPLOADS=${USE_RAG_S3_UPLOADS} - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} - RAG_UPLOADS_S3_BUCKET=${RAG_UPLOADS_S3_BUCKET} - RAG_UPLOADS_S3_REGION=${RAG_UPLOADS_S3_REGION} - USE_RAG_SCRAPING=${USE_RAG_SCRAPING} - FIRECRAWL_API_KEY=${FIRECRAWL_API_KEY} - USE_CHAT_WIDGET=${USE_CHAT_WIDGET} - CHAT_WIDGET_HOST=http://localhost:3006 - CHAT_WIDGET_SESSION_JWT_SECRET=${CHAT_WIDGET_SESSION_JWT_SECRET} - MAX_QUERIES_PER_MINUTE=${MAX_QUERIES_PER_MINUTE} - MAX_PROJECTS_PER_USER=${MAX_PROJECTS_PER_USER} - VOICE_API_URL=${VOICE_API_URL} - PROVIDER_API_KEY=${PROVIDER_API_KEY} - PROVIDER_BASE_URL=${PROVIDER_BASE_URL} - PROVIDER_DEFAULT_MODEL=${PROVIDER_DEFAULT_MODEL} - PROVIDER_COPILOT_MODEL=${PROVIDER_COPILOT_MODEL} - RAG_UPLOADS_DIR=/app/uploads - USE_KLAVIS_TOOLS=${USE_KLAVIS_TOOLS} - KLAVIS_API_KEY=${KLAVIS_API_KEY} - KLAVIS_GITHUB_CLIENT_ID=${KLAVIS_GITHUB_CLIENT_ID} - KLAVIS_GOOGLE_CLIENT_ID=${KLAVIS_GOOGLE_CLIENT_ID} - USE_BILLING=${USE_BILLING} - BILLING_API_URL=${BILLING_API_URL} - BILLING_API_KEY=${BILLING_API_KEY} - USE_COMPOSIO_TOOLS=${USE_COMPOSIO_TOOLS} - COMPOSIO_API_KEY=${COMPOSIO_API_KEY} - COMPOSIO_TRIGGERS_WEBHOOK_SECRET=${COMPOSIO_TRIGGERS_WEBHOOK_SECRET} restart: unless-stopped volumes: - uploads:/app/uploads # rowboat_agents: # build: # context: ./apps/rowboat_agents # dockerfile: Dockerfile # ports: # - "3001:3001" # environment: # - OPENAI_API_KEY=${OPENAI_API_KEY} # - API_KEY=${AGENTS_API_KEY} # - REDIS_URL=redis://redis:6379 # - MONGODB_URI=mongodb://mongo:27017/rowboat # - QDRANT_URL=http://qdrant:6333 # - QDRANT_API_KEY=${QDRANT_API_KEY} # - PROVIDER_BASE_URL=${PROVIDER_BASE_URL} # - PROVIDER_API_KEY=${PROVIDER_API_KEY} # - PROVIDER_DEFAULT_MODEL=${PROVIDER_DEFAULT_MODEL} # - MAX_CALLS_PER_CHILD_AGENT=${MAX_CALLS_PER_CHILD_AGENT} # - ENABLE_TRACING=${ENABLE_TRACING} # restart: unless-stopped # copilot: # build: # context: ./apps/copilot # dockerfile: Dockerfile # ports: # - "3002:3002" # environment: # - OPENAI_API_KEY=${OPENAI_API_KEY} # - API_KEY=${COPILOT_API_KEY} # - PROVIDER_BASE_URL=${PROVIDER_BASE_URL} # - PROVIDER_API_KEY=${PROVIDER_API_KEY} # - PROVIDER_DEFAULT_MODEL=${PROVIDER_DEFAULT_MODEL} # - PROVIDER_COPILOT_MODEL=${PROVIDER_COPILOT_MODEL} # restart: unless-stopped # tools_webhook: # build: # context: ./apps/experimental/tools_webhook # dockerfile: Dockerfile # ports: # - "3005:3005" # environment: # - SIGNING_SECRET=${SIGNING_SECRET} # restart: unless-stopped # simulation_runner: # build: # context: ./apps/experimental/simulation_runner # dockerfile: Dockerfile # environment: # - MONGODB_URI=mongodb://mongo:27017/rowboat # - ROWBOAT_API_HOST=http://rowboat:3000 # - OPENAI_API_KEY=${OPENAI_API_KEY} # restart: unless-stopped setup_qdrant: build: context: ./apps/rowboat dockerfile: scripts.Dockerfile command: ["sh", "-c", "npm run setupQdrant"] profiles: [ "setup_qdrant" ] depends_on: qdrant: condition: service_healthy environment: - QDRANT_URL=http://qdrant:6333 - QDRANT_API_KEY=${QDRANT_API_KEY} - EMBEDDING_VECTOR_SIZE=${EMBEDDING_VECTOR_SIZE} restart: no delete_qdrant: build: context: ./apps/rowboat dockerfile: scripts.Dockerfile command: ["sh", "-c", "npm run deleteQdrant"] profiles: [ "delete_qdrant" ] depends_on: qdrant: condition: service_healthy environment: - QDRANT_URL=http://qdrant:6333 - QDRANT_API_KEY=${QDRANT_API_KEY} restart: no rag-worker: build: context: ./apps/rowboat dockerfile: scripts.Dockerfile command: ["npm", "run", "rag-worker"] profiles: [ "rag-worker" ] environment: - GOOGLE_API_KEY=${GOOGLE_API_KEY} - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} - RAG_UPLOADS_S3_BUCKET=${RAG_UPLOADS_S3_BUCKET} - RAG_UPLOADS_S3_REGION=${RAG_UPLOADS_S3_REGION} - RAG_UPLOADS_DIR=/app/uploads - USE_GEMINI_FILE_PARSING=${USE_GEMINI_FILE_PARSING} - FIRECRAWL_API_KEY=${FIRECRAWL_API_KEY} - OPENAI_API_KEY=${OPENAI_API_KEY} - EMBEDDING_PROVIDER_BASE_URL=${EMBEDDING_PROVIDER_BASE_URL} - EMBEDDING_PROVIDER_API_KEY=${EMBEDDING_PROVIDER_API_KEY} - EMBEDDING_MODEL=${EMBEDDING_MODEL} - MONGODB_CONNECTION_STRING=mongodb://mongo:27017/rowboat - REDIS_URL=redis://redis:6379 - QDRANT_URL=http://qdrant:6333 - QDRANT_API_KEY=${QDRANT_API_KEY} - USE_BILLING=${USE_BILLING} - BILLING_API_URL=${BILLING_API_URL} - BILLING_API_KEY=${BILLING_API_KEY} restart: unless-stopped volumes: - uploads:/app/uploads jobs-worker: build: context: ./apps/rowboat dockerfile: scripts.Dockerfile command: ["npm", "run", "jobs-worker"] environment: - OPENAI_API_KEY=${OPENAI_API_KEY} - MONGODB_CONNECTION_STRING=mongodb://mongo:27017/rowboat - REDIS_URL=redis://redis:6379 - QDRANT_URL=http://qdrant:6333 - QDRANT_API_KEY=${QDRANT_API_KEY} - PROVIDER_API_KEY=${PROVIDER_API_KEY} - PROVIDER_BASE_URL=${PROVIDER_BASE_URL} - PROVIDER_DEFAULT_MODEL=${PROVIDER_DEFAULT_MODEL} - PROVIDER_COPILOT_MODEL=${PROVIDER_COPILOT_MODEL} - USE_BILLING=${USE_BILLING} - BILLING_API_URL=${BILLING_API_URL} - BILLING_API_KEY=${BILLING_API_KEY} - USE_COMPOSIO_TOOLS=${USE_COMPOSIO_TOOLS} - COMPOSIO_API_KEY=${COMPOSIO_API_KEY} restart: unless-stopped # chat_widget: # build: # context: ./apps/experimental/chat_widget # dockerfile: Dockerfile # profiles: [ "chat_widget" ] # ports: # - "3006:3006" # environment: # - PORT=3006 # - CHAT_WIDGET_HOST=http://localhost:3006 # - ROWBOAT_HOST=http://localhost:3000 # restart: unless-stopped mongo: image: mongo:latest ports: - "27017:27017" restart: unless-stopped attach: false volumes: - ./data/mongo:/data/db redis: image: redis:latest ports: - "6379:6379" restart: unless-stopped docs: build: context: ./apps/docs dockerfile: Dockerfile profiles: [ "docs" ] ports: - "8000:8000" # twilio_handler: # build: # context: ./apps/experimental/twilio_handler # dockerfile: Dockerfile # ports: # - "4010:4010" # environment: # - ELEVENLABS_API_KEY=${ELEVENLABS_API_KEY} # - ROWBOAT_API_HOST=http://rowboat:3000 # - MONGODB_URI=mongodb://mongo:27017/rowboat # restart: unless-stopped qdrant: build: context: . dockerfile: Dockerfile.qdrant ports: - "6333:6333" environment: - QDRANT__STORAGE__STORAGE_PATH=/data/qdrant restart: unless-stopped profiles: [ "qdrant" ] volumes: - ./data/qdrant:/data/qdrant healthcheck: test: ["CMD", "curl", "-f", "http://localhost:6333/healthz"] interval: 5s timeout: 10s retries: 3