You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This document defines the normative configuration standards for production-grade xg2g deployments.
We structure configuration into three distinct tiers.
Philosophy
"Operator-Grade 2026" means:
No implicit magic (Fail-Closed).
Deterministic resource management.
Traceability by default.
Secure, scoped access.
"Whatever is not explicitly set is considered suspicious."
Configuration Options (Registry-Generated)
Configuration options are generated from the registry to prevent drift. Any manual edits
inside the generated block are overwritten by cmd/configgen.
Legacy YAML keys under openWebIF.* are rejected at load time.
Use canonical enigma2.* keys; defaults and env bindings are listed under enigma2.* below.
Generated artifacts:
config.generated.example.yaml is the canonical defaults projection (fully generated).
config.example.yaml is a curated operator tutorial and may be selective.
Bootstrap Security Note
Live playback startup also requires XG2G_DECISION_SECRET in the process
environment. This is the canonical environment variable for
api.playbackDecisionSecret and is enforced during server wiring.
Registry Options (Generated)
This section is generated from internal/config/registry.go. Do not edit by hand.
api
Path
Env
Default
Status
Profile
api.allowedOrigins
XG2G_ALLOWED_ORIGINS
-
Active
Advanced
api.disableLegacyTokenSources
XG2G_API_DISABLE_LEGACY_TOKEN_SOURCES
true
Active
Advanced
api.listenAddr
XG2G_LISTEN
127.0.0.1:8088
Active
Simple
api.playbackDecisionKeyId
XG2G_PLAYBACK_DECISION_KID
-
Active
Advanced
api.playbackDecisionPreviousKeys
XG2G_PLAYBACK_DECISION_PREVIOUS_KEYS
-
Active
Advanced
api.playbackDecisionRotationWindow
XG2G_PLAYBACK_DECISION_ROTATION_WINDOW
10m
Active
Advanced
api.playbackDecisionSecret
XG2G_DECISION_SECRET
-
Active
Advanced
api.token
XG2G_API_TOKEN
-
Active
Simple
api.tokenScopes
XG2G_API_TOKEN_SCOPES
-
Active
Advanced
api.tokens
XG2G_API_TOKENS
-
Active
Advanced
breaker
Path
Env
Default
Status
Profile
breaker.consecutive_threshold
-
5
Active
Advanced
breaker.failures_threshold
-
7
Active
Advanced
breaker.min_attempts
-
10
Active
Advanced
breaker.window
-
5m
Active
Advanced
connectivity
Path
Env
Default
Status
Profile
connectivity.allowLocalHTTP
XG2G_CONNECTIVITY_ALLOW_LOCAL_HTTP
false
Active
Advanced
connectivity.profile
XG2G_CONNECTIVITY_PROFILE
lan
Active
Advanced
connectivity.publishedEndpoints
XG2G_PUBLISHED_ENDPOINTS
[]
Active
Advanced
engine
Path
Env
Default
Status
Profile
engine.cpuThresholdScale
XG2G_ENGINE_CPU_SCALE
1.5
Active
Advanced
engine.enabled
XG2G_ENGINE_ENABLED
true
Active
Advanced
engine.gpuLimit
XG2G_ENGINE_GPU_LIMIT
8
Active
Advanced
engine.idleTimeout
XG2G_ENGINE_IDLE_TIMEOUT
5m
Active
Advanced
engine.maxPool
XG2G_ENGINE_MAX_POOL
2
Active
Advanced
engine.mode
XG2G_ENGINE_MODE
standard
Active
Advanced
engine.tunerSlots
XG2G_TUNER_SLOTS
-
Active
Advanced
enigma2
Legacy YAML section openWebIF.* is rejected at load time; use enigma2.*.
For reverse-proxy, tunnel, VPS, and mixed LAN/public installs, publish the
backend-truth endpoints explicitly instead of relying on client-side guessing:
Clients receive this ordered list from the backend during pairing/device session
flows and the WebUI can reuse it for Android launch setup.
connectivity.profile is a policy bundle, not a second source of truth:
lan: local-only or same-network setup
reverse_proxy: public HTTPS via Caddy/Nginx/Traefik or similar
tunnel: public HTTPS via Cloudflare Tunnel or similar
vps: direct public TLS on xg2g itself
Use GET /api/v3/system/connectivity after rollout to verify the effective
profile, blocking findings, selected public/native endpoints, and current
forwarded-header trust evaluation.