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
maxSessions: 8
enableDashboard: true
bootedSimulators: true
aiProvider: gemini
aiModel: llava:7b
aiBaseUrl: "http://localhost:11434"
buildCleanupDays: 30

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. Master Parameters Reference​

Below is the definitive list of all Xenon configuration parameters.

YAML KeyCLI FlagMandatoryType / ValuesDefaultDescription
Core Options
platform--plugin-xenon-platformNoandroid, ios, bothbothTarget platform for automation
maxSessions--plugin-xenon-max-sessionsNoNumber8Maximum concurrent sessions
enableDashboard--plugin-xenon-enable-dashboardNoBooleanfalseEnable the web dashboard interface
bindHostOrIp--plugin-xenon-bind-host-or-ipNoStringLocal IPInternal binding address
Device Filters
androidDeviceType--plugin-xenon-android-device-typeNoboth, real, simulatedbothAndroid device categories to include
iosDeviceType--plugin-xenon-ios-device-typeNoboth, real, simulatedbothiOS device categories to include
bootedSimulators--plugin-xenon-booted-simulatorsNoBooleanfalseUse only simulators already in Booted state
skipChromeDownload--plugin-xenon-skip-chrome-downloadNoBooleantruePrevent automatic Chromedriver fetching
hub--plugin-xenon-hubNoURLNoneHub URL when running in Node mode
AI & Self-Healing
enableSelfHealing--plugin-xenon-enable-self-healingNoBooleantrueEnable global locator auto-recovery
aiProvider--plugin-xenon-ai-providerNogemini, openai, anthropic, ollamageminiPrimary AI diagnostics provider
aiModel--plugin-xenon-ai-modelNoStringProvider defModel name override (e.g. gpt-4o)
aiBaseUrl--plugin-xenon-ai-base-urlNoURLNoneCustom API endpoint (e.g. for Ollama)
Database
databaseProvider--plugin-xenon-database-providerNosqlite, postgresqlsqliteState storage engine
databaseUrl--plugin-xenon-database-urlNoStringLocal DB PathConnection string or path
Cleanup & Retention
buildCleanupDays--plugin-xenon-build-cleanup-daysNoNumber30Build retention period in days
buildCleanupMaxCount--plugin-xenon-build-cleanup-max-countNoNumber100Max builds to retain in database
buildCleanupSchedule--plugin-xenon-build-cleanup-scheduleNoCron String0 0 * * *Cleanup job execution schedule
deleteBuildAssets--plugin-xenon-delete-build-assetsNoBooleantrueDelete video/screenshots during cleanup
Timeouts & Monitoring
deviceAvailabilityTimeoutMs--plugin-device-availability-timeout-msNoNumber300000Max wait for a free device (ms)
newCommandTimeoutSec--plugin-new-command-timeout-secNoNumber60Auto-release idle sessions (sec)
healthCheckIntervalMs--plugin-xenon-health-check-interval-msNoNumber86400000Frequency of device health audits
sessionHeartbeatIntervalMs--plugin-xenon-session-heartbeat-interval-msNoNumber30000Session health check frequency
enableJsonLogging--plugin-xenon-enable-json-loggingNoBooleanfalseFormat logs as structured JSON

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.