Dokploy

Evolution CRM

Evo CRM Community is the open-source edition of the Evo CRM platform — a complete suite for AI-assisted customer support. It brings together authentication, CRM, AI agents, agent processing, bot pipelines and a modern frontend into a unified, self-hostable stack.

Evolution CRM logo

Configuration

services:
  evo-auth:
    image: evoapicloud/evo-auth-service-community:latest
    command: sh -c "bundle exec rails db:prepare && bundle exec rails s -p 3001 -b 0.0.0.0"
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "curl -f http://localhost:3001/up"]
      interval: 10s
      timeout: 5s
      retries: 10
      start_period: 120s
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy
    environment:
      - RAILS_ENV=production
      - RAILS_MAX_THREADS=5
      - SECRET_KEY_BASE=${SECRET_KEY_BASE}
      - JWT_SECRET_KEY=${JWT_SECRET_KEY}
      - EVOAI_CRM_API_TOKEN=${EVOAI_CRM_API_TOKEN}
      - POSTGRES_HOST=postgres
      - POSTGRES_PORT=5432
      - POSTGRES_USERNAME=postgres
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DATABASE=evo_crm_production
      - POSTGRES_SSLMODE=disable
      - REDIS_URL=redis://redis:6379/3
      - FRONTEND_URL=${FRONT_URL}
      - BACKEND_URL=${BACK_URL}
      - CORS_ORIGINS=${FRONT_URL},${BACK_URL}
      - DOORKEEPER_JWT_SECRET_KEY=${DOORKEEPER_JWT_SECRET_KEY}
      - DOORKEEPER_JWT_ALGORITHM=${DOORKEEPER_JWT_ALGORITHM}
      - DOORKEEPER_JWT_ISS=${DOORKEEPER_JWT_ISS}
      - MFA_ISSUER=${MFA_ISSUER}

  evo-auth-sidekiq:
    image: evoapicloud/evo-auth-service-community:latest
    command: ["bundle", "exec", "sidekiq", "-C", "config/sidekiq.yml"]
    restart: always
    healthcheck:
      disable: true
    depends_on:
      evo-auth:
        condition: service_healthy
    environment:
      - RAILS_ENV=production
      - SECRET_KEY_BASE=${SECRET_KEY_BASE}
      - JWT_SECRET_KEY=${JWT_SECRET_KEY}
      - EVOAI_CRM_API_TOKEN=${EVOAI_CRM_API_TOKEN}
      - POSTGRES_HOST=postgres
      - POSTGRES_PORT=5432
      - POSTGRES_USERNAME=postgres
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DATABASE=evo_crm_production
      - POSTGRES_SSLMODE=disable
      - REDIS_URL=redis://redis:6379/3
      - DOORKEEPER_JWT_SECRET_KEY=${DOORKEEPER_JWT_SECRET_KEY}
      - DOORKEEPER_JWT_ALGORITHM=${DOORKEEPER_JWT_ALGORITHM}
      - DOORKEEPER_JWT_ISS=${DOORKEEPER_JWT_ISS}
      - MFA_ISSUER=EvoCRM
      - SIDEKIQ_CONCURRENCY=10

  evo-crm:
    image: evoapicloud/evo-ai-crm-community:latest
    command: sh -c "bundle exec rails db:prepare && bundle exec rails s -p 3000 -b 0.0.0.0"
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "wget -q --spider http://127.0.0.1:3000/health/live"]
      interval: 10s
      timeout: 5s
      retries: 10
      start_period: 120s
    depends_on:
      evo-auth:
        condition: service_healthy
    environment:
      - RAILS_ENV=production
      - SECRET_KEY_BASE=${SECRET_KEY_BASE}
      - JWT_SECRET_KEY=${JWT_SECRET_KEY}
      - EVOAI_CRM_API_TOKEN=${EVOAI_CRM_API_TOKEN}
      - POSTGRES_HOST=postgres
      - POSTGRES_PORT=5432
      - POSTGRES_USERNAME=postgres
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DATABASE=evo_crm_production
      - POSTGRES_SSLMODE=disable
      - REDIS_URL=redis://redis:6379/3
      - EVO_AUTH_SERVICE_URL=http://evo-auth:3001
      - EVO_AI_CORE_SERVICE_URL=http://evo-core:5555
      - BACKEND_URL=${BACK_URL}
      - FRONTEND_URL=${FRONT_URL}
      - CORS_ORIGINS=${FRONT_URL},${BACK_URL}
      - EVOLUTION_API_ONLY_SERVER=true
      - DISABLE_TELEMETRY=true
      - LOG_LEVEL=info
      - ENABLE_ACCOUNT_SIGNUP=true
      - ENABLE_PUSH_RELAY_SERVER=true
      - ENABLE_INBOX_EVENTS=true
      - BOT_RUNTIME_URL=http://evo-bot-runtime:8080
      - BOT_RUNTIME_SECRET=${BOT_RUNTIME_SECRET}
      - BOT_RUNTIME_POSTBACK_BASE_URL=${BACK_URL}
    volumes:
      - evo-crm-data:/app/storage

  evo-crm-sidekiq:
    image: evoapicloud/evo-ai-crm-community:latest
    command: ["bundle", "exec", "sidekiq", "-C", "config/sidekiq.yml"]
    healthcheck:
      disable: true
    depends_on:
      evo-crm:
        condition: service_healthy
    environment:
      - RAILS_ENV=production
      - SECRET_KEY_BASE=${SECRET_KEY_BASE}
      - JWT_SECRET_KEY=${JWT_SECRET_KEY}
      - EVOAI_CRM_API_TOKEN=${EVOAI_CRM_API_TOKEN}
      - POSTGRES_HOST=postgres
      - POSTGRES_PORT=5432
      - POSTGRES_USERNAME=postgres
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DATABASE=evo_crm_production
      - POSTGRES_SSLMODE=disable
      - REDIS_URL=redis://redis:6379/3
      - EVO_AUTH_SERVICE_URL=${AUTH_URL}
      - EVO_AI_CORE_SERVICE_URL=http://evo-core:5555
      - BACKEND_URL=${BACK_URL}
      - FRONTEND_URL=${FRONT_URL}
      - CORS_ORIGINS=${FRONT_URL},${BACK_URL},${AUTH_URL}
      - DISABLE_TELEMETRY=true
      - LOG_LEVEL=info
      - ENABLE_ACCOUNT_SIGNUP=true
      - ENABLE_PUSH_RELAY_SERVER=true
      - ENABLE_INBOX_EVENTS=true
      - BOT_RUNTIME_URL=http://evo-bot-runtime:8080
      - BOT_RUNTIME_SECRET=${BOT_RUNTIME_SECRET}
      - BOT_RUNTIME_POSTBACK_BASE_URL=${BACK_URL}
      - SIDEKIQ_CONCURRENCY=10

  evo-core:
    image: evoapicloud/evo-ai-core-service-community:latest
    restart: always
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      - DB_HOST=postgres
      - DB_PORT=5432
      - DB_USER=postgres
      - DB_PASSWORD=${POSTGRES_PASSWORD}
      - DB_NAME=evo_crm_production
      - DB_SSLMODE=disable
      - DB_MAX_IDLE_CONNS=10
      - DB_MAX_OPEN_CONNS=100
      - DB_CONN_MAX_LIFETIME=1h
      - DB_CONN_MAX_IDLE_TIME=30m
      - PORT=5555
      - SECRET_KEY_BASE=${SECRET_KEY_BASE}
      - JWT_SECRET_KEY=${JWT_SECRET_KEY}
      - JWT_ALGORITHM=HS256
      - ENCRYPTION_KEY=${ENCRYPTION_KEY}
      - EVOLUTION_BASE_URL=http://evo-crm:3000
      - EVO_AUTH_BASE_URL=http://evo-auth:3001
      - AI_PROCESSOR_URL=http://evo-processor:8000
      - AI_PROCESSOR_VERSION=v1

  evo-processor:
    image: evoapicloud/evo-ai-processor-community:latest
    depends_on:
      evo-crm:
        condition: service_healthy
    environment:
      - POSTGRES_CONNECTION_STRING=postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/evo_crm_production
      - REDIS_HOST=redis
      - REDIS_PORT=6379
      - REDIS_SSL=false
      - REDIS_DB=3
      - REDIS_KEY_PREFIX="a2a:"
      - REDIS_TTL=3600
      - HOST=0.0.0.0
      - PORT=8000
      - DEBUG=false
      - SECRET_KEY_BASE=${SECRET_KEY_BASE}
      - ENCRYPTION_KEY=${ENCRYPTION_KEY}
      - EVOAI_CRM_API_TOKEN=${EVOAI_CRM_API_TOKEN}
      - EVO_AI_CRM_URL=http://evo-crm:3000
      - CORE_SERVICE_URL=http://evo-core:5555/api/v1
      - EVO_AUTH_BASE_URL=http://evo-auth:3001
      - APP_URL=${FRONT_URL}
      - API_URL=${PROCESSOR_URL}
      - API_TITLE=Agent Processor Community
      - API_DESCRIPTION=Agent Processor Community for Evolution AI
      - API_VERSION=1.0.0
      - ORGANIZATION_NAME=Evolution CRM
      - TOOLS_CACHE_ENABLED=true
      - TOOLS_CACHE_TTL=3600

  evo-bot-runtime:
    image: evoapicloud/evo-bot-runtime:latest
    environment:
      - LISTEN_ADDR=0.0.0.0:8080
      - REDIS_URL=redis://:${REDIS_PASSWORD}@redis:6379/3
      - AI_PROCESSOR_URL=http://evo-processor:8000
      - BOT_RUNTIME_SECRET=${BOT_RUNTIME_SECRET}
      - AI_CALL_TIMEOUT_SECONDS=30

  evo-crm-frontend:
    image: evoapicloud/evo-ai-frontend-community:latest
    environment:
      - VITE_APP_ENV=production
      - VITE_API_URL=${BACK_URL}
      - VITE_AUTH_API_URL=${AUTH_URL}
      - VITE_EVOAI_API_URL=${EVOIA_URL}
      - VITE_AGENT_PROCESSOR_URL=${PROCESSOR_URL}
      - VITE_WS_URL=wss://${BACK_DOMAIN}
      - VITE_FRONT_URL=${FRONT_URL}

  postgres:
    image: postgres:16-alpine
    restart: always
    volumes:
      - postgres-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=${POSTGRES_DATABASE}
      - POSTGRES_USER=${POSTGRES_USERNAME}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 5s
      retries: 10
      start_period: 10s

  redis:
    image: redis:alpine
    restart: always
    volumes:
      - redis-data:/data
    healthcheck:
      test: ["CMD-SHELL", "redis-cli ping"]
      interval: 5s
      timeout: 5s
      retries: 10

