Caution
⚠ Provisional - pending finalization. The values below are accurate for the current
0.1.x chart and operator, but the final flag set, names, and defaults are being settled
alongside the licensing and run-mode work in a later release. Treat this as a working
reference, not a frozen contract. Once the final flags land, this section will be promoted
to stable and the provisional marker removed.
Every Helm value maps to an environment variable on the operator container (set by the
chart’s Deployment template). You normally configure via Helm values; the env column is
useful for local runs and for understanding the pod spec.
Helm value Env var Default Meaning watchNamespacesSTEPSCALE_WATCH_NAMESPACES"" (all)Comma-separated namespaces to watch. Empty watches all namespaces. Example: prod,api. intervalSecondsSTEPSCALE_INTERVAL_SECONDS300Seconds between reconcile ticks. Also drives the leader-lease duration (3× this value). replicaCount- 1Operator replicas. 2+ is safe with leader election (only the leader mutates).
Helm value Env var Default Meaning metrics.prometheusUrlSTEPSCALE_PROMETHEUS_URL""Prometheus base URL. Set it for real history backfill; empty falls back to slow HPA-status accumulation. Example: http://prometheus.monitoring.svc:9090. metrics.windowDaysSTEPSCALE_METRICS_WINDOW_DAYS14Days of history to backfill per workload from Prometheus. metrics.stepSecondsSTEPSCALE_METRICS_STEP_SECONDS300Sampling step (seconds) for Prometheus history queries. metrics.promqlCpuSTEPSCALE_PROMQL_CPU(built-in) PromQL override for CPU utilization. Supports {ns} / {deploy} placeholders. Defaults to a kube-state-metrics + cAdvisor query. metrics.promqlReplicasSTEPSCALE_PROMQL_REPLICAS(built-in) PromQL override for replica count. metrics.promqlQueueSTEPSCALE_PROMQL_QUEUE(built-in) PromQL override for queue depth (queue-based workloads).
Helm value Env var Default Meaning safety.probationWindowMinutesSTEPSCALE_PROBATION_WINDOW_MINUTES45Minutes an applied change stays on probation before the verify pass judges its health. Clamped to a minimum of 1. safety.rollbackEnabledSTEPSCALE_ROLLBACK_ENABLEDtrueAuto-revert a probationary change when health degrades. When false, a degraded change is held in degraded for re-judgement instead of reverted. safety.healthCpuMarginSTEPSCALE_HEALTH_CPU_MARGIN0.15Headroom over the target CPU fraction tolerated before a change is judged degraded.
Helm value Env var Default Meaning leaderElection.enabledSTEPSCALE_ENABLE_LEADER_ELECTIONtrueElect a single leader so replicaCount: 2+ never double-applies; only the leader mutates. leaderElection.leaseNameSTEPSCALE_LEASE_NAMEstepscale-autoscaler-leaderName of the coordination.k8s.io Lease. leaderElection.leaseNamespaceSTEPSCALE_LEASE_NAMESPACE"" (release ns)Namespace for the Lease; empty uses the operator’s own namespace.
Off by default. Requires Prometheus history and a genuinely periodic workload; flat or random
workloads are left reactive.
Helm value Env var Default Meaning forecasting.enabledSTEPSCALE_ENABLE_FORECASTINGfalseForecast recurring peaks and pre-scale the floor ahead of them. forecasting.minHistoryDaysSTEPSCALE_FORECAST_MIN_HISTORY_DAYS14Minimum days of history before a forecast is attempted (needs ≥ 2 weekly cycles). forecasting.binMinutesSTEPSCALE_FORECAST_BIN_MINUTES60Seasonal grid bin size in minutes (168 hourly bins per week by default). forecasting.quantileSTEPSCALE_FORECAST_QUANTILE0.95Quantile of per-bin demand used for the forecast (safety headroom). Clamped to [0, 1]. forecasting.periodicityThresholdSTEPSCALE_PERIODICITY_THRESHOLD0.3Minimum lag-24h/7d autocorrelation for a workload to count as periodic. forecasting.prescaleLeadMinutesSTEPSCALE_PRESCALE_LEAD_MINUTES10Minutes of head start to raise the floor before each forecasted peak.
Helm value Env var Default Meaning llm.providerSTEPSCALE_LLM_PROVIDERopenaiopenai, anthropic, or none (deterministic rules-only).llm.modelSTEPSCALE_LLM_MODELgpt-4o-miniModel name passed to the provider. llm.apiKeyOPENAI_API_KEY (see note) ""Your API key. Setting it makes the chart create a Secret. llm.existingSecret- ""Name of an existing Secret holding the key under apiKey, used instead of llm.apiKey.
See Licensing for the model and lifecycle. Values:
Helm value Env var Default Meaning license.publicKeySTEPSCALE_LICENSE_PUBKEY""base64-encoded 32-byte ed25519 public key that verifies the license offline. Required to apply. license.payload(via Secret) ""The license JSON payload. Setting it (with signature) makes the chart create the license Secret. license.signature(via Secret) ""The detached ed25519 signature for the payload. license.existingSecretSTEPSCALE_LICENSE_SECRET (derived)""Name of an existing Secret holding license + signature keys. license.gracePeriodDaysSTEPSCALE_LICENSE_GRACE_DAYS14Days past expiry to keep applying before degrading.
Helm value Default Meaning image.repositoryghcr.io/stepscale/stepscale-autoscalerImage repository (override for a mirrored registry). image.tag"" (chart appVersion)Image tag. image.pullPolicyIfNotPresentImage pull policy. serviceAccount.namestepscale-autoscalerService account the operator runs as. resources.requestscpu: 50m, memory: 64MiResource requests. resources.limitscpu: 250m, memory: 128MiResource limits.
A dedicated recommend-only flag is part of the run-mode work being finalized in a later
release. Today, to run the operator as a pure advisor, either omit the license (the operator
then runs analysis-only and will not apply) or simply never approve recommendations. See
Operating §7.4 for current run-mode guidance.