Skip to main content

Environment Variables

Complete reference for environment variables that influence Strands Base Agent at runtime.

For an overview of how YAML and env vars interact, start with the Configuration guide.

Quick Start (Minimal Setup)​

Most settings live in config.yaml. Env vars are typically only needed for secrets:

# Required for AWS Bedrock access
AWS_DEFAULT_REGION=us-east-1
AWS_PROFILE=default

All other configuration has sensible defaults in config.yaml.

Override Convention​

When configuration is loaded from config.yaml (the recommended path), env vars override YAML values using the STRANDS__ prefix with double-underscore (__) as the nesting delimiter. Single underscores inside field names are preserved.

STRANDS__MODEL__PROVIDER=bedrock # overrides model.provider
STRANDS__MODEL__MODEL_ID=... # overrides model.model_id
STRANDS__SESSION_TYPE=file # overrides session_type (not session.type)

List fields accept comma-separated values:

STRANDS__TOOLS_MODULES=myapp.tools.search,myapp.tools.weather

Server​

VariableDefaultDescription
HOST0.0.0.0Server bind address
PORT8000Server port
LOG_LEVELDEBUGApplication log level (read directly, not via the config loader)

AWS / Bedrock​

VariableDefaultDescription
AWS_PROFILEdefaultAWS profile for Bedrock access
AWS_DEFAULT_REGIONus-east-1AWS region
AWS_READ_TIMEOUT900Bedrock read timeout (seconds)
AWS_CONNECT_TIMEOUT60Bedrock connect timeout (seconds)

Model​

YAML fieldEnv overrideDefault
model.providerSTRANDS__MODEL__PROVIDERbedrock
model.model_idSTRANDS__MODEL__MODEL_IDus.anthropic.claude-haiku-4-5-20251001-v1:0
model.temperatureSTRANDS__MODEL__TEMPERATURE0.3
model.streamingSTRANDS__MODEL__STREAMINGtrue
model.max_tokensSTRANDS__MODEL__MAX_TOKENS—
model.top_pSTRANDS__MODEL__TOP_P—
model.ollama_urlSTRANDS__MODEL__OLLAMA_URL—
model.llamacpp_urlSTRANDS__MODEL__LLAMACPP_URL—

To point at a local Ollama or llama.cpp instance, set model.ollama_url / model.llamacpp_url in config.yaml (or the STRANDS__MODEL__OLLAMA_URL / STRANDS__MODEL__LLAMACPP_URL overrides for environment-specific values). The bare OLLAMA_URL / LLAMACPP_URL vars shipped in env.template only apply on the from_env() path (defaults http://host.docker.internal:11434 and http://localhost:8080); see How env vars work.

Agent Identity​

YAML fieldEnv overrideDefault
agent_nameSTRANDS__AGENT_NAMEstrands-base-agent
agent_descriptionSTRANDS__AGENT_DESCRIPTION(see config.yaml)
agent_versionSTRANDS__AGENT_VERSION1.0
agent_portSTRANDS__AGENT_PORT—
system_promptSTRANDS__SYSTEM_PROMPT(see config.yaml)

Tools​

YAML fieldEnv overrideDefault
tools_modulesSTRANDS__TOOLS_MODULES—
tools_filesSTRANDS__TOOLS_FILES—

Conversation & Memory​

YAML fieldEnv overrideDefault
max_conversation_lengthSTRANDS__MAX_CONVERSATION_LENGTH10
conversation_window_sizeSTRANDS__CONVERSATION_WINDOW_SIZE100
conversation_truncate_resultsSTRANDS__CONVERSATION_TRUNCATE_RESULTSfalse
enable_memorySTRANDS__ENABLE_MEMORYfalse
knowledge_base_idSTRANDS__KNOWLEDGE_BASE_ID—
agent_state_initial_valuesSTRANDS__AGENT_STATE_INITIAL_VALUES{}

Session Management​

YAML fieldEnv overrideDefault
session_idSTRANDS__SESSION_ID—
session_typeSTRANDS__SESSION_TYPE—
session_storage_dirSTRANDS__SESSION_STORAGE_DIR—
session_s3_bucketSTRANDS__SESSION_S3_BUCKET—
session_s3_prefixSTRANDS__SESSION_S3_PREFIX—

Guardrails​

Guardrails live under model.guardrails in config.yaml. Setting guardrail_id enables them.

YAML fieldEnv overrideDefault
model.guardrails.guardrail_idSTRANDS__MODEL__GUARDRAILS__GUARDRAIL_ID—
model.guardrails.guardrail_versionSTRANDS__MODEL__GUARDRAILS__GUARDRAIL_VERSION""
model.guardrails.guardrail_traceSTRANDS__MODEL__GUARDRAILS__GUARDRAIL_TRACEenabled

The single-underscore form (STRANDS_GUARDRAIL_ID, STRANDS_GUARDRAIL_VERSION, STRANDS_GUARDRAIL_TRACE) only applies on the from_env() path — see How env vars work.

See the Guardrails guide for setup steps.

MCP and A2A​

These are structured fields. YAML is strongly recommended over env vars.

# config.yaml
mcp_servers:
- name: github
url: https://api.githubcopilot.com/mcp/
headers:
Authorization: "Bearer ${GITHUB_PAT}"

a2a_servers:
- name: finance-agent
url: https://finance-agent.internal/api/

See the MCP servers guide for details.

Observability​

YAML fieldEnv overrideDefault
observability_enabledSTRANDS__OBSERVABILITY_ENABLEDfalse

The single-underscore form (STRANDS_O11Y_ENABLED) only applies on the from_env() path — see How env vars work.

OTLP exporter settings are read directly by the OpenTelemetry SDK, not by the config loader:

VariableDefaultDescription
OTEL_EXPORTER_OTLP_ENDPOINT—OTLP endpoint URL
OTEL_EXPORTER_OTLP_HEADERS—OTLP auth headers
OTEL_SERVICE_NAMEstrands-base-agentService name

CORS​

Set on the FastAPI middleware via foundry-agent-fastapi:

VariableDefaultDescription
STRANDS_CORS_ORIGINSlocalhost dev portsComma-separated allowed origins
STRANDS_CORS_ALLOW_CREDENTIALSfalseAllow credentials
STRANDS_CORS_ALLOW_METHODSGET,POST,PUT,DELETE,OPTIONS,HEADAllowed HTTP methods
STRANDS_CORS_ALLOW_HEADERSAccept,Content-Type,Authorization,...Allowed headers

Query Processing​

YAML fieldEnv overrideDefault
max_query_lengthSTRANDS__MAX_QUERY_LENGTH2000
default_similarity_thresholdSTRANDS__DEFAULT_SIMILARITY_THRESHOLD0.7
max_response_time_msSTRANDS__MAX_RESPONSE_TIME_MS30000

Miscellaneous​

VariableDefaultDescription
STRANDS_AGENT_PUBLIC_URLhttp://{agent_name}:{port}Public URL for the A2A agent card
STRANDS_IGNORE_DOTENVfalseSkip loading .env at startup

Security Note​

Secrets (API keys, tokens, AWS credentials) should stay in .env files and never in config.yaml.