volumes:
  postgres-data:
  redis-data:
  evo-processor-data:
  evo-crm-data:
[variables]
auth_domain = "${domain}"
front_domain = "${domain}"
api_domain = "${domain}"
evoia_domain = "${domain}"
processor_domain = "${domain}"
postgres_password = "${password}"
secret_key_base = "${base64:64}"
jwt_secret_key = "${base64:64}"
api_token = "${base64:64}"
doorkeeper_jwt_secret_key = "${base64:64}"
bot_runtime_secret = "${base64:64}"
encryption_key = "${base64:32}"
global_api_key = "${base64:64}"

[config]
env = [
  "SECRET_KEY_BASE=${secret_key_base}",
  "JWT_SECRET_KEY=${jwt_secret_key}",
  "EVOAI_CRM_API_TOKEN=${api_token}",
  "GLOBAL_API_KEY=${global_api_key}",
  "POSTGRES_PASSWORD=${postgres_password}",
  "POSTGRES_DATABASE=evo_crm_community",
  "POSTGRES_USERNAME=postgres",
  "REDIS_URL=redis://redis:6379/3",
  "FRONT_DOMAIN=${front_domain}",
  "FRONT_URL=\"http://${front_domain}\"",
  "BACK_DOMAIN=${api_domain}",
  "BACK_URL=\"http://${api_domain}\"",
  "AUTH_DOMAIN=${auth_domain}",
  "AUTH_URL=\"http://${auth_domain}\"",
  "PROCESSOR_DOMAIN=${processor_domain}",
  "PROCESSOR_URL=\"http://${processor_domain}\"",
  "EVOIA_DOMAIN=${evoia_domain}",
  "EVOIA_URL=\"http://${evoia_domain}\"",
  "DOORKEEPER_JWT_SECRET_KEY=${doorkeeper_jwt_secret_key}",
  "DOORKEEPER_JWT_ALGORITHM=hs256",
  "DOORKEEPER_JWT_ISS=evo-auth-service",
  "MFA_ISSUER=EvoCRM",
  "BOT_RUNTIME_SECRET=${bot_runtime_secret}",
  "ENCRYPTION_KEY=${encryption_key}",
]

