Environment Configuration Reference
This is the generated lookup for environment-backed workspace and service configuration. Copy .env.example to .env.local for machine-specific values. The config loader searches ancestor .env.local and .env files, and operating-system environment variables take precedence.
Do not edit the tables by hand. Update the registry in crates/config/src/env_docs.rs, then regenerate this page and .env.example through the generated-artifact gate.
This reference is generated from the config crate. Update it with cargo run -p aether-config --bin aether-config-docs -- docs/wiki/operations/environment-configuration-reference.md.
The config crate reads .env.local and .env files from ancestor directories. OS environment variables take precedence over dotenv values.
Loader
| Variable | Default | Notes |
|---|---|---|
AETHER_ENV_FILE |
unset | Optional dotenv file loaded before ancestor .env.local and .env files. |
Shared assets
| Variable | Default | Notes |
|---|---|---|
AETHER_ASSET_ROOT |
assets | Filesystem root for authored runtime assets used by login and control-plane scene lookup. |
Local runtime paths
| Variable | Default | Notes |
|---|---|---|
AETHER_LOCAL_CONFIG_ROOT |
platform config-local directory | Base directory for mutable per-user config documents; the app data folder is appended. |
AETHER_LOCAL_STATE_ROOT |
platform data-local directory | Base directory for mutable per-user save-state documents; the app data folder is appended. |
AETHER_LOCAL_CACHE_ROOT |
platform cache directory | Base directory for mutable per-user cache documents; the app data folder is appended. |
Shared database
| Variable | Default | Notes |
|---|---|---|
AETHER_DATABASE_URL |
built from split fields | Full Postgres URL. When set, split database host, port, name, user, password, and sslmode fields are ignored. |
AETHER_DATABASE_HOST |
127.0.0.1 | Postgres host used when AETHER_DATABASE_URL is unset. |
AETHER_DATABASE_PORT |
5432 | Postgres port used when AETHER_DATABASE_URL is unset. |
AETHER_DATABASE_NAME |
aether | Postgres database name used when AETHER_DATABASE_URL is unset. |
AETHER_DATABASE_USER |
postgres | Postgres user used when AETHER_DATABASE_URL is unset. |
AETHER_DATABASE_PASSWORD |
postgres | Postgres password used when AETHER_DATABASE_URL is unset. |
AETHER_DATABASE_SSLMODE |
disable for local hosts, require otherwise | Postgres sslmode used when AETHER_DATABASE_URL is unset. |
AETHER_DATABASE_MAX_CONNECTIONS |
10 | Maximum Postgres connections for login and game services. |
Shared Redis
| Variable | Default | Notes |
|---|---|---|
AETHER_REDIS_URL |
built from split fields | Full Redis URL. Remote redis:// URLs are normalized to rediss:// unless TLS is disabled. |
AETHER_REDIS_HOST |
127.0.0.1 | Redis host used when AETHER_REDIS_URL is unset. |
AETHER_REDIS_PORT |
6379 | Redis port used when AETHER_REDIS_URL is unset. |
AETHER_REDIS_DB |
0 | Redis database index used when AETHER_REDIS_URL is unset. |
AETHER_REDIS_PASSWORD |
unset | Optional Redis password used when AETHER_REDIS_URL is unset. |
AETHER_REDIS_TLS |
false for local hosts, true otherwise | Controls whether generated Redis URLs use rediss://; also controls normalization of redis:// URLs. |
Control-plane client
| Variable | Default | Notes |
|---|---|---|
AETHER_CONTROL_BASE_URL |
http://127.0.0.1:7200 | Control-plane URL used by login and game services. |
AETHER_CONTROL_AUTH_SECRET |
dev-only-control-plane-shared-secret-change-me | Shared control-plane authentication secret used by login, game, and control-plane services. |
AETHER_CONTROL_ALLOW_INSECURE_HTTP |
true for localhost URLs, false otherwise | Allows login and game services to contact an HTTP control plane. |
Login server
| Variable | Default | Notes |
|---|---|---|
AETHER_LOGIN_BIND |
127.0.0.1:7000 | Socket address the login server listens on. |
AETHER_LOGIN_PUBLIC_HOST |
127.0.0.1 | Host advertised to clients for login service access. |
AETHER_LOGIN_PUBLIC_PORT |
7000 | Port advertised to clients for login service access. |
AETHER_LOGIN_UPNP_ENABLED |
true | Enables UPnP port mapping for login service local development. |
AETHER_LOGIN_UPNP_LEASE_DURATION_SECONDS |
3600 | UPnP lease duration for login service mappings. |
AETHER_LOGIN_GAME_HOST |
127.0.0.1 | Default game server host handed to clients. |
AETHER_LOGIN_GAME_PORT |
7100 | Default game server port handed to clients. |
AETHER_LOGIN_REALM |
Local Realm | Default realm name advertised by the login server. |
AETHER_LOGIN_REALM_REGION |
local-dev | Default realm region advertised by the login server. |
AETHER_LOGIN_START_ZONE |
starter_zone | Default zone assigned to newly created and seeded characters when no realm or event start override matches. |
AETHER_LOGIN_START_ENTRY_POINT |
unset | Optional scene entry point used to place new characters inside AETHER_LOGIN_START_ZONE. |
AETHER_LOGIN_START_TILE |
unset | Optional explicit x,y tile for new characters; takes precedence over start entry point and scene-center placement. |
AETHER_LOGIN_ARRIVAL_FLOW |
tutorial | Label for the default new-character arrival flow, such as tutorial or lobby. |
AETHER_LOGIN_START_EVENT |
unset | Optional active event id used to select a matching login character start override. |
AETHER_LOGIN_REALM_START_OVERRIDES |
[] | JSON array of realm start overrides with id, optional realm, and placement fields. |
AETHER_LOGIN_EVENT_START_OVERRIDES |
[] | JSON array of event start overrides with id, optional realm, and placement fields. |
AETHER_LOGIN_ACCESS_TOKEN_SIGNING_KEY |
dev-only-login-access-signing-key-change-me | Signing key for login access tokens. |
AETHER_LOGIN_REFRESH_TOKEN_SIGNING_KEY |
dev-only-login-refresh-signing-key-change-me | Signing key for login refresh tokens. |
AETHER_LOGIN_HANDOFF_TOKEN_SIGNING_KEY |
dev-only-login-handoff-signing-key-change-me | Signing key for login-to-game handoff tokens. |
AETHER_STANDALONE_ENABLE_DEV_LOGIN |
false | Enables startup seeding for a single development login account. Use only for local or controlled development stacks. |
AETHER_LOGIN_DEV_SEED_ACCOUNT_USERNAME |
dev | Username for the development account seeded when AETHER_STANDALONE_ENABLE_DEV_LOGIN is enabled. |
AETHER_LOGIN_DEV_SEED_ACCOUNT_PASSWORD |
dev | Password for the development account seeded when AETHER_STANDALONE_ENABLE_DEV_LOGIN is enabled. |
Game server
| Variable | Default | Notes |
|---|---|---|
AETHER_GAME_BIND |
127.0.0.1:7100 | Socket address the game server HTTP/control endpoint listens on. |
AETHER_GAME_REALTIME_BIND |
127.0.0.1:7101 | Socket address the realtime transport listens on. |
AETHER_GAME_QUIC_ENABLED |
true | Enables QUIC realtime transport. |
AETHER_GAME_QUIC_BIND |
127.0.0.1:7101 | Socket address the QUIC endpoint listens on. |
AETHER_GAME_PUBLIC_HOST |
127.0.0.1 | Host advertised to clients for game service access. |
AETHER_GAME_PUBLIC_PORT |
7100 | HTTP/control port advertised to clients for game service access. |
AETHER_GAME_REALTIME_PUBLIC_PORT |
7101 | Realtime port advertised to clients. |
AETHER_GAME_QUIC_PUBLIC_PORT |
7101 | QUIC port advertised to clients. |
AETHER_GAME_UPNP_ENABLED |
true | Enables UPnP port mapping for game service local development. |
AETHER_GAME_UPNP_LEASE_DURATION_SECONDS |
3600 | UPnP lease duration for game service mappings. |
AETHER_GAME_QUIC_CERT_PATH |
unset | Optional PEM certificate chain used by the QUIC server. |
AETHER_GAME_QUIC_KEY_PATH |
unset | Optional PEM private key used by the QUIC server. |
AETHER_QUIC_ALLOW_INSECURE |
true for local/debug development, false otherwise | Allows insecure QUIC certificate validation for development. Use false with trusted certificates outside local testing. |
AETHER_GAME_REALM |
Local Realm | Realm name advertised by the game server. |
AETHER_GAME_REALM_REGION |
local-dev | Realm region advertised by the game server. |
AETHER_GAME_ZONE |
starter_zone | Single default zone used when AETHER_GAME_ZONES is unset. |
AETHER_GAME_ZONES |
unset | Comma-separated zone list. The first entry becomes the primary zone. |
Game server realtime policy
| Variable | Default | Notes |
|---|---|---|
AETHER_GAME_REALTIME_SUPPORTED_PROTOCOLS |
empty | Comma-separated or service-defined protocol list advertised as supported. |
AETHER_GAME_REALTIME_DEPRECATED_PROTOCOLS |
empty | Comma-separated or service-defined protocol list advertised as deprecated. |
AETHER_GAME_REALTIME_DEPRECATION_STARTS_AT |
unset | Optional timestamp describing when realtime protocol deprecation begins. |
AETHER_GAME_REALTIME_REJECT_AFTER |
unset | Optional timestamp after which deprecated realtime protocols are rejected. |
AETHER_GAME_REALTIME_ALLOWED_CHANNELS |
empty | Comma-separated realtime channels allowed by the server. |
AETHER_GAME_REALTIME_BLOCKED_CHANNELS |
empty | Comma-separated realtime channels blocked by the server. |
AETHER_GAME_REALTIME_MIN_BUILD_NUMBER |
unset | Optional minimum client build number for realtime admission. |
AETHER_GAME_REALTIME_PREFERRED_COMPRESSIONS |
empty | Comma-separated realtime compression preferences. |
AETHER_GAME_REALTIME_BOOTSTRAP_COMPRESSION_MIN_BYTES |
1024 | Minimum bootstrap payload size before compression is preferred. |
AETHER_GAME_NETWORKING_POLICY_JSON |
current realtime networking policy | JSON override for the game server realtime networking policy. |
AETHER_GAME_MAX_CONCURRENT_PLAYERS |
unset | Positive value overrides the networking policy admission player limit. |
AETHER_GAME_MOVEMENT_AUTHORITY_MAX_INPUTS_PER_TICK |
2 | Maximum queued movement inputs drained per session during each authoritative zone tick. |
Game server drain
| Variable | Default | Notes |
|---|---|---|
AETHER_GAME_DRAINING |
false | Marks the game server as draining for admission and shutdown flows. |
AETHER_GAME_DRAIN_TIMEOUT_SECONDS |
30 | Grace period used by game server drain handling. |
Control plane
| Variable | Default | Notes |
|---|---|---|
AETHER_CONTROL_BIND |
127.0.0.1:7200 | Socket address the control plane listens on. |
Control agent
| Variable | Default | Notes |
|---|---|---|
AETHER_AGENT_BIND |
0.0.0.0:7300 | Socket address the control agent listens on. |
AETHER_AGENT_NAME |
COMPUTERNAME or local-agent |
Control agent name advertised to the control plane. |
AETHER_AGENT_WORKSPACE_ROOT |
. | Workspace root used by the control agent when managing processes. |
AETHER_AGENT_TOKEN |
unset | Optional control agent auth token. |
Network diagnostics
| Variable | Default | Notes |
|---|---|---|
AETHER_PACKET_DEBUG_CAPTURE_DIR |
unset | Optional directory where realtime packet debug captures are written as JSONL files. |