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.
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 → Advanced → Base64 import and paste the content below:
ewogICJjb21wb3NlIjogInNlcnZpY2VzOlxuICBldm8tYXV0aDpcbiAgICBpbWFnZTogZXZvYXBpY2xvdWQvZXZvLWF1dGgtc2VydmljZS1jb21tdW5pdHk6bGF0ZXN0XG4gICAgY29tbWFuZDogc2ggLWMgXCJidW5kbGUgZXhlYyByYWlscyBkYjpwcmVwYXJlICYmIGJ1bmRsZSBleGVjIHJhaWxzIHMgLXAgMzAwMSAtYiAwLjAuMC4wXCJcbiAgICByZXN0YXJ0OiBhbHdheXNcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRC1TSEVMTFwiLCBcImN1cmwgLWYgaHR0cDovL2xvY2FsaG9zdDozMDAxL3VwXCJdXG4gICAgICBpbnRlcnZhbDogMTBzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogMTBcbiAgICAgIHN0YXJ0X3BlcmlvZDogMTIwcyAgICAgICAgXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIHBvc3RncmVzOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgICAgcmVkaXM6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIFJBSUxTX0VOVj1wcm9kdWN0aW9uXG4gICAgICAtIFJBSUxTX01BWF9USFJFQURTPTVcbiAgICAgIC0gU0VDUkVUX0tFWV9CQVNFPSR7U0VDUkVUX0tFWV9CQVNFfVxuICAgICAgLSBKV1RfU0VDUkVUX0tFWT0ke0pXVF9TRUNSRVRfS0VZfVxuICAgICAgLSBFVk9BSV9DUk1fQVBJX1RPS0VOPSR7RVZPQUlfQ1JNX0FQSV9UT0tFTn1cbiAgICAgIC0gUE9TVEdSRVNfSE9TVD1wb3N0Z3Jlc1xuICAgICAgLSBQT1NUR1JFU19QT1JUPTU0MzJcbiAgICAgIC0gUE9TVEdSRVNfVVNFUk5BTUU9cG9zdGdyZXNcbiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JHtQT1NUR1JFU19QQVNTV09SRH1cbiAgICAgIC0gUE9TVEdSRVNfREFUQUJBU0U9ZXZvX2NybV9wcm9kdWN0aW9uXG4gICAgICAtIFBPU1RHUkVTX1NTTE1PREU9ZGlzYWJsZVxuICAgICAgLSBSRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5LzNcbiAgICAgIC0gRlJPTlRFTkRfVVJMPSR7RlJPTlRfVVJMfVxuICAgICAgLSBCQUNLRU5EX1VSTD0ke0JBQ0tfVVJMfVxuICAgICAgLSBDT1JTX09SSUdJTlM9JHtGUk9OVF9VUkx9LCR7QkFDS19VUkx9XG4gICAgICAtIERPT1JLRUVQRVJfSldUX1NFQ1JFVF9LRVk9JHtET09SS0VFUEVSX0pXVF9TRUNSRVRfS0VZfVxuICAgICAgLSBET09SS0VFUEVSX0pXVF9BTEdPUklUSE09JHtET09SS0VFUEVSX0pXVF9BTEdPUklUSE19XG4gICAgICAtIERPT1JLRUVQRVJfSldUX0lTUz0ke0RPT1JLRUVQRVJfSldUX0lTU31cbiAgICAgIC0gTUZBX0lTU1VFUj0ke01GQV9JU1NVRVJ9XG5cbiAgZXZvLWF1dGgtc2lkZWtpcTpcbiAgICBpbWFnZTogZXZvYXBpY2xvdWQvZXZvLWF1dGgtc2VydmljZS1jb21tdW5pdHk6bGF0ZXN0XG4gICAgY29tbWFuZDogW1wiYnVuZGxlXCIsIFwiZXhlY1wiLCBcInNpZGVraXFcIiwgXCItQ1wiLCBcImNvbmZpZy9zaWRla2lxLnltbFwiXVxuICAgIHJlc3RhcnQ6IGFsd2F5c1xuICAgIGhlYWx0aGNoZWNrOlxuICAgICAgZGlzYWJsZTogdHJ1ZSAgICBcbiAgICBkZXBlbmRzX29uOlxuICAgICAgZXZvLWF1dGg6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5ICAgICAgICBcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gUkFJTFNfRU5WPXByb2R1Y3Rpb25cbiAgICAgIC0gU0VDUkVUX0tFWV9CQVNFPSR7U0VDUkVUX0tFWV9CQVNFfVxuICAgICAgLSBKV1RfU0VDUkVUX0tFWT0ke0pXVF9TRUNSRVRfS0VZfVxuICAgICAgLSBFVk9BSV9DUk1fQVBJX1RPS0VOPSR7RVZPQUlfQ1JNX0FQSV9UT0tFTn1cbiAgICAgIC0gUE9TVEdSRVNfSE9TVD1wb3N0Z3Jlc1xuICAgICAgLSBQT1NUR1JFU19QT1JUPTU0MzJcbiAgICAgIC0gUE9TVEdSRVNfVVNFUk5BTUU9cG9zdGdyZXNcbiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JHtQT1NUR1JFU19QQVNTV09SRH1cbiAgICAgIC0gUE9TVEdSRVNfREFUQUJBU0U9ZXZvX2NybV9wcm9kdWN0aW9uXG4gICAgICAtIFBPU1RHUkVTX1NTTE1PREU9ZGlzYWJsZVxuICAgICAgLSBSRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5LzNcbiAgICAgIC0gRE9PUktFRVBFUl9KV1RfU0VDUkVUX0tFWT0ke0RPT1JLRUVQRVJfSldUX1NFQ1JFVF9LRVl9XG4gICAgICAtIERPT1JLRUVQRVJfSldUX0FMR09SSVRITT0ke0RPT1JLRUVQRVJfSldUX0FMR09SSVRITX1cbiAgICAgIC0gRE9PUktFRVBFUl9KV1RfSVNTPSR7RE9PUktFRVBFUl9KV1RfSVNTfVxuICAgICAgLSBNRkFfSVNTVUVSPUV2b0NSTVxuICAgICAgLSBTSURFS0lRX0NPTkNVUlJFTkNZPTEwXG5cbiAgZXZvLWNybTpcbiAgICBpbWFnZTogZXZvYXBpY2xvdWQvZXZvLWFpLWNybS1jb21tdW5pdHk6bGF0ZXN0XG4gICAgY29tbWFuZDogc2ggLWMgXCJidW5kbGUgZXhlYyByYWlscyBkYjpwcmVwYXJlICYmIGJ1bmRsZSBleGVjIHJhaWxzIHMgLXAgMzAwMCAtYiAwLjAuMC4wXCJcbiAgICByZXN0YXJ0OiBhbHdheXNcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRC1TSEVMTFwiLCBcIndnZXQgLXEgLS1zcGlkZXIgaHR0cDovLzEyNy4wLjAuMTozMDAwL2hlYWx0aC9saXZlXCJdXG4gICAgICBpbnRlcnZhbDogMTBzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogMTBcbiAgICAgIHN0YXJ0X3BlcmlvZDogMTIwcyAgICBcbiAgICBkZXBlbmRzX29uOlxuICAgICAgZXZvLWF1dGg6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5ICAgICAgICBcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gUkFJTFNfRU5WPXByb2R1Y3Rpb25cbiAgICAgIC0gU0VDUkVUX0tFWV9CQVNFPSR7U0VDUkVUX0tFWV9CQVNFfVxuICAgICAgLSBKV1RfU0VDUkVUX0tFWT0ke0pXVF9TRUNSRVRfS0VZfVxuICAgICAgLSBFVk9BSV9DUk1fQVBJX1RPS0VOPSR7RVZPQUlfQ1JNX0FQSV9UT0tFTn1cbiAgICAgIC0gUE9TVEdSRVNfSE9TVD1wb3N0Z3Jlc1xuICAgICAgLSBQT1NUR1JFU19QT1JUPTU0MzJcbiAgICAgIC0gUE9TVEdSRVNfVVNFUk5BTUU9cG9zdGdyZXNcbiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JHtQT1NUR1JFU19QQVNTV09SRH1cbiAgICAgIC0gUE9TVEdSRVNfREFUQUJBU0U9ZXZvX2NybV9wcm9kdWN0aW9uXG4gICAgICAtIFBPU1RHUkVTX1NTTE1PREU9ZGlzYWJsZVxuICAgICAgLSBSRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5LzNcbiAgICAgIC0gRVZPX0FVVEhfU0VSVklDRV9VUkw9aHR0cDovL2V2by1hdXRoOjMwMDFcbiAgICAgIC0gRVZPX0FJX0NPUkVfU0VSVklDRV9VUkw9aHR0cDovL2V2by1jb3JlOjU1NTVcbiAgICAgIC0gQkFDS0VORF9VUkw9JHtCQUNLX1VSTH1cbiAgICAgIC0gRlJPTlRFTkRfVVJMPSR7RlJPTlRfVVJMfVxuICAgICAgLSBDT1JTX09SSUdJTlM9JHtGUk9OVF9VUkx9LCR7QkFDS19VUkx9XG4gICAgICAtIEVWT0xVVElPTl9BUElfT05MWV9TRVJWRVI9dHJ1ZVxuICAgICAgLSBESVNBQkxFX1RFTEVNRVRSWT10cnVlXG4gICAgICAtIExPR19MRVZFTD1pbmZvXG4gICAgICAtIEVOQUJMRV9BQ0NPVU5UX1NJR05VUD10cnVlXG4gICAgICAtIEVOQUJMRV9QVVNIX1JFTEFZX1NFUlZFUj10cnVlXG4gICAgICAtIEVOQUJMRV9JTkJPWF9FVkVOVFM9dHJ1ZVxuICAgICAgLSBCT1RfUlVOVElNRV9VUkw9aHR0cDovL2V2by1ib3QtcnVudGltZTo4MDgwXG4gICAgICAtIEJPVF9SVU5USU1FX1NFQ1JFVD0ke0JPVF9SVU5USU1FX1NFQ1JFVH1cbiAgICAgIC0gQk9UX1JVTlRJTUVfUE9TVEJBQ0tfQkFTRV9VUkw9JHtCQUNLX1VSTH1cbiAgICB2b2x1bWVzOlxuICAgICAgLSBldm8tY3JtLWRhdGE6L2FwcC9zdG9yYWdlXG5cbiAgZXZvLWNybS1zaWRla2lxOlxuICAgIGltYWdlOiBldm9hcGljbG91ZC9ldm8tYWktY3JtLWNvbW11bml0eTpsYXRlc3RcbiAgICBjb21tYW5kOiBbXCJidW5kbGVcIiwgXCJleGVjXCIsIFwic2lkZWtpcVwiLCBcIi1DXCIsIFwiY29uZmlnL3NpZGVraXEueW1sXCJdXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICBkaXNhYmxlOiB0cnVlICAgICAgIFxuICAgIGRlcGVuZHNfb246IFxuICAgICAgZXZvLWNybTpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkgICAgIFxuICAgIGVudmlyb25tZW50OlxuICAgICAgLSBSQUlMU19FTlY9cHJvZHVjdGlvblxuICAgICAgLSBTRUNSRVRfS0VZX0JBU0U9JHtTRUNSRVRfS0VZX0JBU0V9XG4gICAgICAtIEpXVF9TRUNSRVRfS0VZPSR7SldUX1NFQ1JFVF9LRVl9XG4gICAgICAtIEVWT0FJX0NSTV9BUElfVE9LRU49JHtFVk9BSV9DUk1fQVBJX1RPS0VOfVxuICAgICAgLSBQT1NUR1JFU19IT1NUPXBvc3RncmVzXG4gICAgICAtIFBPU1RHUkVTX1BPUlQ9NTQzMlxuICAgICAgLSBQT1NUR1JFU19VU0VSTkFNRT1wb3N0Z3Jlc1xuICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0ke1BPU1RHUkVTX1BBU1NXT1JEfVxuICAgICAgLSBQT1NUR1JFU19EQVRBQkFTRT1ldm9fY3JtX3Byb2R1Y3Rpb25cbiAgICAgIC0gUE9TVEdSRVNfU1NMTU9ERT1kaXNhYmxlXG4gICAgICAtIFJFRElTX1VSTD1yZWRpczovL3JlZGlzOjYzNzkvM1xuICAgICAgLSBFVk9fQVVUSF9TRVJWSUNFX1VSTD0ke0FVVEhfVVJMfVxuICAgICAgLSBFVk9fQUlfQ09SRV9TRVJWSUNFX1VSTD1odHRwOi8vZXZvLWNvcmU6NTU1NVxuICAgICAgLSBCQUNLRU5EX1VSTD0ke0JBQ0tfVVJMfVxuICAgICAgLSBGUk9OVEVORF9VUkw9JHtGUk9OVF9VUkx9XG4gICAgICAtIENPUlNfT1JJR0lOUz0ke0ZST05UX1VSTH0sJHtCQUNLX1VSTH0sJHtBVVRIX1VSTH1cbiAgICAgIC0gRElTQUJMRV9URUxFTUVUUlk9dHJ1ZVxuICAgICAgLSBMT0dfTEVWRUw9aW5mb1xuICAgICAgLSBFTkFCTEVfQUNDT1VOVF9TSUdOVVA9dHJ1ZVxuICAgICAgLSBFTkFCTEVfUFVTSF9SRUxBWV9TRVJWRVI9dHJ1ZVxuICAgICAgLSBFTkFCTEVfSU5CT1hfRVZFTlRTPXRydWVcbiAgICAgIC0gQk9UX1JVTlRJTUVfVVJMPWh0dHA6Ly9ldm8tYm90LXJ1bnRpbWU6ODA4MFxuICAgICAgLSBCT1RfUlVOVElNRV9TRUNSRVQ9JHtCT1RfUlVOVElNRV9TRUNSRVR9XG4gICAgICAtIEJPVF9SVU5USU1FX1BPU1RCQUNLX0JBU0VfVVJMPSR7QkFDS19VUkx9XG4gICAgICAtIFNJREVLSVFfQ09OQ1VSUkVOQ1k9MTBcblxuICBldm8tY29yZTpcbiAgICBpbWFnZTogZXZvYXBpY2xvdWQvZXZvLWFpLWNvcmUtc2VydmljZS1jb21tdW5pdHk6bGF0ZXN0XG4gICAgcmVzdGFydDogYWx3YXlzXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIHBvc3RncmVzOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeSAgICBcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gREJfSE9TVD1wb3N0Z3Jlc1xuICAgICAgLSBEQl9QT1JUPTU0MzJcbiAgICAgIC0gREJfVVNFUj1wb3N0Z3Jlc1xuICAgICAgLSBEQl9QQVNTV09SRD0ke1BPU1RHUkVTX1BBU1NXT1JEfVxuICAgICAgLSBEQl9OQU1FPWV2b19jcm1fcHJvZHVjdGlvblxuICAgICAgLSBEQl9TU0xNT0RFPWRpc2FibGVcbiAgICAgIC0gREJfTUFYX0lETEVfQ09OTlM9MTBcbiAgICAgIC0gREJfTUFYX09QRU5fQ09OTlM9MTAwXG4gICAgICAtIERCX0NPTk5fTUFYX0xJRkVUSU1FPTFoXG4gICAgICAtIERCX0NPTk5fTUFYX0lETEVfVElNRT0zMG1cbiAgICAgIC0gUE9SVD01NTU1XG4gICAgICAtIFNFQ1JFVF9LRVlfQkFTRT0ke1NFQ1JFVF9LRVlfQkFTRX1cbiAgICAgIC0gSldUX1NFQ1JFVF9LRVk9JHtKV1RfU0VDUkVUX0tFWX1cbiAgICAgIC0gSldUX0FMR09SSVRITT1IUzI1NlxuICAgICAgLSBFTkNSWVBUSU9OX0tFWT0ke0VOQ1JZUFRJT05fS0VZfVxuICAgICAgLSBFVk9MVVRJT05fQkFTRV9VUkw9aHR0cDovL2V2by1jcm06MzAwMFxuICAgICAgLSBFVk9fQVVUSF9CQVNFX1VSTD1odHRwOi8vZXZvLWF1dGg6MzAwMVxuICAgICAgLSBBSV9QUk9DRVNTT1JfVVJMPWh0dHA6Ly9ldm8tcHJvY2Vzc29yOjgwMDBcbiAgICAgIC0gQUlfUFJPQ0VTU09SX1ZFUlNJT049djFcblxuICBldm8tcHJvY2Vzc29yOlxuICAgIGltYWdlOiBldm9hcGljbG91ZC9ldm8tYWktcHJvY2Vzc29yLWNvbW11bml0eTpsYXRlc3RcbiAgICBkZXBlbmRzX29uOlxuICAgICAgZXZvLWNybTpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkgICAgICAgXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIFBPU1RHUkVTX0NPTk5FQ1RJT05fU1RSSU5HPXBvc3RncmVzcWw6Ly9wb3N0Z3Jlczoke1BPU1RHUkVTX1BBU1NXT1JEfUBwb3N0Z3Jlczo1NDMyL2V2b19jcm1fcHJvZHVjdGlvblxuICAgICAgLSBSRURJU19IT1NUPXJlZGlzXG4gICAgICAtIFJFRElTX1BPUlQ9NjM3OVxuICAgICAgLSBSRURJU19TU0w9ZmFsc2VcbiAgICAgIC0gUkVESVNfREI9M1xuICAgICAgLSBSRURJU19LRVlfUFJFRklYPVwiYTJhOlwiXG4gICAgICAtIFJFRElTX1RUTD0zNjAwXG4gICAgICAtIEhPU1Q9MC4wLjAuMFxuICAgICAgLSBQT1JUPTgwMDBcbiAgICAgIC0gREVCVUc9ZmFsc2VcbiAgICAgIC0gU0VDUkVUX0tFWV9CQVNFPSR7U0VDUkVUX0tFWV9CQVNFfVxuICAgICAgLSBFTkNSWVBUSU9OX0tFWT0ke0VOQ1JZUFRJT05fS0VZfVxuICAgICAgLSBFVk9BSV9DUk1fQVBJX1RPS0VOPSR7RVZPQUlfQ1JNX0FQSV9UT0tFTn1cbiAgICAgIC0gRVZPX0FJX0NSTV9VUkw9aHR0cDovL2V2by1jcm06MzAwMFxuICAgICAgLSBDT1JFX1NFUlZJQ0VfVVJMPWh0dHA6Ly9ldm8tY29yZTo1NTU1L2FwaS92MVxuICAgICAgLSBFVk9fQVVUSF9CQVNFX1VSTD1odHRwOi8vZXZvLWF1dGg6MzAwMVxuICAgICAgLSBBUFBfVVJMPSR7RlJPTlRfVVJMfVxuICAgICAgLSBBUElfVVJMPSR7UFJPQ0VTU09SX1VSTH1cbiAgICAgIC0gQVBJX1RJVExFPUFnZW50IFByb2Nlc3NvciBDb21tdW5pdHlcbiAgICAgIC0gQVBJX0RFU0NSSVBUSU9OPUFnZW50IFByb2Nlc3NvciBDb21tdW5pdHkgZm9yIEV2b2x1dGlvbiBBSVxuICAgICAgLSBBUElfVkVSU0lPTj0xLjAuMCAgXG4gICAgICAtIE9SR0FOSVpBVElPTl9OQU1FPUV2b2x1dGlvbiBDUk0gIFxuICAgICAgLSBUT09MU19DQUNIRV9FTkFCTEVEPXRydWVcbiAgICAgIC0gVE9PTFNfQ0FDSEVfVFRMPTM2MDBcblxuICBldm8tYm90LXJ1bnRpbWU6XG4gICAgaW1hZ2U6IGV2b2FwaWNsb3VkL2V2by1ib3QtcnVudGltZTpsYXRlc3RcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gTElTVEVOX0FERFI9MC4wLjAuMDo4MDgwXG4gICAgICAtIFJFRElTX1VSTD1yZWRpczovLzoke1JFRElTX1BBU1NXT1JEfUByZWRpczo2Mzc5LzNcbiAgICAgIC0gQUlfUFJPQ0VTU09SX1VSTD1odHRwOi8vZXZvLXByb2Nlc3Nvcjo4MDAwXG4gICAgICAtIEJPVF9SVU5USU1FX1NFQ1JFVD0ke0JPVF9SVU5USU1FX1NFQ1JFVH1cbiAgICAgIC0gQUlfQ0FMTF9USU1FT1VUX1NFQ09ORFM9MzBcblxuICBldm8tY3JtLWZyb250ZW5kOlxuICAgIGltYWdlOiBldm9hcGljbG91ZC9ldm8tYWktZnJvbnRlbmQtY29tbXVuaXR5OmxhdGVzdFxuICAgIGVudmlyb25tZW50OlxuICAgICAgLSBWSVRFX0FQUF9FTlY9cHJvZHVjdGlvblxuICAgICAgLSBWSVRFX0FQSV9VUkw9JHtCQUNLX1VSTH1cbiAgICAgIC0gVklURV9BVVRIX0FQSV9VUkw9JHtBVVRIX1VSTH1cbiAgICAgIC0gVklURV9FVk9BSV9BUElfVVJMPSR7RVZPSUFfVVJMfVxuICAgICAgLSBWSVRFX0FHRU5UX1BST0NFU1NPUl9VUkw9JHtQUk9DRVNTT1JfVVJMfVxuICAgICAgLSBWSVRFX1dTX1VSTD13c3M6Ly8ke0JBQ0tfRE9NQUlOfVxuICAgICAgLSBWSVRFX0ZST05UX1VSTD0ke0ZST05UX1VSTH1cblxuICBwb3N0Z3JlczpcbiAgICBpbWFnZTogcG9zdGdyZXM6MTYtYWxwaW5lXG4gICAgcmVzdGFydDogYWx3YXlzXG4gICAgdm9sdW1lczpcbiAgICAgIC0gcG9zdGdyZXMtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGFcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQVRBQkFTRX1cbiAgICAgIC0gUE9TVEdSRVNfVVNFUj0ke1BPU1RHUkVTX1VTRVJOQU1FfVxuICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0ke1BPU1RHUkVTX1BBU1NXT1JEfVxuICAgIGhlYWx0aGNoZWNrOlxuICAgICAgdGVzdDogW1wiQ01ELVNIRUxMXCIsIFwicGdfaXNyZWFkeSAtVSBwb3N0Z3Jlc1wiXVxuICAgICAgaW50ZXJ2YWw6IDVzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogMTBcbiAgICAgIHN0YXJ0X3BlcmlvZDogMTBzXG4gICAgICAgICAgICAgICAgXG4gIHJlZGlzOlxuICAgIGltYWdlOiByZWRpczphbHBpbmVcbiAgICByZXN0YXJ0OiBhbHdheXNcbiAgICB2b2x1bWVzOlxuICAgICAgLSByZWRpcy1kYXRhOi9kYXRhXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OiBbXCJDTUQtU0hFTExcIiwgXCJyZWRpcy1jbGkgcGluZ1wiXVxuICAgICAgaW50ZXJ2YWw6IDVzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogMTBcblxudm9sdW1lczpcbiAgcG9zdGdyZXMtZGF0YTpcbiAgcmVkaXMtZGF0YTpcbiAgZXZvLXByb2Nlc3Nvci1kYXRhOlxuICBldm8tY3JtLWRhdGE6XG4iLAogICJjb25maWciOiAiW3ZhcmlhYmxlc11cbmF1dGhfZG9tYWluID0gXCIke2RvbWFpbn1cIlxuZnJvbnRfZG9tYWluID0gXCIke2RvbWFpbn1cIlxuYXBpX2RvbWFpbiA9IFwiJHtkb21haW59XCJcbmV2b2lhX2RvbWFpbiA9IFwiJHtkb21haW59XCJcbnByb2Nlc3Nvcl9kb21haW4gPSBcIiR7ZG9tYWlufVwiXG5wb3N0Z3Jlc19wYXNzd29yZCA9IFwiJHtwYXNzd29yZH1cIlxuc2VjcmV0X2tleV9iYXNlID0gXCIke2Jhc2U2NDo2NH1cIlxuand0X3NlY3JldF9rZXkgPSBcIiR7YmFzZTY0OjY0fVwiXG5hcGlfdG9rZW4gPSBcIiR7YmFzZTY0OjY0fVwiXG5kb29ya2VlcGVyX2p3dF9zZWNyZXRfa2V5ID0gXCIke2Jhc2U2NDo2NH1cIlxuYm90X3J1bnRpbWVfc2VjcmV0ID0gXCIke2Jhc2U2NDo2NH1cIlxuZW5jcnlwdGlvbl9rZXkgPSBcIiR7YmFzZTY0OjMyfVwiXG5nbG9iYWxfYXBpX2tleSA9IFwiJHtiYXNlNjQ6NjR9XCJcblxuW2NvbmZpZ11cbmVudiA9IFtcbiAgXCJTRUNSRVRfS0VZX0JBU0U9JHtzZWNyZXRfa2V5X2Jhc2V9XCIsXG4gIFwiSldUX1NFQ1JFVF9LRVk9JHtqd3Rfc2VjcmV0X2tleX1cIixcbiAgXCJFVk9BSV9DUk1fQVBJX1RPS0VOPSR7YXBpX3Rva2VufVwiLFxuICBcIkdMT0JBTF9BUElfS0VZPSR7Z2xvYmFsX2FwaV9rZXl9XCIsXG4gIFwiUE9TVEdSRVNfUEFTU1dPUkQ9JHtwb3N0Z3Jlc19wYXNzd29yZH1cIixcbiAgXCJQT1NUR1JFU19EQVRBQkFTRT1ldm9fY3JtX2NvbW11bml0eVwiLFxuICBcIlBPU1RHUkVTX1VTRVJOQU1FPXBvc3RncmVzXCIsXG4gIFwiUkVESVNfVVJMPXJlZGlzOi8vcmVkaXM6NjM3OS8zXCIsXG4gIFwiRlJPTlRfRE9NQUlOPSR7ZnJvbnRfZG9tYWlufVwiLCAgXG4gIFwiRlJPTlRfVVJMPVxcXCJodHRwOi8vJHtmcm9udF9kb21haW59XFxcIlwiLCAgXG4gIFwiQkFDS19ET01BSU49JHthcGlfZG9tYWlufVwiLFxuICBcIkJBQ0tfVVJMPVxcXCJodHRwOi8vJHthcGlfZG9tYWlufVxcXCJcIixcbiAgXCJBVVRIX0RPTUFJTj0ke2F1dGhfZG9tYWlufVwiLFxuICBcIkFVVEhfVVJMPVxcXCJodHRwOi8vJHthdXRoX2RvbWFpbn1cXFwiXCIsXG4gIFwiUFJPQ0VTU09SX0RPTUFJTj0ke3Byb2Nlc3Nvcl9kb21haW59XCIsXG4gIFwiUFJPQ0VTU09SX1VSTD1cXFwiaHR0cDovLyR7cHJvY2Vzc29yX2RvbWFpbn1cXFwiXCIsXG4gIFwiRVZPSUFfRE9NQUlOPSR7ZXZvaWFfZG9tYWlufVwiLFxuICBcIkVWT0lBX1VSTD1cXFwiaHR0cDovLyR7ZXZvaWFfZG9tYWlufVxcXCJcIixcbiAgXCJET09SS0VFUEVSX0pXVF9TRUNSRVRfS0VZPSR7ZG9vcmtlZXBlcl9qd3Rfc2VjcmV0X2tleX1cIixcbiAgXCJET09SS0VFUEVSX0pXVF9BTEdPUklUSE09aHMyNTZcIixcbiAgXCJET09SS0VFUEVSX0pXVF9JU1M9ZXZvLWF1dGgtc2VydmljZVwiLFxuICBcIk1GQV9JU1NVRVI9RXZvQ1JNXCIsXG4gIFwiQk9UX1JVTlRJTUVfU0VDUkVUPSR7Ym90X3J1bnRpbWVfc2VjcmV0fVwiLFxuICBcIkVOQ1JZUFRJT05fS0VZPSR7ZW5jcnlwdGlvbl9rZXl9XCIsXG5dXG5cbm1vdW50cyA9IFtdXG5cbltbY29uZmlnLmRvbWFpbnNdXVxuc2VydmljZU5hbWUgPSBcImV2by1hdXRoXCJcbnBvcnQgPSAzMDAxXG5ob3N0ID0gXCIke2F1dGhfZG9tYWlufVwiXG5cblxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwiZXZvLWNybS1mcm9udGVuZFwiXG5wb3J0ID0gODBcbmhvc3QgPSBcIiR7ZnJvbnRfZG9tYWlufVwiXG5cblxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwiZXZvLWNybVwiXG5wb3J0ID0gMzAwMFxuaG9zdCA9IFwiJHthcGlfZG9tYWlufVwiXG5cblxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwiZXZvLXByb2Nlc3NvclwiXG5wb3J0ID0gODAwMFxuaG9zdCA9IFwiJHtwcm9jZXNzb3JfZG9tYWlufVwiXG4iCn0=Links
Tags
crm, ai, agent, processing, bot, pipeline
Version: latest
Evolution API
Evolution API is a robust platform dedicated to empowering small businesses with limited resources, going beyond a simple messaging solution via WhatsApp.
Evolution GO
Evolution Go is a high-performance implementation of the WhatsApp API, written in Go. Built with Go’s standard library and modern development practices, it provides a robust and efficient solution for WhatsApp integration using the whatsmeow library.