initializdocs
DeveloperForge runtimeReference

Environment Variables

All environment variables supported by Forge.

Environment Variables

VariableDescription
FORGE_MODEL_PROVIDEROverride LLM provider
FORGE_MODEL_FALLBACKSFallback chain (e.g., "anthropic:claude-sonnet-4,gemini")
FORGE_MEMORY_PERSISTENCESet false to disable session persistence
FORGE_MEMORY_LONG_TERMSet true to enable long-term memory
FORGE_COMPRESSIONSet true/false to override compression.enabled (reversible context compression); the --compression flag overrides both
FORGE_EMBEDDING_PROVIDEROverride embedding provider
FORGE_BROWSER_BINAbsolute path to the Chromium binary for the browser tools (overrides discovery)
FORGE_BROWSER_HEADLESSSet false or 0 to run the browser headful for local debugging (default headless)
OPENAI_API_KEYOpenAI API key
OPENAI_ORG_IDOpenAI Organization ID (enterprise); overrides organization_id in YAML
ANTHROPIC_API_KEYAnthropic API key
GEMINI_API_KEYGoogle Gemini API key
TAVILY_API_KEYTavily web search API key
PERPLEXITY_API_KEYPerplexity web search API key
WEB_SEARCH_PROVIDERForce web search provider (tavily or perplexity)
OPENAI_BASE_URLOverride OpenAI base URL
ANTHROPIC_BASE_URLOverride Anthropic base URL
OLLAMA_BASE_URLOverride Ollama base URL (default: http://localhost:11434)
FORGE_CORS_ORIGINSComma-separated CORS allowed origins for A2A server
FORGE_AUTH_URLExternal auth provider URL for token validation
FORGE_AUTH_ORG_IDOrganization ID sent to external auth provider
FORGE_AGENT_IDAgent identifier for audit entity identity (falls back to agent_id in YAML)
FORGE_ORG_IDOrganization identifier for tenancy stamping / audit
FORGE_PASSPHRASEPassphrase for encrypted secrets file

Audit

Environment knobs for the audit pipeline. See Audit logging and Audit signing for the full model.

Payload capture (FWS-8)

By default audit events are metadata only (sizes, counts, durations — no prompts, completions, or raw tool I/O). These vars opt into raw payloads field by field. forge.yaml's audit.capture block overrides these; the built-in default is all-off with redaction on. See Payload capture.

VariableTypeDefaultDescription
FORGE_AUDIT_CAPTURE_TOOL_ARGSboolfalseCapture raw tool input on tool_exec (phase=start)
FORGE_AUDIT_CAPTURE_TOOL_RESULTboolfalseCapture raw tool output on tool_exec (phase=end)
FORGE_AUDIT_CAPTURE_LLM_MESSAGESboolfalseCapture the chat-messages array on llm_call
FORGE_AUDIT_CAPTURE_LLM_RESPONSEboolfalseCapture the model completion text on llm_call
FORGE_AUDIT_CAPTURE_REDACTbooltrueRun the vendor-secret regex scrub over captured fields before truncation. Turn off only when a downstream sink scrubs
FORGE_AUDIT_CAPTURE_MAX_BYTESint16384Single-knob per-field byte cap applied to every captured field

Captured payloads can carry prompts, tool I/O, and PII even with redaction on — route the audit stream to a store appropriate to that sensitivity, and prefer enabling capture per-session for debugging rather than always-on.

Signing (R6)

Opt-in Ed25519 signing of each audit event. When the key is unset the stream is emitted unsigned. See Audit signing.

VariableDefaultDescription
FORGE_AUDIT_SIGNING_KEY_B64(unset)Ed25519 private key as base64-encoded PKCS#8 DER or an inline PEM string. Setting it turns signing on
FORGE_AUDIT_SIGNING_KIDforge-audit-v1Key id stamped as kid on signed events and advertised at /.well-known/forge-audit-keys

Export sinks (FWS-7)

Add a second sink alongside the always-on stderr safety net. If both a socket and an HTTP endpoint are set, the socket wins.

VariableDefaultDescription
FORGE_AUDIT_SOCKET(unset)Unix socket path the sidecar listens on; enables the socket export sink
FORGE_AUDIT_HTTP_ENDPOINT(unset)HTTP endpoint for the export sink (used when FORGE_AUDIT_SOCKET is unset)
FORGE_AUDIT_WRITE_TIMEOUT(impl default)Go duration (e.g. 2s) bounding each sink write; applies to both socket and HTTP sinks

OpenTelemetry tracing (OTel v1, #108)

Forge honors the standard OpenTelemetry SDK environment variables for the observability.tracing subsystem. They sit between forge.yaml and --otel-* CLI flags in the precedence stack — env overrides yaml, flags override env. A set-but-empty env var does not wipe a non-empty yaml value (absence-of-value is "no override").

See Observability — Tracing for the full reference.

VariableMaps to
OTEL_SDK_DISABLEDinverted → observability.tracing.enabled
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTendpoint (preferred — signal-specific)
OTEL_EXPORTER_OTLP_ENDPOINTendpoint (generic fallback)
OTEL_EXPORTER_OTLP_PROTOCOLprotocol (http/protobuf or grpc)
OTEL_EXPORTER_OTLP_HEADERSheaders (merged with yaml; env wins on key collision)
OTEL_EXPORTER_OTLP_TIMEOUTtimeout (milliseconds)
OTEL_SERVICE_NAMEservice_name
OTEL_RESOURCE_ATTRIBUTESresource_attrs (merged with yaml)
OTEL_TRACES_SAMPLERsampler (standard names)
OTEL_TRACES_SAMPLER_ARGsampler_ratio

On this page