Skip to content

Environment Variables

Selu is configured through environment variables, set in your .env file or in your Docker Compose configuration.

Core server configuration. These use the SELU__ prefix with double-underscore nesting (parsed by the configuration library with SELU prefix and __ separator).

VariableDefaultDescription
SELU__ENCRYPTION_KEYRequired. Encryption key for stored credentials (API keys, tokens). Use at least 32 random characters.
SELU__SERVER__PORT3000Port the dashboard and API listen on.
SELU__SERVER__HOST0.0.0.0IP address to bind to.
SELU__DATABASE__URLsqlite:///app/data/selu.db?mode=rwcSQLite connection string.
SELU__EXTERNAL_URLPublic URL of your instance. Set when behind a reverse proxy for correct webhook callback URLs.
SELU__BASE_PATHURL path prefix for reverse proxy sub-path deployments (e.g., /selu).
SELU__MARKETPLACE_URLhttps://selu.bot/api/marketplace/agentsAgent marketplace API endpoint.
SELU__INSTALLED_AGENTS_DIR/app/installed_agentsDirectory where marketplace agents are installed.
SELU__AGENTS_DIR/app/agentsDirectory for bundled default agent definitions.
SELU__RELEASE_METADATA_URLhttps://selu.bot/api/releases/seluRelease metadata endpoint for the update system.
SELU__EGRESS_PROXY_ADDR0.0.0.0:8888Egress proxy address for capability containers.
SELU__MAX_CHAIN_DEPTH3Maximum event chain depth to prevent infinite loops.

Variables used by the built-in update system. SELU_RELEASE_CHANNEL and the SELU_IMAGE_* variables use single underscores because they are read directly via std::env::var, not through the configuration library.

VariableDefaultDescription
SELU_RELEASE_CHANNELstableRelease channel: stable, dev, or nightly.
SELU_IMAGE_TAGCurrent Docker image tag. Managed automatically by the update system.
SELU_IMAGE_DIGESTCurrent image digest for verification. Managed automatically.
SELU_IMAGE_VERSIONCurrent semantic version (e.g., v1.5.0-dev). Managed automatically.
SELU_IMAGE_BUILDCurrent build number. Managed automatically.

These variables configure how the orchestrator communicates with the updater sidecar.

VariableDefaultDescription
SELU_UPDATER_URLhttp://selu-updater:8090URL of the updater sidecar service.
SELU_UPDATER_SHARED_SECRETShared secret for authenticating with the updater sidecar (sent as X-Selu-Updater-Secret header).
SELU_UPDATER_REQUEST_TIMEOUT_SECS30Timeout for requests to the updater sidecar.

The updater sidecar is a separate container that performs updates while Selu restarts. It uses the UPDATER__ prefix with double-underscore nesting.

VariableDefaultDescription
UPDATER__SERVER__HOST0.0.0.0Host the updater API listens on.
UPDATER__SERVER__PORT8090Port the updater API listens on.
UPDATER__SHARED_SECRETShared secret for authenticating requests from the orchestrator.
UPDATER__COMPOSE_FILE./docker-compose.ymlPath to Docker Compose file.
UPDATER__COMPOSE_PROJECT_DIRDocker Compose project directory.
UPDATER__COMPOSE_SERVICEseluService name in the Compose file to update.
UPDATER__UPDATER_SERVICEService name of the updater itself in the Compose file.
UPDATER__COMPOSE_ENV_FILE./.envPath to .env file for persisting update variables.
UPDATER__HEALTH_URLhttp://127.0.0.1:3000/api/healthHealth check endpoint to verify updates.
UPDATER__HEALTH_TIMEOUT_SECS90How long to wait for health checks to pass after an update.
UPDATER__HEALTH_INTERVAL_SECS3Interval between health check attempts.
UPDATER__DOCKER_BINPath to Docker binary.
UPDATER__IMAGE_REPOghcr.io/selu-bot/seluDocker image repository for Selu.
UPDATER__SELF_UPDATE_ON_APPLYfalseWhether the sidecar refreshes itself during the same update run.

The updater can also manage a WhatsApp bridge container:

VariableDefaultDescription
UPDATER__WHATSAPP_BRIDGE_ENABLEDEnable WhatsApp bridge sidecar management.
UPDATER__WHATSAPP_BRIDGE_IMAGE_REPODocker image for the WhatsApp bridge.
UPDATER__WHATSAPP_BRIDGE_CONTAINER_NAMEContainer name for the WhatsApp bridge.
UPDATER__WHATSAPP_BRIDGE_DATA_VOLUMEData volume for the WhatsApp bridge.
UPDATER__WHATSAPP_BRIDGE_NETWORKDocker network for the WhatsApp bridge.
UPDATER__WHATSAPP_BRIDGE_PORTPort for the WhatsApp bridge.

LLM provider credentials are not configured through environment variables. They are stored encrypted in the database and managed through the Selu dashboard under Settings → Providers.

Supported providers: Anthropic, OpenAI, AWS Bedrock, and Pico (OpenAI-compatible local AI server).

Channel credentials (Telegram bot tokens, BlueBubbles/iMessage configuration) are not configured through environment variables. They are managed through the dashboard under Pipes.

ChannelUpdate frequencyDescription
stableEvery few weeksTested releases with full changelogs
devWeeklyNewer features and improvements
nightlyDailyBuilds from main branch (may be unstable)

Set your preferred channel with SELU_RELEASE_CHANNEL or change it in the System Updates interface.