# openai4s configuration template. # Copy to `.env` and fill in your secret(s), or export these in your shell. # The real `.env` is git-ignored and never committed. # --- pick a provider ------------------------------------------------------- # One of: ark | chatgpt | claude | gemini OPENAI4S_LLM_PROVIDER=ark # --- API key --------------------------------------------------------------- # The active provider needs a key. Three ways to supply it (first non-empty wins): # 1) generic (applies to whatever OPENAI4S_LLM_PROVIDER is set to): OPENAI4S_LLM_API_KEY=your-api-key-here # 2) per-provider (lets several coexist; takes precedence over the generic): # OPENAI4S_ARK_API_KEY=... # OPENAI4S_CHATGPT_API_KEY=... # OPENAI4S_CLAUDE_API_KEY=... # OPENAI4S_GEMINI_API_KEY=... # 3) fallback: a conventional native var already in your shell is picked up # automatically (ARK_API_KEY/DOUBAO_API_KEY for ark, OPENAI_API_KEY for # chatgpt, ANTHROPIC_API_KEY for claude, GEMINI_API_KEY/GOOGLE_API_KEY for gemini). # --- Ark plan/v3 models ---------------------------------------------------- # The `ark` provider fronts many model families over one endpoint + key; just # set the model id: # OPENAI4S_LLM_MODEL=doubao-seed-2.0-pro # or -code / -lite / -mini, glm-5.2, # kimi-k2.7-code, deepseek-v4-pro, deepseek-v4-flash, minimax-m3, minimax-m2.7, kimi-k2.6 # OPENAI4S_LLM_REASONING_EFFORT= # empty = no reasoning param (fast) # --- streaming ------------------------------------------------------------- # On by default for the OpenAI-compatible and Anthropic wires whenever a delta # callback is supplied. Set to 0/false/no/off to force the blocking request # instead — useful behind a proxy that mishandles SSE, at the cost of the # response arriving as one blob per turn. # OPENAI4S_LLM_STREAM=1 # --- TLS reverse proxy ----------------------------------------------------- # Keep the daemon bound to loopback. If a trusted TLS proxy rewrites Host to # 127.0.0.1:8760, explicitly list the external browser origin(s) that may # differ from that backend Host. Exact origins only; comma-separate multiples. # OPENAI4S_TRUSTED_PROXY_ORIGINS=https://lab.example # --- optional per-provider overrides -------------------------------------- # base_url / model default to each provider's built-in value; override only # if you use a proxy or a different model id. Resolution order for each: # OPENAI4S__MODEL -> OPENAI4S_LLM_MODEL -> provider default # OPENAI4S__BASE_URL-> OPENAI4S_LLM_BASE_URL-> provider default # OPENAI4S_LLM_MODEL= # OPENAI4S_LLM_BASE_URL= # OPENAI4S_CLAUDE_MODEL=claude-3-7-sonnet-latest # OPENAI4S_GEMINI_MODEL=gemini-2.0-flash # --- provider defaults (for reference) ------------------------------------ # provider | wire | default base_url | default model | vision # ---------|-----------|-------------------------------------------------|----------------------|------- # ark | openai | https://ark.cn-beijing.volces.com/api/plan/v3 | doubao-seed-2.0-pro | yes # chatgpt | openai | https://api.openai.com/v1 | gpt-5 | yes # claude | anthropic | https://api.anthropic.com | claude-sonnet-4-5 | yes # gemini | gemini | https://generativelanguage.googleapis.com | gemini-2.5-flash | yes # --- other generation knobs (defaults shown) ------------------------------ OPENAI4S_LLM_MAX_TOKENS=4096 OPENAI4S_LLM_TEMPERATURE=0.7 OPENAI4S_LLM_TIMEOUT=120 # --- Auto Mode roadmap rollout (Stages 1-12; implemented, default-off) ---- # Each stage is an independent opt-in and consumes only its own flag. Enabling # a later stage does not silently enable an earlier one or grant authority. # Unknown boolean spellings are rejected rather than treated as enabled; see # docs/configuration.md and docs/auto-mode.md for the behavior of each stage. # OPENAI4S_STAGE1_TRUSTED_DELIVERY=0 # OPENAI4S_STAGE2_AUTO_RUN_STORAGE=0 # OPENAI4S_STAGE3_SCIENTIFIC_REVIEW_SHADOW=0 # OPENAI4S_STAGE4_REVIEW_COMPLETION_GATE=0 # OPENAI4S_STAGE5_AUTO_REPAIR=0 # OPENAI4S_STAGE6_GUARDIAN_SHADOW=0 # OPENAI4S_STAGE7_GUARDIAN_ENFORCEMENT=0 # OPENAI4S_STAGE8_LIVE_NOTEBOOK_LINEAGE=0 # OPENAI4S_STAGE9_ARTIFACT_WORKBENCH=0 # OPENAI4S_STAGE10_SCIENTIFIC_CONNECTORS=0 # OPENAI4S_STAGE11_DURABLE_REMOTE_COMPUTE=0 # OPENAI4S_STAGE12_AUTO_MODE_GA=0 # # Product selections and ceilings are implemented and remain default-off. The # autonomous/on preset always normalizes to auto_fix + auto_review; explicit # sub-modes apply only while the preset is off. Overrides may tighten, never # loosen, these ceilings; the 50-decision circuit window itself stays fixed. # Auto Mode is never an approval/sandbox bypass. # OPENAI4S_AUTO_MODE=0 # OPENAI4S_RESULT_REVIEW_MODE=off # off | review_only | auto_fix # OPENAI4S_APPROVALS_REVIEWER=user # user | auto_review # OPENAI4S_AUTO_MAX_REVIEW_ROUNDS=2 # OPENAI4S_AUTO_MAX_REPAIR_ROUNDS=2 # OPENAI4S_AUTO_REPAIR_TURNS_PER_ROUND=12 # OPENAI4S_AUTO_MAX_EXTRA_CELLS=30 # OPENAI4S_AUTO_WALL_TIME_S=900 # OPENAI4S_AUTO_EXTRA_TOKEN_MULTIPLIER=1.5 # OPENAI4S_AUTO_REPEATED_FINDING_LIMIT=2 # OPENAI4S_AUTO_SAME_ACTION_NO_DELTA_LIMIT=3 # OPENAI4S_AUTO_NO_PROGRESS_TURN_LIMIT=5 # OPENAI4S_AUTO_GUARDIAN_TIMEOUT_S=90 # OPENAI4S_AUTO_GUARDIAN_CONSECUTIVE_DENIAL_LIMIT=3 # OPENAI4S_AUTO_GUARDIAN_WINDOW_SIZE=50 # OPENAI4S_AUTO_GUARDIAN_WINDOW_DENIAL_LIMIT=10 # --- GPU compute (only for the model-weight-bound skills) ------------------ # Needed ONLY if you run a GPU/model skill (alphafold2, esmfold2, boltz, ...) # through host.compute with the bundled NVIDIA provider. The daemon forwards # ONLY these declared vars into the confined job sandbox — never your whole # environment. Requires Docker on the machine running the daemon. # # hosted form (no local GPU — calls the managed NVIDIA gateway): # NVIDIA_API_KEY=nvapi-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # # self_hosted form (local GPU — pulls an nvcr.io NIM container, needs the # NVIDIA Container Toolkit for --gpus): # NGC_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # # Optional: pin a stable sandbox-owner id (else auto-generated and persisted # to ~/.openai4s/install-id). Lets `reconcile` find sandboxes across runs. # OPENAI4S_INSTALL_ID= # --- remote protein folding over SSH -------------------------------------- # Optional: backs host.fold(sequence) with an offline Protenix/AF3-class runner # on a configured GPU host. Set these to your GPU host's SSH alias and the # remote fold.sh / jobs paths. # OPENAI4S_FOLD_SSH=my-gpu-host # OPENAI4S_FOLD_SCRIPT=/opt/os-fold/fold.sh # OPENAI4S_FOLD_JOBS_DIR=/opt/os-fold/jobs