# Required environment variables - copy to .env and fill in values # Qwen Cloud / Model Studio (planner + jury). Use a Model Studio key, NOT the coding-plan key. QWEN_API_KEY= QWEN_BASE_URL=https://dashscope-intl.aliyuncs.com/compatible-mode/v1 QWEN_PLANNER_MODEL=qwen3.7-max # Phase 2 disagreement jury (heterogeneous vendors via the same endpoint). JSON list. JURY_MODELS=["qwen3.7-plus","deepseek-v4-pro","glm-5.1"] JURY_DISAGREEMENT_THRESHOLD=0.5 # Phase 3 resource memory: max age (seconds) a re-verified receipt stays valid MEMORY_MAX_RECEIPT_AGE_SECONDS=3600 # Self-hosted MCP servers (two instances, separate RAM credentials) READ_MCP_SSE_URL= WRITE_MCP_SSE_URL= WRITE_MCP_BEARER= # Checkpoint service (names match src/common/env.py Env fields, no prefix) CHECKPOINT_URL=http://127.0.0.1:8000 # Operator bearer credential for the approve/reject routes (min 16 chars). Override in prod. OPERATOR_TOKEN= OPERATOR_IDENTITY=local-operator # Ed25519 keys: checkpoint holds the private key; executor holds only the public key. SIGNING_KEY_PATH=.airlock/signing.key PUBLIC_KEY_PATH=.airlock/executor-public.pem KEY_ID=airlock-local-1 # Approval store (SQLite path for local/single-worker; a real DB in deployment) APPROVAL_STORE_PATH=.airlock/approvals.sqlite3 # Cloud scope. CLOUD_REGION is a single knob; match it to your RAM policy ARNs. CLOUD_REGION=ap-southeast-1 BOUND_ACCOUNT_ID=