Environment Variables
All Selu configuration is done through environment variables, typically set in your .env file alongside docker-compose.yml.
Required
Section titled “Required”Only one variable is required to start Selu:
| Variable | Description |
|---|---|
SELU__ENCRYPTION_KEY | Encryption key for stored credentials. Use a random string of at least 32 characters. |
Server
Section titled “Server”| Variable | Description | Default |
|---|---|---|
SELU__SERVER__PORT | Port the Selu dashboard listens on | 3000 |
SELU__SERVER__HOST | IP address to bind to | 0.0.0.0 |
SELU__EXTERNAL_URL | Public URL of your instance (needed for webhooks behind a reverse proxy) | — |
SELU__BASE_PATH | URL path prefix when running behind a reverse proxy on a sub-path (e.g., /selu) | — |
Database
Section titled “Database”Selu uses an embedded SQLite database. By default it’s stored inside the container at /app/data/selu.db.
| Variable | Description | Default |
|---|---|---|
SELU__DATABASE__URL | SQLite connection string | sqlite:///app/data/selu.db?mode=rwc |
System updates
Section titled “System updates”The built-in update system is configured with these variables:
| Variable | Description | Default |
|---|---|---|
SELU_RELEASE_CHANNEL | Release channel: stable, dev, or nightly | stable |
SELU__RELEASE_METADATA_URL | URL for release metadata API | https://selu.bot/api/releases/selu |
The update system also writes these variables to your .env file automatically — you don’t need to set them:
| Variable | Description |
|---|---|
SELU_IMAGE_TAG | Current Docker image tag |
SELU_IMAGE_DIGEST | Image digest used for verification |
SELU_IMAGE_VERSION | Release version (e.g., v1.5.0) |
SELU_IMAGE_BUILD | Build number |
Updater sidecar (advanced)
Section titled “Updater sidecar (advanced)”The update sidecar runs alongside Selu and manages the actual update process. These variables are pre-configured by the installer — you normally don’t need to change them.
| Variable | Description | Default |
|---|---|---|
SELU_UPDATER_URL | URL of the updater sidecar | http://selu-updater:8090 |
SELU_UPDATER_SHARED_SECRET | Shared secret for authenticating with the sidecar | — |
SELU_UPDATER_REQUEST_TIMEOUT_SECS | Timeout for requests to the sidecar (seconds) | 30 |
Marketplace and agents
Section titled “Marketplace and agents”| Variable | Description | Default |
|---|---|---|
SELU__MARKETPLACE_URL | Agent marketplace API URL | https://selu.bot/api/marketplace/agents |
SELU__INSTALLED_AGENTS_DIR | Directory for installed marketplace agents | /app/installed_agents |
LLM providers and channels
Section titled “LLM providers and channels”LLM provider credentials (Anthropic, OpenAI, Bedrock) and channel credentials (Telegram, iMessage) are managed through the Selu dashboard — not through environment variables. Go to Settings → Providers to add your API keys, or Pipes to set up messaging channels.
Advanced
Section titled “Advanced”| Variable | Description | Default |
|---|---|---|
SELU__EGRESS_PROXY_ADDR | Egress proxy address for agent containers | 0.0.0.0:8888 |
SELU__MAX_CHAIN_DEPTH | Maximum event chain depth (prevents loops) | 3 |
Example .env file
Section titled “Example .env file”SELU__ENCRYPTION_KEY=a1b2c3d4e5f6...
# Release channelSELU_RELEASE_CHANNEL=stable
# If behind a reverse proxy# SELU__EXTERNAL_URL=https://selu.example.comYou can also set variables directly in docker-compose.yml under the environment key, but the .env file is simpler for most setups.
Variable naming
Section titled “Variable naming”Selu uses a double-underscore (__) separator for nested configuration. For example:
SELU__SERVER__PORT→ server portSELU__EXTERNAL_URL→ external URL
A few variables used by the update system (SELU_RELEASE_CHANNEL, SELU_IMAGE_TAG, etc.) use single underscores because they are read directly, not through the configuration library.
Release channels
Section titled “Release channels”| Channel | Update frequency | Best for |
|---|---|---|
| Stable | Every few weeks | Production use (recommended) |
| Dev | Weekly | Early access to new features |
| Nightly | Daily | Testing (may be unstable) |
You can also switch channels in the dashboard under System Updates.