AIRLOCK_HOST=127.0.0.1 AIRLOCK_PORT=8000 AIRLOCK_PUBLIC_BASE_URL=http://127.0.0.1:8000 AIRLOCK_CASE_ROOT=data/cases AIRLOCK_INSECURE_DEVELOPMENT=false AIRLOCK_CONTROL_BEARER_TOKEN=replace-with-a-random-control-token AIRLOCK_CASE_PROXY_BEARER_TOKEN=replace-with-a-random-runtime-token AIRLOCK_STATE_INTEGRITY_KEY=replace-with-at-least-32-random-bytes AIRLOCK_CONTROL_ALLOWED_HOSTS=127.0.0.1:8000,localhost:8000 AIRLOCK_CONTROL_ALLOWED_ORIGINS=http://127.0.0.1:8000,http://localhost:8000 AIRLOCK_ALLOWED_TARGET_HOSTNAMES=fixture.example AIRLOCK_ALLOW_LOCAL_TARGETS=false AIRLOCK_MOUNT_OWNED_FIXTURES=false AIRLOCK_FIXTURE_BEARER_TOKEN=replace-with-a-random-fixture-token AIRLOCK_FIXTURE_ROOT=data/fixtures AIRLOCK_MAX_CONTROL_REQUEST_BYTES=1048576 AIRLOCK_MAX_PROXY_REQUEST_BYTES=1048576 AIRLOCK_MAX_PROXY_RESPONSE_BYTES=4194304 AIRLOCK_MAX_AUDIT_RESPONSE_BYTES=4194304 AIRLOCK_AUDIT_OPERATION_TIMEOUT_SECONDS=60 AIRLOCK_AUDIT_TOTAL_TIMEOUT_SECONDS=240 AIRLOCK_PROBE_PLANNING_TIMEOUT_SECONDS=5 AIRLOCK_PROBE_PLANNING_MEMORY_BYTES=536870912 AIRLOCK_MAX_INVENTORY_PAGES=64 AIRLOCK_MAX_INVENTORY_TOOLS=512 AIRLOCK_MAX_CATALOG_BYTES=2097152 AIRLOCK_MAX_RUNTIME_EVENTS=2000 AIRLOCK_PROXY_READ_TIMEOUT_SECONDS=60 AIRLOCK_MAX_RUNTIME_STREAM_SECONDS=300 # Optional static header auth, scoped to these exact target URLs: # AIRLOCK_TARGET_AUTHORIZATION=Bearer replace-with-the-target-token # AIRLOCK_AUTHENTICATED_TARGET_URLS=https://fixture.example/mcp # Operator interface at /ui/ plus its /api read views. # Defaults to on in development and off in production. It has no authentication # of its own, so keep it on a loopback interface. # AIRLOCK_ENABLE_OPERATOR_UI=true