1 environment configuration reference
forgejo-actions edited this page 2026-07-13 19:45:35 +00:00

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.