You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: Docker deploys run the promised OpenRouter default (HARNESS_MODEL scoped to open_code) (#142)
* fix(docker): bake the promised OpenRouter default model, not kimi-k2.6
The images set ENV HARNESS_MODEL=openrouter/moonshotai/kimi-k2.6 as an
OpenCode small_model fallback, but the model-resolution env cascade reads
HARNESS_MODEL — so every OpenRouter-only Docker/Railway deployment silently
ran kimi instead of the documented auto default
openrouter/deepseek/deepseek-v4-flash-0731. Point the baked value at the
auto default.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(models): consult HARNESS_MODEL only on the open_code runtime
HARNESS_MODEL is an OpenCode-ecosystem variable: it feeds OpenCode's
small_model via config interpolation, and the Docker image bakes a default
value precisely so that interpolation always resolves. Having it in the
model cascade for every runtime pushed that baked openrouter/… id into the
claude_code and codex CLIs on Docker deployments, breaking both unless the
deployer also set SWE_DEFAULT_MODEL (the README documented the codex
failure instead of fixing it).
Scope the cascade's HARNESS_MODEL step to open_code in both the Python and
Go nodes (main path, fast path, planning default). SWE_DEFAULT_MODEL and
AI_MODEL keep steering every runtime. Adds contract tests on both sides and
a drift guard pinning the Dockerfiles' baked value to
_OPENROUTER_AUTO_DEFAULT_MODEL; updates README / .env.example accordingly.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -403,7 +403,7 @@ For the Anthropic-compatible Claude path, set `ANTHROPIC_AUTH_TOKEN`, set `ANTHR
403
403
404
404
For Codex with ChatGPT subscription auth, install the Codex CLI on the host, run `codex login`, leave `OPENAI_API_KEY` unset for this process, and set `SWE_CODEX_AUTH_MODE=chatgpt` or `auto`. For OpenAI API-platform billing, set `SWE_CODEX_AUTH_MODE=api_key` and `OPENAI_API_KEY`.
405
405
406
-
> **Codex deployments using the Docker image must set `SWE_DEFAULT_MODEL=gpt-5.3-codex` on the environment** (or pass `models: {"default": "gpt-5.3-codex"}` in every build's `config`). The image bakes `HARNESS_MODEL=openrouter/moonshotai/kimi-k2.6` as an OpenCode fallback, and SWE-AF's model-resolution env cascade reads `HARNESS_MODEL` — so without `SWE_DEFAULT_MODEL` set, the Codex CLI receives an OpenRouter model id it can't handle and the Product Manager reasoner fails in ~13s. Setting `SWE_DEFAULT_MODEL`makes the cascade pin every role to the Codex model.
406
+
> The Docker image bakes `HARNESS_MODEL=openrouter/deepseek/deepseek-v4-flash-0731` so OpenCode's `small_model` config interpolation always has a value. `HARNESS_MODEL` only affects the `open_code` runtime — `claude_code` and `codex` deployments resolve their own runtime defaults (codex picks its model by auth mode) and can override per role via `SWE_DEFAULT_MODEL`/ `models` as usual.
407
407
408
408
> Codex CLI's `workspace-write` sandbox uses bubblewrap (`bwrap`) and needs Linux user namespaces enabled on the host. Most production Linux hosts and managed container runtimes (Railway, etc.) allow this by default, but local Docker on WSL2 or hardened environments may refuse with `bwrap: No permissions to create a new namespace`. If the verifier reports that error, the coder ran but couldn't write files — enable user namespaces on the host before relying on the codex runtime there.
0 commit comments