Overcast is alpha — behaviour and APIs may change between releases. Pin your version and read the changelog before upgrading.

overcast

LocalStack environment variables

Which LocalStack variables Overcast reads as aliases, which are recognised and do nothing, and what happens when an alias and its Overcast spelling disagree.

The full alias and ignored-variable tables behind Migrating from LocalStack. Carry your environment: block over unchanged; rename at your leisure, or never.

Aliases

Every variable below is read directly, with the Overcast spelling it maps to.

LocalStackOvercastStatus
LOCALSTACK_HOSTOVERCAST_HOSTNAMEAlias. Accepts the hostname[:port] form
HOSTNAME_EXTERNALOVERCAST_HOSTNAMEAlias, chained after LOCALSTACK_HOST
EDGE_PORTOVERCAST_PORTAlias
GATEWAY_LISTENOVERCAST_LISTEN + OVERCAST_PORTAlias. Accepts <ip>:<port>[,…], one port only
DATA_DIROVERCAST_DATA_DIRAlias. Counts as an explicit data dir for auto
DEFAULT_REGIONOVERCAST_DEFAULT_REGIONAlias
DEBUG=1OVERCAST_LOG_LEVEL=debugAlias. DEBUG=0 is a no-op
LS_LOGOVERCAST_LOG_LEVELAlias. trace-internaltrace, warningwarn
PERSISTENCE=1OVERCAST_STATE=persistentAlias. PERSISTENCE=0 is a no-op
ENFORCE_IAMOVERCAST_ENFORCE_IAMAlias
LAMBDA_RUNTIME_ENVIRONMENT_TIMEOUTLAMBDA_INIT_TIMEOUT_SECONDSAlias
LAMBDA_REMOVE_CONTAINERS=0LAMBDA_KEEP_CONTAINERS=trueAlias, inverted. Same default either way
DNS_ADDRESS=0OVERCAST_DNS=falseAlias. A bind address is a no-op
DOCKER_HOSTLAMBDA_DOCKER_SOCKETRead directly; LAMBDA_DOCKER_SOCKET still wins

The mappings came out of a full compatibility audit tracked in #1190.

Recognised and inert

Everything else LocalStack documents is never rejected, never silently missed, and named in a startup log line with the reason it does nothing — so you can drop it once you have seen it.

Recognised, no effectWhy
SERVICES, EAGER_SERVICE_LOADINGEvery service is always loaded
LOCALSTACK_AUTH_TOKEN, LOCALSTACK_API_KEY, ACTIVATE_PRONothing here is auth-gated
SQS_ENDPOINT_STRATEGYQueue URLs follow the caller — see SQS
S3_SKIP_SIGNATURE_VALIDATIONSignature checking is server-wide, not S3-only
IAM_SOFT_MODEPolicies are stored, never enforced, by default
DISABLE_CORS_CHECKS and the other CORS knobsCORS is already unconditionally permissive
LAMBDA_DOCKER_NETWORK, MAIN_DOCKER_NETWORKAdjacent concept, opposite default — see below
LAMBDA_KEEPALIVE_MSIdle-container lifetime is a fixed 15 minutes
LAMBDA_DOCKER_FLAGS, ECS_DOCKER_FLAGS, EC2_DOCKER_FLAGS, BATCH_DOCKER_FLAGS, LAMBDA_RUNTIME_EXECUTORNo flag pass-through; Docker is the only executor
SNAPSHOT_*Persistence here is incremental, not snapshot-based
PROVIDER_OVERRIDE_*One implementation per service
MAIN_CONTAINER_NAME, DISABLE_EVENTS, SKIP_SSL_CERT_DOWNLOAD, ALLOW_NONSTANDARD_REGIONS, ENABLE_CONFIG_UPDATESNothing to name, send, download, allow or update

When an alias and its Overcast name disagree

Setting both spellings to the same value is fine — that is the natural result of migrating a compose file line by line. Setting them to different values fails startup naming both, rather than silently preferring one. The same applies to a LOCALSTACK_HOST or GATEWAY_LISTEN port that disagrees with OVERCAST_PORT, and to a GATEWAY_LISTEN naming more than one distinct port: there is no single OVERCAST_PORT for it to map to, so Overcast refuses rather than dropping one of the binds.

The Docker images stay out of the way of that check. They bake exactly one OVERCAST_* default, OVERCAST_DATA_DIR=/data, and mark it as the image’s own rather than user intent — so DATA_DIR overrides it instead of conflicting with it, and a LocalStack environment: block carried over unchanged never trips a conflict against something the image itself shipped.

Why LAMBDA_DOCKER_NETWORK is inert rather than aliased

LAMBDA_DOCKER_NETWORK names a network Lambda containers join, defaulting to Docker’s built-in bridge; Overcast’s OVERCAST_NETWORK names the single shared network every container it starts joins so they can reach each other by name. Aliasing them would strip Lambda containers of that network the moment a migrated compose file’s LAMBDA_DOCKER_NETWORK: bridge carried over. Set OVERCAST_NETWORK directly if you deliberately want a non-default network.

MAIN_DOCKER_NETWORK is the same concept from LocalStack’s other side — the network LocalStack itself is on, which it also falls back to for Lambda — and is inert here for the same reason.