xds-agent configuration is driven by a JSON config file.

The tarball mentioned in previous section includes this file with default settings.

Here is the logic to determine which conf file will be used:

  1. from command line option: --config myConfig.json
  2. $HOME/.xds/agent/agent-config.json file
  3. /etc/xds/agent/agent-config.json file

Supported fields in configuration file are (all fields are optional and example below corresponds to the default values):

  • httpPort : http port of agent REST interface
  • webAppDir : location of client webapp / dashboard (default: webapp/dist)
  • logsDir : directory to store logs (eg. syncthing output)
  • xdsServers : an array of xds-server object
    • xdsServers.url: url of xds-server to connect to
  • syncthing: a object defining syncthing settings
    • syncthing.binDir : syncthing binaries directory (default: executable directory)
    • syncthing.home” : syncthing home directory (usually …/syncthing-config)
    • syncthing.gui-address : syncthing gui url (default http://localhost:8386)
    • syncthing.gui-apikey : syncthing api-key to use (default auto-generated)
    "httpPort": "8800",
    "webAppDir": "./www",
    "logsDir": "${HOME}/.xds/agent/logs",
    "xdsServers": [
          "url": "http://localhost:8000"
    "syncthing": {
        "home": "${HOME}/.xds/agent/syncthing-config",
        "gui-address": "http://localhost:8386",
        "gui-apikey": "1234abcezam"


environment variables are supported by using ${MY_VAR} syntax.