mounts = []

[[config.domains]]
serviceName = "evo-auth"
port = 3001
host = "${auth_domain}"


[[config.domains]]
serviceName = "evo-crm-frontend"
port = 80
host = "${front_domain}"


[[config.domains]]
serviceName = "evo-crm"
port = 3000
host = "${api_domain}"


[[config.domains]]
serviceName = "evo-processor"
port = 8000
host = "${processor_domain}"

Base64

To import this template in Dokploy: create a Compose service → AdvancedBase64 import and paste the content below:

ewogICJjb21wb3NlIjogInNlcnZpY2VzOlxuICBldm8tYXV0aDpcbiAgICBpbWFnZTogZXZvYXBpY2xvdWQvZXZvLWF1dGgtc2VydmljZS1jb21tdW5pdHk6bGF0ZXN0XG4gICAgY29tbWFuZDogc2ggLWMgXCJidW5kbGUgZXhlYyByYWlscyBkYjpwcmVwYXJlICYmIGJ1bmRsZSBleGVjIHJhaWxzIHMgLXAgMzAwMSAtYiAwLjAuMC4wXCJcbiAgICByZXN0YXJ0OiBhbHdheXNcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRC1TSEVMTFwiLCBcImN1cmwgLWYgaHR0cDovL2xvY2FsaG9zdDozMDAxL3VwXCJdXG4gICAgICBpbnRlcnZhbDogMTBzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogMTBcbiAgICAgIHN0YXJ0X3BlcmlvZDogMTIwcyAgICAgICAgXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIHBvc3RncmVzOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgICAgcmVkaXM6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIFJBSUxTX0VOVj1wcm9kdWN0aW9uXG4gICAgICAtIFJBSUxTX01BWF9USFJFQURTPTVcbiAgICAgIC0gU0VDUkVUX0tFWV9CQVNFPSR7U0VDUkVUX0tFWV9CQVNFfVxuICAgICAgLSBKV1RfU0VDUkVUX0tFWT0ke0pXVF9TRUNSRVRfS0VZfVxuICAgICAgLSBFVk9BSV9DUk1fQVBJX1RPS0VOPSR7RVZPQUlfQ1JNX0FQSV9UT0tFTn1cbiAgICAgIC0gUE9TVEdSRVNfSE9TVD1wb3N0Z3Jlc1xuICAgICAgLSBQT1NUR1JFU19QT1JUPTU0MzJcbiAgICAgIC0gUE9TVEdSRVNfVVNFUk5BTUU9cG9zdGdyZXNcbiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JHtQT1NUR1JFU19QQVNTV09SRH1cbiAgICAgIC0gUE9TVEdSRVNfREFUQUJBU0U9ZXZvX2NybV9wcm9kdWN0aW9uXG4gICAgICAtIFBPU1RHUkVTX1NTTE1PREU9ZGlzYWJsZVxuICAgICAgLSBSRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5LzNcbiAgICAgIC0gRlJPTlRFTkRfVVJMPSR7RlJPTlRfVVJMfVxuICAgICAgLSBCQUNLRU5EX1VSTD0ke0JBQ0tfVVJMfVxuICAgICAgLSBDT1JTX09SSUdJTlM9JHtGUk9OVF9VUkx9LCR7QkFDS19VUkx9XG4gICAgICAtIERPT1JLRUVQRVJfSldUX1NFQ1JFVF9LRVk9JHtET09SS0VFUEVSX0pXVF9TRUNSRVRfS0VZfVxuICAgICAgLSBET09SS0VFUEVSX0pXVF9BTEdPUklUSE09JHtET09SS0VFUEVSX0pXVF9BTEdPUklUSE19XG4gICAgICAtIERPT1JLRUVQRVJfSldUX0lTUz0ke0RPT1JLRUVQRVJfSldUX0lTU31cbiAgICAgIC0gTUZBX0lTU1VFUj0ke01GQV9JU1NVRVJ9XG5cbiAgZXZvLWF1dGgtc2lkZWtpcTpcbiAgICBpbWFnZTogZXZvYXBpY2xvdWQvZXZvLWF1dGgtc2VydmljZS1jb21tdW5pdHk6bGF0ZXN0XG4gICAgY29tbWFuZDogW1wiYnVuZGxlXCIsIFwiZXhlY1wiLCBcInNpZGVraXFcIiwgXCItQ1wiLCBcImNvbmZpZy9zaWRla2lxLnltbFwiXVxuICAgIHJlc3RhcnQ6IGFsd2F5c1xuICAgIGhlYWx0aGNoZWNrOlxuICAgICAgZGlzYWJsZTogdHJ1ZSAgICBcbiAgICBkZXBlbmRzX29uOlxuICAgICAgZXZvLWF1dGg6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5ICAgICAgICBcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gUkFJTFNfRU5WPXByb2R1Y3Rpb25cbiAgICAgIC0gU0VDUkVUX0tFWV9CQVNFPSR7U0VDUkVUX0tFWV9CQVNFfVxuICAgICAgLSBKV1RfU0VDUkVUX0tFWT0ke0pXVF9TRUNSRVRfS0VZfVxuICAgICAgLSBFVk9BSV9DUk1fQVBJX1RPS0VOPSR7RVZPQUlfQ1JNX0FQSV9UT0tFTn1cbiAgICAgIC0gUE9TVEdSRVNfSE9TVD1wb3N0Z3Jlc1xuICAgICAgLSBQT1NUR1JFU19QT1JUPTU0MzJcbiAgICAgIC0gUE9TVEdSRVNfVVNFUk5BTUU9cG9zdGdyZXNcbiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JHtQT1NUR1JFU19QQVNTV09SRH1cbiAgICAgIC0gUE9TVEdSRVNfREFUQUJBU0U9ZXZvX2NybV9wcm9kdWN0aW9uXG4gICAgICAtIFBPU1RHUkVTX1NTTE1PREU9ZGlzYWJsZVxuICAgICAgLSBSRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5LzNcbiAgICAgIC0gRE9PUktFRVBFUl9KV1RfU0VDUkVUX0tFWT0ke0RPT1JLRUVQRVJfSldUX1NFQ1JFVF9LRVl9XG4gICAgICAtIERPT1JLRUVQRVJfSldUX0FMR09SSVRITT0ke0RPT1JLRUVQRVJfSldUX0FMR09SSVRITX1cbiAgICAgIC0gRE9PUktFRVBFUl9KV1RfSVNTPSR7RE9PUktFRVBFUl9KV1RfSVNTfVxuICAgICAgLSBNRkFfSVNTVUVSPUV2b0NSTVxuICAgICAgLSBTSURFS0lRX0NPTkNVUlJFTkNZPTEwXG5cbiAgZXZvLWNybTpcbiAgICBpbWFnZTogZXZvYXBpY2xvdWQvZXZvLWFpLWNybS1jb21tdW5pdHk6bGF0ZXN0XG4gICAgY29tbWFuZDogc2ggLWMgXCJidW5kbGUgZXhlYyByYWlscyBkYjpwcmVwYXJlICYmIGJ1bmRsZSBleGVjIHJhaWxzIHMgLXAgMzAwMCAtYiAwLjAuMC4wXCJcbiAgICByZXN0YXJ0OiBhbHdheXNcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRC1TSEVMTFwiLCBcIndnZXQgLXEgLS1zcGlkZXIgaHR0cDovLzEyNy4wLjAuMTozMDAwL2hlYWx0aC9saXZlXCJdXG4gICAgICBpbnRlcnZhbDogMTBzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogMTBcbiAgICAgIHN0YXJ0X3BlcmlvZDogMTIwcyAgICBcbiAgICBkZXBlbmRzX29uOlxuICAgICAgZXZvLWF1dGg6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5ICAgICAgICBcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gUkFJTFNfRU5WPXByb2R1Y3Rpb25cbiAgICAgIC0gU0VDUkVUX0tFWV9CQVNFPSR7U0VDUkVUX0tFWV9CQVNFfVxuICAgICAgLSBKV1RfU0VDUkVUX0tFWT0ke0pXVF9TRUNSRVRfS0VZfVxuICAgICAgLSBFVk9BSV9DUk1fQVBJX1RPS0VOPSR7RVZPQUlfQ1JNX0FQSV9UT0tFTn1cbiAgICAgIC0gUE9TVEdSRVNfSE9TVD1wb3N0Z3Jlc1xuICAgICAgLSBQT1NUR1JFU19QT1JUPTU0MzJcbiAgICAgIC0gUE9TVEdSRVNfVVNFUk5BTUU9cG9zdGdyZXNcbiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JHtQT1NUR1JFU19QQVNTV09SRH1cbiAgICAgIC0gUE9TVEdSRVNfREFUQUJBU0U9ZXZvX2NybV9wcm9kdWN0aW9uXG4gICAgICAtIFBPU1RHUkVTX1NTTE1PREU9ZGlzYWJsZVxuICAgICAgLSBSRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5LzNcbiAgICAgIC0gRVZPX0FVVEhfU0VSVklDRV9VUkw9aHR0cDovL2V2by1hdXRoOjMwMDFcbiAgICAgIC0gRVZPX0FJX0NPUkVfU0VSVklDRV9VUkw9aHR0cDovL2V2by1jb3JlOjU1NTVcbiAgICAgIC0gQkFDS0VORF9VUkw9JHtCQUNLX1VSTH1cbiAgICAgIC0gRlJPTlRFTkRfVVJMPSR7RlJPTlRfVVJMfVxuICAgICAgLSBDT1JTX09SSUdJTlM9JHtGUk9OVF9VUkx9LCR7QkFDS19VUkx9XG4gICAgICAtIEVWT0xVVElPTl9BUElfT05MWV9TRVJWRVI9dHJ1ZVxuICAgICAgLSBESVNBQkxFX1RFTEVNRVRSWT10cnVlXG4gICAgICAtIExPR19MRVZFTD1pbmZvXG4gICAgICAtIEVOQUJMRV9BQ0NPVU5UX1NJR05VUD10cnVlXG4gICAgICAtIEVOQUJMRV9QVVNIX1JFTEFZX1NFUlZFUj10cnVlXG4gICAgICAtIEVOQUJMRV9JTkJPWF9FVkVOVFM9dHJ1ZVxuICAgICAgLSBCT1RfUlVOVElNRV9VUkw9aHR0cDovL2V2by1ib3QtcnVudGltZTo4MDgwXG4gICAgICAtIEJPVF9SVU5USU1FX1NFQ1JFVD0ke0JPVF9SVU5USU1FX1NFQ1JFVH1cbiAgICAgIC0gQk9UX1JVTlRJTUVfUE9TVEJBQ0tfQkFTRV9VUkw9JHtCQUNLX1VSTH1cbiAgICB2b2x1bWVzOlxuICAgICAgLSBldm8tY3JtLWRhdGE6L2FwcC9zdG9yYWdlXG5cbiAgZXZvLWNybS1zaWRla2lxOlxuICAgIGltYWdlOiBldm9hcGljbG91ZC9ldm8tYWktY3JtLWNvbW11bml0eTpsYXRlc3RcbiAgICBjb21tYW5kOiBbXCJidW5kbGVcIiwgXCJleGVjXCIsIFwic2lkZWtpcVwiLCBcIi1DXCIsIFwiY29uZmlnL3NpZGVraXEueW1sXCJdXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICBkaXNhYmxlOiB0cnVlICAgICAgIFxuICAgIGRlcGVuZHNfb246IFxuICAgICAgZXZvLWNybTpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkgICAgIFxuICAgIGVudmlyb25tZW50OlxuICAgICAgLSBSQUlMU19FTlY9cHJvZHVjdGlvblxuICAgICAgLSBTRUNSRVRfS0VZX0JBU0U9JHtTRUNSRVRfS0VZX0JBU0V9XG4gICAgICAtIEpXVF9TRUNSRVRfS0VZPSR7SldUX1NFQ1JFVF9LRVl9XG4gICAgICAtIEVWT0FJX0NSTV9BUElfVE9LRU49JHtFVk9BSV9DUk1fQVBJX1RPS0VOfVxuICAgICAgLSBQT1NUR1JFU19IT1NUPXBvc3RncmVzXG4gICAgICAtIFBPU1RHUkVTX1BPUlQ9NTQzMlxuICAgICAgLSBQT1NUR1JFU19VU0VSTkFNRT1wb3N0Z3Jlc1xuICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0ke1BPU1RHUkVTX1BBU1NXT1JEfVxuICAgICAgLSBQT1NUR1JFU19EQVRBQkFTRT1ldm9fY3JtX3Byb2R1Y3Rpb25cbiAgICAgIC0gUE9TVEdSRVNfU1NMTU9ERT1kaXNhYmxlXG4gICAgICAtIFJFRElTX1VSTD1yZWRpczovL3JlZGlzOjYzNzkvM1xuICAgICAgLSBFVk9fQVVUSF9TRVJWSUNFX1VSTD0ke0FVVEhfVVJMfVxuICAgICAgLSBFVk9fQUlfQ09SRV9TRVJWSUNFX1VSTD1odHRwOi8vZXZvLWNvcmU6NTU1NVxuICAgICAgLSBCQUNLRU5EX1VSTD0ke0JBQ0tfVVJMfVxuICAgICAgLSBGUk9OVEVORF9VUkw9JHtGUk9OVF9VUkx9XG4gICAgICAtIENPUlNfT1JJR0lOUz0ke0ZST05UX1VSTH0sJHtCQUNLX1VSTH0sJHtBVVRIX1VSTH1cbiAgICAgIC0gRElTQUJMRV9URUxFTUVUUlk9dHJ1ZVxuICAgICAgLSBMT0dfTEVWRUw9aW5mb1xuICAgICAgLSBFTkFCTEVfQUNDT1VOVF9TSUdOVVA9dHJ1ZVxuICAgICAgLSBFTkFCTEVfUFVTSF9SRUxBWV9TRVJWRVI9dHJ1ZVxuICAgICAgLSBFTkFCTEVfSU5CT1hfRVZFTlRTPXRydWVcbiAgICAgIC0gQk9UX1JVTlRJTUVfVVJMPWh0dHA6Ly9ldm8tYm90LXJ1bnRpbWU6ODA4MFxuICAgICAgLSBCT1RfUlVOVElNRV9TRUNSRVQ9JHtCT1RfUlVOVElNRV9TRUNSRVR9XG4gICAgICAtIEJPVF9SVU5USU1FX1BPU1RCQUNLX0JBU0VfVVJMPSR7QkFDS19VUkx9XG4gICAgICAtIFNJREVLSVFfQ09OQ1VSUkVOQ1k9MTBcblxuICBldm8tY29yZTpcbiAgICBpbWFnZTogZXZvYXBpY2xvdWQvZXZvLWFpLWNvcmUtc2VydmljZS1jb21tdW5pdHk6bGF0ZXN0XG4gICAgcmVzdGFydDogYWx3YXlzXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIHBvc3RncmVzOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeSAgICBcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gREJfSE9TVD1wb3N0Z3Jlc1xuICAgICAgLSBEQl9QT1JUPTU0MzJcbiAgICAgIC0gREJfVVNFUj1wb3N0Z3Jlc1xuICAgICAgLSBEQl9QQVNTV09SRD0ke1BPU1RHUkVTX1BBU1NXT1JEfVxuICAgICAgLSBEQl9OQU1FPWV2b19jcm1fcHJvZHVjdGlvblxuICAgICAgLSBEQl9TU0xNT0RFPWRpc2FibGVcbiAgICAgIC0gREJfTUFYX0lETEVfQ09OTlM9MTBcbiAgICAgIC0gREJfTUFYX09QRU5fQ09OTlM9MTAwXG4gICAgICAtIERCX0NPTk5fTUFYX0xJRkVUSU1FPTFoXG4gICAgICAtIERCX0NPTk5fTUFYX0lETEVfVElNRT0zMG1cbiAgICAgIC0gUE9SVD01NTU1XG4gICAgICAtIFNFQ1JFVF9LRVlfQkFTRT0ke1NFQ1JFVF9LRVlfQkFTRX1cbiAgICAgIC0gSldUX1NFQ1JFVF9LRVk9JHtKV1RfU0VDUkVUX0tFWX1cbiAgICAgIC0gSldUX0FMR09SSVRITT1IUzI1NlxuICAgICAgLSBFTkNSWVBUSU9OX0tFWT0ke0VOQ1JZUFRJT05fS0VZfVxuICAgICAgLSBFVk9MVVRJT05fQkFTRV9VUkw9aHR0cDovL2V2by1jcm06MzAwMFxuICAgICAgLSBFVk9fQVVUSF9CQVNFX1VSTD1odHRwOi8vZXZvLWF1dGg6MzAwMVxuICAgICAgLSBBSV9QUk9DRVNTT1JfVVJMPWh0dHA6Ly9ldm8tcHJvY2Vzc29yOjgwMDBcbiAgICAgIC0gQUlfUFJPQ0VTU09SX1ZFUlNJT049djFcblxuICBldm8tcHJvY2Vzc29yOlxuICAgIGltYWdlOiBldm9hcGljbG91ZC9ldm8tYWktcHJvY2Vzc29yLWNvbW11bml0eTpsYXRlc3RcbiAgICBkZXBlbmRzX29uOlxuICAgICAgZXZvLWNybTpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkgICAgICAgXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIFBPU1RHUkVTX0NPTk5FQ1RJT05fU1RSSU5HPXBvc3RncmVzcWw6Ly9wb3N0Z3Jlczoke1BPU1RHUkVTX1BBU1NXT1JEfUBwb3N0Z3Jlczo1NDMyL2V2b19jcm1fcHJvZHVjdGlvblxuICAgICAgLSBSRURJU19IT1NUPXJlZGlzXG4gICAgICAtIFJFRElTX1BPUlQ9NjM3OVxuICAgICAgLSBSRURJU19TU0w9ZmFsc2VcbiAgICAgIC0gUkVESVNfREI9M1xuICAgICAgLSBSRURJU19LRVlfUFJFRklYPVwiYTJhOlwiXG4gICAgICAtIFJFRElTX1RUTD0zNjAwXG4gICAgICAtIEhPU1Q9MC4wLjAuMFxuICAgICAgLSBQT1JUPTgwMDBcbiAgICAgIC0gREVCVUc9ZmFsc2VcbiAgICAgIC0gU0VDUkVUX0tFWV9CQVNFPSR7U0VDUkVUX0tFWV9CQVNFfVxuICAgICAgLSBFTkNSWVBUSU9OX0tFWT0ke0VOQ1JZUFRJT05fS0VZfVxuICAgICAgLSBFVk9BSV9DUk1fQVBJX1RPS0VOPSR7RVZPQUlfQ1JNX0FQSV9UT0tFTn1cbiAgICAgIC0gRVZPX0FJX0NSTV9VUkw9aHR0cDovL2V2by1jcm06MzAwMFxuICAgICAgLSBDT1JFX1NFUlZJQ0VfVVJMPWh0dHA6Ly9ldm8tY29yZTo1NTU1L2FwaS92MVxuICAgICAgLSBFVk9fQVVUSF9CQVNFX1VSTD1odHRwOi8vZXZvLWF1dGg6MzAwMVxuICAgICAgLSBBUFBfVVJMPSR7RlJPTlRfVVJMfVxuICAgICAgLSBBUElfVVJMPSR7UFJPQ0VTU09SX1VSTH1cbiAgICAgIC0gQVBJX1RJVExFPUFnZW50IFByb2Nlc3NvciBDb21tdW5pdHlcbiAgICAgIC0gQVBJX0RFU0NSSVBUSU9OPUFnZW50IFByb2Nlc3NvciBDb21tdW5pdHkgZm9yIEV2b2x1dGlvbiBBSVxuICAgICAgLSBBUElfVkVSU0lPTj0xLjAuMCAgXG4gICAgICAtIE9SR0FOSVpBVElPTl9OQU1FPUV2b2x1dGlvbiBDUk0gIFxuICAgICAgLSBUT09MU19DQUNIRV9FTkFCTEVEPXRydWVcbiAgICAgIC0gVE9PTFNfQ0FDSEVfVFRMPTM2MDBcblxuICBldm8tYm90LXJ1bnRpbWU6XG4gICAgaW1hZ2U6IGV2b2FwaWNsb3VkL2V2by1ib3QtcnVudGltZTpsYXRlc3RcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gTElTVEVOX0FERFI9MC4wLjAuMDo4MDgwXG4gICAgICAtIFJFRElTX1VSTD1yZWRpczovLzoke1JFRElTX1BBU1NXT1JEfUByZWRpczo2Mzc5LzNcbiAgICAgIC0gQUlfUFJPQ0VTU09SX1VSTD1odHRwOi8vZXZvLXByb2Nlc3Nvcjo4MDAwXG4gICAgICAtIEJPVF9SVU5USU1FX1NFQ1JFVD0ke0JPVF9SVU5USU1FX1NFQ1JFVH1cbiAgICAgIC0gQUlfQ0FMTF9USU1FT1VUX1NFQ09ORFM9MzBcblxuICBldm8tY3JtLWZyb250ZW5kOlxuICAgIGltYWdlOiBldm9hcGljbG91ZC9ldm8tYWktZnJvbnRlbmQtY29tbXVuaXR5OmxhdGVzdFxuICAgIGVudmlyb25tZW50OlxuICAgICAgLSBWSVRFX0FQUF9FTlY9cHJvZHVjdGlvblxuICAgICAgLSBWSVRFX0FQSV9VUkw9JHtCQUNLX1VSTH1cbiAgICAgIC0gVklURV9BVVRIX0FQSV9VUkw9JHtBVVRIX1VSTH1cbiAgICAgIC0gVklURV9FVk9BSV9BUElfVVJMPSR7RVZPSUFfVVJMfVxuICAgICAgLSBWSVRFX0FHRU5UX1BST0NFU1NPUl9VUkw9JHtQUk9DRVNTT1JfVVJMfVxuICAgICAgLSBWSVRFX1dTX1VSTD13c3M6Ly8ke0JBQ0tfRE9NQUlOfVxuICAgICAgLSBWSVRFX0ZST05UX1VSTD0ke0ZST05UX1VSTH1cblxuICBwb3N0Z3JlczpcbiAgICBpbWFnZTogcG9zdGdyZXM6MTYtYWxwaW5lXG4gICAgcmVzdGFydDogYWx3YXlzXG4gICAgdm9sdW1lczpcbiAgICAgIC0gcG9zdGdyZXMtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGFcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQVRBQkFTRX1cbiAgICAgIC0gUE9TVEdSRVNfVVNFUj0ke1BPU1RHUkVTX1VTRVJOQU1FfVxuICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0ke1BPU1RHUkVTX1BBU1NXT1JEfVxuICAgIGhlYWx0aGNoZWNrOlxuICAgICAgdGVzdDogW1wiQ01ELVNIRUxMXCIsIFwicGdfaXNyZWFkeSAtVSBwb3N0Z3Jlc1wiXVxuICAgICAgaW50ZXJ2YWw6IDVzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogMTBcbiAgICAgIHN0YXJ0X3BlcmlvZDogMTBzXG4gICAgICAgICAgICAgICAgXG4gIHJlZGlzOlxuICAgIGltYWdlOiByZWRpczphbHBpbmVcbiAgICByZXN0YXJ0OiBhbHdheXNcbiAgICB2b2x1bWVzOlxuICAgICAgLSByZWRpcy1kYXRhOi9kYXRhXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OiBbXCJDTUQtU0hFTExcIiwgXCJyZWRpcy1jbGkgcGluZ1wiXVxuICAgICAgaW50ZXJ2YWw6IDVzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogMTBcblxudm9sdW1lczpcbiAgcG9zdGdyZXMtZGF0YTpcbiAgcmVkaXMtZGF0YTpcbiAgZXZvLXByb2Nlc3Nvci1kYXRhOlxuICBldm8tY3JtLWRhdGE6XG4iLAogICJjb25maWciOiAiW3ZhcmlhYmxlc11cbmF1dGhfZG9tYWluID0gXCIke2RvbWFpbn1cIlxuZnJvbnRfZG9tYWluID0gXCIke2RvbWFpbn1cIlxuYXBpX2RvbWFpbiA9IFwiJHtkb21haW59XCJcbmV2b2lhX2RvbWFpbiA9IFwiJHtkb21haW59XCJcbnByb2Nlc3Nvcl9kb21haW4gPSBcIiR7ZG9tYWlufVwiXG5wb3N0Z3Jlc19wYXNzd29yZCA9IFwiJHtwYXNzd29yZH1cIlxuc2VjcmV0X2tleV9iYXNlID0gXCIke2Jhc2U2NDo2NH1cIlxuand0X3NlY3JldF9rZXkgPSBcIiR7YmFzZTY0OjY0fVwiXG5hcGlfdG9rZW4gPSBcIiR7YmFzZTY0OjY0fVwiXG5kb29ya2VlcGVyX2p3dF9zZWNyZXRfa2V5ID0gXCIke2Jhc2U2NDo2NH1cIlxuYm90X3J1bnRpbWVfc2VjcmV0ID0gXCIke2Jhc2U2NDo2NH1cIlxuZW5jcnlwdGlvbl9rZXkgPSBcIiR7YmFzZTY0OjMyfVwiXG5nbG9iYWxfYXBpX2tleSA9IFwiJHtiYXNlNjQ6NjR9XCJcblxuW2NvbmZpZ11cbmVudiA9IFtcbiAgXCJTRUNSRVRfS0VZX0JBU0U9JHtzZWNyZXRfa2V5X2Jhc2V9XCIsXG4gIFwiSldUX1NFQ1JFVF9LRVk9JHtqd3Rfc2VjcmV0X2tleX1cIixcbiAgXCJFVk9BSV9DUk1fQVBJX1RPS0VOPSR7YXBpX3Rva2VufVwiLFxuICBcIkdMT0JBTF9BUElfS0VZPSR7Z2xvYmFsX2FwaV9rZXl9XCIsXG4gIFwiUE9TVEdSRVNfUEFTU1dPUkQ9JHtwb3N0Z3Jlc19wYXNzd29yZH1cIixcbiAgXCJQT1NUR1JFU19EQVRBQkFTRT1ldm9fY3JtX2NvbW11bml0eVwiLFxuICBcIlBPU1RHUkVTX1VTRVJOQU1FPXBvc3RncmVzXCIsXG4gIFwiUkVESVNfVVJMPXJlZGlzOi8vcmVkaXM6NjM3OS8zXCIsXG4gIFwiRlJPTlRfRE9NQUlOPSR7ZnJvbnRfZG9tYWlufVwiLCAgXG4gIFwiRlJPTlRfVVJMPVxcXCJodHRwOi8vJHtmcm9udF9kb21haW59XFxcIlwiLCAgXG4gIFwiQkFDS19ET01BSU49JHthcGlfZG9tYWlufVwiLFxuICBcIkJBQ0tfVVJMPVxcXCJodHRwOi8vJHthcGlfZG9tYWlufVxcXCJcIixcbiAgXCJBVVRIX0RPTUFJTj0ke2F1dGhfZG9tYWlufVwiLFxuICBcIkFVVEhfVVJMPVxcXCJodHRwOi8vJHthdXRoX2RvbWFpbn1cXFwiXCIsXG4gIFwiUFJPQ0VTU09SX0RPTUFJTj0ke3Byb2Nlc3Nvcl9kb21haW59XCIsXG4gIFwiUFJPQ0VTU09SX1VSTD1cXFwiaHR0cDovLyR7cHJvY2Vzc29yX2RvbWFpbn1cXFwiXCIsXG4gIFwiRVZPSUFfRE9NQUlOPSR7ZXZvaWFfZG9tYWlufVwiLFxuICBcIkVWT0lBX1VSTD1cXFwiaHR0cDovLyR7ZXZvaWFfZG9tYWlufVxcXCJcIixcbiAgXCJET09SS0VFUEVSX0pXVF9TRUNSRVRfS0VZPSR7ZG9vcmtlZXBlcl9qd3Rfc2VjcmV0X2tleX1cIixcbiAgXCJET09SS0VFUEVSX0pXVF9BTEdPUklUSE09aHMyNTZcIixcbiAgXCJET09SS0VFUEVSX0pXVF9JU1M9ZXZvLWF1dGgtc2VydmljZVwiLFxuICBcIk1GQV9JU1NVRVI9RXZvQ1JNXCIsXG4gIFwiQk9UX1JVTlRJTUVfU0VDUkVUPSR7Ym90X3J1bnRpbWVfc2VjcmV0fVwiLFxuICBcIkVOQ1JZUFRJT05fS0VZPSR7ZW5jcnlwdGlvbl9rZXl9XCIsXG5dXG5cbm1vdW50cyA9IFtdXG5cbltbY29uZmlnLmRvbWFpbnNdXVxuc2VydmljZU5hbWUgPSBcImV2by1hdXRoXCJcbnBvcnQgPSAzMDAxXG5ob3N0ID0gXCIke2F1dGhfZG9tYWlufVwiXG5cblxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwiZXZvLWNybS1mcm9udGVuZFwiXG5wb3J0ID0gODBcbmhvc3QgPSBcIiR7ZnJvbnRfZG9tYWlufVwiXG5cblxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwiZXZvLWNybVwiXG5wb3J0ID0gMzAwMFxuaG9zdCA9IFwiJHthcGlfZG9tYWlufVwiXG5cblxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwiZXZvLXByb2Nlc3NvclwiXG5wb3J0ID0gODAwMFxuaG9zdCA9IFwiJHtwcm9jZXNzb3JfZG9tYWlufVwiXG4iCn0=

Tags

crm, ai, agent, processing, bot, pipeline


Version: latest

On this page