Environment Variables
The SignalWire Agents SDK reads environment variables for server configuration, authentication, SSL, logging, RELAY/REST client credentials, and serverless platform detection. Environment variables are overridden by constructor parameters but take precedence over config file values.
Use python-dotenv to load variables from a .env file during development:
Server
PORT
Server port. Used when no port argument is passed to the constructor.
Authentication
SWML_BASIC_AUTH_USER
Username for HTTP Basic Authentication on all agent webhook endpoints.
If not set, get_basic_auth() defaults the username to "signalwire".
SWML_BASIC_AUTH_PASSWORD
Password for HTTP Basic Authentication. If not set, a random password is auto-generated on each startup and printed to the console.
In production, always set SWML_BASIC_AUTH_PASSWORD explicitly. Auto-generated
passwords change on every restart, which will break SignalWire webhook callbacks
until you update the credentials in your SignalWire dashboard.
SSL / TLS
SWML_SSL_ENABLED
Enable HTTPS. Accepts "true", "1", or "yes".
SWML_SSL_CERT_PATH
Path to the SSL certificate file (.pem or .crt). Required when
SWML_SSL_ENABLED is set.
SWML_SSL_KEY_PATH
Path to the SSL private key file (.key). Required when
SWML_SSL_ENABLED is set.
SWML_DOMAIN
Domain name for SSL certificates and URL generation.
SWML_SSL_VERIFY_MODE
SSL certificate verification mode.
Proxy
SWML_PROXY_URL_BASE
Base URL when running behind a reverse proxy (e.g., https://my-agent.example.com).
The agent uses this URL to generate correct webhook URLs in SWML documents.
APP_URL
Fallback for SWML_PROXY_URL_BASE when that variable is not set.
SWML_PROXY_DEBUG
Enable proxy request debug logging.
Setting SWML_PROXY_URL_BASE (or APP_URL) overrides SSL configuration and port
settings for webhook URL generation.
Schema Validation
SWML_SKIP_SCHEMA_VALIDATION
Disable SWML document schema validation. Accepts "1", "true", or "yes".
Useful for performance in production when you trust your SWML output.
Security
SWML_ALLOWED_HOSTS
Comma-separated list of allowed hosts. Set to specific domain(s) in production
(e.g., "agent.example.com,api.example.com").
SWML_CORS_ORIGINS
Comma-separated list of allowed CORS origins. Restrict to trusted origins in production.
SWML_MAX_REQUEST_SIZE
Maximum request body size in bytes. Default is 10 MB.
SWML_RATE_LIMIT
Rate limit in requests per minute.
SWML_REQUEST_TIMEOUT
Request timeout in seconds.
SWML_USE_HSTS
Enable HTTP Strict Transport Security headers when serving over HTTPS.
SWML_HSTS_MAX_AGE
HSTS max-age directive in seconds. Default is 1 year.
Logging
SIGNALWIRE_LOG_MODE
Logging mode.
"auto"— automatic detection based on environment"off"— disable all logging"stderr"— log to stderr"default"— standard logging output
SIGNALWIRE_LOG_LEVEL
Log level.
"debug"— verbose output for development and troubleshooting"info"— standard operational messages"warning"— potential issues that do not prevent operation"error"— failures that affect a specific operation"critical"— severe failures that may prevent the service from running
SIGNALWIRE_LOG_FORMAT
Log output format.
"console"— colored human-readable output (default)"json"— structured JSON log lines for log aggregation systems
Skills
SIGNALWIRE_SKILL_PATHS
Colon-separated paths to directories containing custom skills. The skill registry scans these paths in addition to the built-in skills directory.
RELAY and REST Client
These variables are shared between the RELAY WebSocket client and the REST HTTP client.
SIGNALWIRE_PROJECT_ID
SignalWire project ID for authentication.
SIGNALWIRE_API_TOKEN
API token for authentication.
SIGNALWIRE_JWT_TOKEN
JWT token for RELAY authentication. Alternative to project ID + API token.
SIGNALWIRE_SPACE
Space hostname used for RELAY WebSocket connections and as the REST API base URL.
RELAY_MAX_ACTIVE_CALLS
Maximum concurrent calls per RelayClient instance.
RELAY_MAX_CONNECTIONS
Maximum concurrent RelayClient connections per process.
Serverless Platforms
The SDK auto-detects the execution environment from platform-specific variables. You typically do not set these manually — they are provided by the platform runtime.
AWS Lambda
AWS_LAMBDA_FUNCTION_NAME
Lambda function name. Used for URL construction and logging.
AWS_LAMBDA_FUNCTION_URL
Lambda function URL. If not set, constructed from region and function name.
AWS_REGION
AWS region for Lambda execution.
LAMBDA_TASK_ROOT
Lambda environment detection variable. Set automatically by the Lambda runtime.
Google Cloud Functions
GOOGLE_CLOUD_PROJECT
Google Cloud project ID.
GCP_PROJECT
Alternative to GOOGLE_CLOUD_PROJECT.
GOOGLE_CLOUD_REGION
Google Cloud region.
FUNCTION_TARGET
Cloud Function entry point name.
K_SERVICE
Knative/Cloud Run service name.
Azure Functions
AZURE_FUNCTIONS_ENVIRONMENT
Azure Functions environment detection variable.
WEBSITE_SITE_NAME
Azure App Service site name. Used to construct function URLs.
AZURE_FUNCTION_NAME
Azure Function name.
CGI
GATEWAY_INTERFACE
CGI environment detection variable.
HTTP_HOST
HTTP Host header value. Falls back to SERVER_NAME.
SERVER_NAME
Server hostname.
SCRIPT_NAME
CGI script path.