Skip to main content

Configuration

Configure Gyre through Helm values and environment variables.

Overview

Production deployments are expected to run in-cluster via Helm/GitOps. Out-of-cluster configuration is mainly for local development/testing.

Recommended order of precedence:

  1. Helm values (charts/gyre/values.yaml)
  2. Environment variables (directly, or injected by Helm)

Helm Configuration

Base Example

replicaCount: 1

image:
repository: ghcr.io/entropy0120/gyre
tag: ''
pullPolicy: IfNotPresent

service:
type: ClusterIP
port: 80

serviceAccount:
create: true
# Default keeps ServiceAccount token mounted for in-cluster auth.
automount: true

ingress:
enabled: false

persistence:
enabled: true
accessMode: ReadWriteOnce
size: 1Gi

Authentication

auth:
localLoginEnabled: true
allowSignup: false
domainAllowlist: []
providers: []
providersExistingSecret: ''

auth.providers entries support OAuth/OIDC providers (for example GitHub, Google, GitLab, and generic OIDC/OAuth2). Provider objects are metadata-only and must not include clientSecret.

When auth.providers is non-empty, auth.providersExistingSecret is required. Provider client secrets are read from secret keys named:

  • PROVIDER_<SANITIZED_PROVIDER_NAME>_CLIENT_SECRET

Runtime / Performance

config:
pollIntervalMs: 5000
heartbeatIntervalMs: 30000
dashboardCacheTtlMs: 30000
settlingPeriodMs: 30000
bodySizeLimit: 500M
additionalConfig: {}

config.additionalConfig is passed through as extra environment variables. config.additionalConfig.BODY_SIZE_LIMIT is reserved and rejected by the chart; use config.bodySizeLimit.

Encryption and Secrets

encryption:
existingSecret: gyre-encryption

The referenced secret must provide:

  • GYRE_ENCRYPTION_KEY
  • AUTH_ENCRYPTION_KEY
  • BACKUP_ENCRYPTION_KEY
  • BETTER_AUTH_SECRET

Environment Variables

Core Runtime Variables

VariableDescriptionDefault / Notes
DATABASE_URLSQLite database path/data/gyre.db in-cluster, ./data/gyre.db local fallback
GYRE_ENCRYPTION_KEYEncryption key for stored kubeconfigs64-char hex (32 bytes), required in production
AUTH_ENCRYPTION_KEYEncryption key for auth/OAuth secrets64-char hex (32 bytes), required in production
BETTER_AUTH_URLPublic app origin used for auth callback URLshttp://localhost:5173 in .env.example
BETTER_AUTH_SECRETBetter Auth session signing secretRequired in production; must be distinct from encryption keys
ADMIN_PASSWORDOptional initial admin passwordIf unset, Gyre auto-generates; weak values fail in production/in-cluster
BACKUP_ENCRYPTION_KEYBackup-file encryption key64-char hex; required in production, optional in development
NODE_ENVRuntime modedevelopment / production
BODY_SIZE_LIMITAdapter-level max request body sizeSet to >= 500M for kubeconfig/backup uploads

Tunable Constants

VariableDescriptionDefault
GYRE_POLL_INTERVAL_MSKubernetes polling interval5000
GYRE_HEARTBEAT_INTERVAL_MSSSE heartbeat interval30000
GYRE_DASHBOARD_CACHE_TTL_MSDashboard cache TTL30000
GYRE_SETTLING_PERIOD_MSSettling period for ADDED events30000
GYRE_SETTINGS_CACHE_TTL_MSSettings cache TTL30000
GYRE_MAX_LOCAL_BACKUPSMax local backups retained10
GYRE_METRICS_TOKENBearer token for /metricsRequired in production; optional in development
GYRE_SSE_MAX_CONNECTIONS_PER_SESSIONMax SSE connections per session3
GYRE_SSE_MAX_CONNECTIONS_PER_USERMax SSE connections per user5
GYRE_SSE_CONNECTION_TIMEOUT_MSSSE connection lifetime (0 disables timeout)0

Auth Settings Overrides

VariableDescription
GYRE_AUTH_LOCAL_LOGIN_ENABLEDEnable/disable local username/password login
GYRE_AUTH_ALLOW_SIGNUPAllow OAuth auto-signup
GYRE_AUTH_DOMAIN_ALLOWLISTJSON array of allowed signup domains
GYRE_AUTH_PROVIDERSJSON array used to seed auth providers (no clientSecret field)
GYRE_AUTH_PROVIDER_<SANITIZED_PROVIDER_NAME>_CLIENT_SECRETPer-provider secret input for seeded providers

Helm-to-Env Mapping

Helm values map directly to runtime env vars:

Helm keyEnvironment variable
config.pollIntervalMsGYRE_POLL_INTERVAL_MS
config.heartbeatIntervalMsGYRE_HEARTBEAT_INTERVAL_MS
config.dashboardCacheTtlMsGYRE_DASHBOARD_CACHE_TTL_MS
config.settlingPeriodMsGYRE_SETTLING_PERIOD_MS
config.bodySizeLimitBODY_SIZE_LIMIT
auth.localLoginEnabledGYRE_AUTH_LOCAL_LOGIN_ENABLED
auth.allowSignupGYRE_AUTH_ALLOW_SIGNUP
auth.domainAllowlistGYRE_AUTH_DOMAIN_ALLOWLIST
auth.providersGYRE_AUTH_PROVIDERS

Applying Configuration

helm upgrade gyre oci://ghcr.io/entropy0120/charts/gyre \
--namespace flux-system \
-f values.yaml