xEvolve documentation

Install an agent

The agent runs on your side, next to the file server. It connects back to your workspace over HTTPS and does the SFTP, FTP, FTPS, SMB and NFS work.

Create the agent

  1. Open Agents and create an agent. The deploy guide opens with the agent ID and the agent secret.
  2. Copy the secret now. It is shown once; a guide you reopen later shows <agent-secret>.
  3. Decide the public HTTPS address where xEvolve can reach the agent. You enter it as XEVOLVE_AGENT_URL.

Settings

VariableValue
AGENT_SECRETThe agent secret from the guide.
XEVOLVE_API_URLYour workspace address, for example https://<workspace>.xevolve.io. Do not use api.xevolve.io: it has no workspace and answers workspace_not_ready.
XEVOLVE_API_TOKENThe agent secret again.
XEVOLVE_AGENT_IDThe agent ID from the guide.
XEVOLVE_AGENT_URLThe public URL where xEvolve reaches the agent.
PORT3100

Docker

docker run -d --name xevolve-agent \
  -p 3100:3100 \
  -e AGENT_SECRET=<agent-secret> \
  -e XEVOLVE_API_URL=https://<workspace>.xevolve.io \
  -e XEVOLVE_API_TOKEN=<agent-secret> \
  -e XEVOLVE_AGENT_ID=<agent-id> \
  -e XEVOLVE_AGENT_URL=https://your-agent-url.example.com \
  --restart unless-stopped \
  ghcr.io/spot-techno/xevolve-agent:latest

Azure Web App for Containers

az group create -n xevolve-agent-rg -l westeurope
az appservice plan create -n xevolve-agent-plan -g xevolve-agent-rg \
  --is-linux --sku B1

az webapp create -n xevolve-agent -g xevolve-agent-rg \
  -p xevolve-agent-plan \
  -i ghcr.io/spot-techno/xevolve-agent:latest

az webapp config appsettings set -n xevolve-agent -g xevolve-agent-rg \
  --settings \
  AGENT_SECRET=<agent-secret> \
  XEVOLVE_API_URL=https://<workspace>.xevolve.io \
  XEVOLVE_API_TOKEN=<agent-secret> \
  XEVOLVE_AGENT_ID=<agent-id> \
  XEVOLVE_AGENT_URL=https://xevolve-agent.azurewebsites.net \
  WEBSITES_PORT=3100

AWS ECS (Fargate)

This assumes a VPC, a subnet and an ECS cluster named xevolve already exist.

aws ecs register-task-definition --cli-input-json file://task-def.json
aws ecs create-service \
  --cluster xevolve \
  --service-name xevolve-agent \
  --task-definition xevolve-agent \
  --desired-count 1 \
  --launch-type FARGATE \
  --network-configuration "awsvpcConfiguration={subnets=[<subnet-id>],securityGroups=[<security-group-id>],assignPublicIp=ENABLED}"

The file task-def.json:

{
  "family": "xevolve-agent",
  "containerDefinitions": [{
    "name": "agent",
    "image": "ghcr.io/spot-techno/xevolve-agent:latest",
    "portMappings": [{"containerPort": 3100}],
    "environment": [
      {"name": "AGENT_SECRET", "value": "<agent-secret>"},
      {"name": "XEVOLVE_API_URL", "value": "https://<workspace>.xevolve.io"},
      {"name": "XEVOLVE_API_TOKEN", "value": "<agent-secret>"},
      {"name": "XEVOLVE_AGENT_ID", "value": "<agent-id>"},
      {"name": "XEVOLVE_AGENT_URL", "value": "https://your-agent-url.example.com"}
    ]
  }],
  "cpu": "256", "memory": "512",
  "networkMode": "awsvpc",
  "requiresCompatibilities": ["FARGATE"]
}

Check that it works

  1. Open Agents and choose Test agent on the agent card. This checks that xEvolve can reach the agent address.
  2. Wait one minute. The agent sends a heartbeat every 60 seconds and the card shows when it was last seen.
  3. Add or edit an SFTP, FTP, FTPS, SMB or NFS connection, select this agent and test the connection.

Test agent does not check the agent secret. A wrong secret shows up as a missing heartbeat.