Skip to main content

Configuration & Server Arguments

Xenon is highly configurable to suit single-node, hub-node, or cloud deployments. You can configure Xenon using:

  1. Configuration File (Recommended for production)
  2. Runtime API (For dynamic updates)
  3. CLI Arguments (Good for quick testing)

1. Using Configuration File​

We recommend using an Appium configuration file to manage complex settings.

server:
keepAliveTimeout: 800
basePath: /wd/hub
usePlugins:
- xenon
plugin:
xenon:
platform: both
iosDeviceType: both
androidDeviceType: both
enableDashboard: true
maxSessions: 8

To run:

appium server --config xenon-config.yaml

2. Runtime Configuration (API)​

Xenon exposes a REST API to update configuration at runtime. This is useful for adjusting timeouts or concurrency limits without downtime.

Endpoint: PUT /xenon/api/config

Example Request:

curl -X PUT http://localhost:4723/xenon/api/config \
-H "Content-Type: application/json" \
-d '{ "maxSessions": 12, "newCommandTimeoutSec": 120 }'

Response:

{
"success": true,
"config": { ... },
"restartRequired": false,
"message": "Configuration updated..."
}

Restart Required: Changing these properties via API will NOT take effect until a server restart:

  • hub
  • platform
  • bindHostOrIp
  • proxy
  • cloud
  • iosDeviceType / androidDeviceType

3. CLI Arguments Reference​

These arguments can be passed via command line flags (e.g., --plugin-xenon-platform=ios).

Configuration KeyCLI FlagDescriptionDefaultOptions
platform--plugin-xenon-platformPlatform to run tests againstbothboth,ios,android
iosDeviceType--plugin-xenon-ios-device-typeTypes of iOS devices to includebothboth,simulated,real
androidDeviceType--plugin-xenon-android-device-typeTypes of Android devices to includebothboth,simulated,real
skipChromeDownload--plugin-xenon-skip-chrome-downloadSkip automatic chromedriver downloadtruetrue, false
hub--plugin-xenon-hubHUB IP address (if running as node)Nonehttp://host:port
maxSessions--plugin-xenon-max-sessionsLimit concurrent sessions8Number
enableDashboard--plugin-xenon-enable-dashboardEnable the web dashboardfalsetrue, false
bootedSimulators--plugin-xenon-booted-simulatorsUse already booted simulatorsfalsetrue, false
deviceAvailabilityTimeoutMs--plugin-device-availability-timeout-msWait time for free device (ms)300000Number
newCommandTimeoutSec--plugin-new-command-timeout-secAuto-release session timeout (sec)60Number
databaseProvider--plugin-xenon-database-providerDatabase type for state storagesqlitesqlite, postgresql
databaseUrl--plugin-xenon-database-urlConnection string for the databaseLocal pathConnection URL
aiProvider--plugin-xenon-ai-providerAI provider for Xenongeminigemini, openai, anthropic, ollama
aiModel--plugin-xenon-ai-modelAI model name to use-e.g., gpt-4o, llama3
aiBaseUrl--plugin-xenon-ai-base-urlCustom base URL for AI provider-e.g., for Ollama
buildCleanupDays--plugin-xenon-build-cleanup-daysRetention period in days30Number
buildCleanupMaxCount--plugin-xenon-build-cleanup-max-countMaximum number of builds to keep100Number
buildCleanupSchedule--plugin-xenon-build-cleanup-scheduleCron schedule for cleanup"0 0 * * *"Cron
deleteBuildAssets--plugin-xenon-delete-build-assetsDelete videos/screenshotstruetrue, false

4. Environment Variables​

Some advanced features are configured via environment variables.

AI & Diagnostics​

VariableDescriptionDefault
GEMINI_API_KEY or XENON_GEMINI_API_KEYGoogle Gemini API key—
OPENAI_API_KEY or XENON_OPENAI_API_KEYOpenAI API key—
ANTHROPIC_API_KEY or XENON_ANTHROPIC_API_KEYAnthropic API key—
XENON_AI_PROVIDERAI provider: gemini, openai, anthropic, ollamagemini
XENON_AI_MODELUniversal AI model override (all providers)Provider default
XENON_GEMINI_MODELGemini-specific model (e.g., gemini-3-flash-preview)—
XENON_OPENAI_MODELOpenAI-specific model (e.g., gpt-4o)—
XENON_ANTHROPIC_MODELAnthropic-specific model—
XENON_OLLAMA_MODELOllama-specific model (e.g., llava)—
XENON_AI_BASE_URLCustom base URL (for self-hosted Ollama)—

→ See AI Features for full provider documentation.

Database​

VariableDescriptionDefault
DATABASE_URLPostgreSQL or SQLite connection stringfile:~/.cache/xenon/xenon.db
XENON_DB_PROVIDERDatabase provider (sqlite or postgresql)sqlite

→ See Deployment Guide for database setup instructions.

Observability​

VariableDescriptionDefault
OTEL_EXPORTER_OTLP_ENDPOINTOpenTelemetry collector endpoint (e.g., http://jaeger:4318/v1/traces)—
XENON_OTEL_DEBUGLog traces to console for debuggingfalse

Cloud & Proxy​

Xenon also supports cloud and proxy configurations. See the Cloud Execution and Deployment Guide for structure.