Repository navigation
v0.33.0
Five new harnesses
- MiMo Code (Xiaomi's coding agent, an opencode fork), jcode, OpenSquilla and nanobot run in the sandbox like every other base. Qoder Cloud Agent is the first remote runtime: its agent loop runs in Qoder's cloud, and the files it delivers land in the workspace. (#448, #438)
- Each offers only the models it was measured to run reliably. Every model each base can reach went through the five console scenarios, a conversation across model families, a plugin skill, MCP tools over stdio, SSE and HTTP, the browser, and a real deck that was downloaded and opened. A model whose own failure repeated is not offered on that base. Each removal and its reason are in the release's support-matrix notes. MiMo Code offers 47 models, jcode 48, OpenSquilla 50, nanobot 50, Qoder Cloud Agent 15. (#454)
Fixes found by measuring them
- jcode's tool calls show their command, while the turn runs and in the record. (#454)
- jcode no longer loops. Its own
todoandmemorytools were the way into runaway turns, where a model kept "re-validating" until a person stopped it. They are off, with jcode's tools that cannot work in a sandbox. A jcode turn also ends at the turn's step budget. (#454) - OpenSquilla's tool calls show their arguments while the turn runs. Each answer is that turn's own; the whole conversation was being replayed. English prompts get English answers; GPT models had answered in Chinese, French or Spanish under OpenSquilla's own language rules. (#454)
- MiMo Code uses only the turn's own connection and the harness's skills. A subagent could reach a model outside the connection, and its own office skills cannot run in a sandbox. (#454)
- Qoder: a revised deliverable keeps its name, the agent calls itself Qoder, and a reasoning model's markers stay out of the answer. (#454)
Fixes for every base
- A file the agent commits on a session's first turn is handed back. (#454)
- A LibreOffice profile in the workspace is not a deliverable, so it can no longer push a finished deck out of the files a turn returns. (#454)
- A turn waiting for a free slot on a busy instance no longer reads as failed. (#454)
- A hermes turn the provider refused says why, instead of hermes's own "Resumed session" line. (#454)
- A model removed from a base stays removed when a custom connection lists it. (#454)
- A resumed Claude Code turn after a model switch names the model that answered it. (#452)
Checked
On 0.33.0-rc.21, with a test instance's settings:
- The console regression. Claude Code, Codex, hermes, opencode and pi: 19 pairs, 95 of 95 scenarios. The five new bases' four: 16 pairs, 80 of 80. The follow-up scenario now fails an answer that repeats an earlier one.
- The conversation a person ran by hand. On each new base, a harness whose instruction makes a PDF, then five turns on five different models: say hi, improve the style, purple, red, green. Every style and colour turn was served by the model asked for and handed back a changed PDF, with no turn running away. jcode on grok-4.20, which had looped for minutes before, finished its turn in three tool calls.
- jcode, every model, again after its
todoandmemorytools went off: the plugin skill, MCP tools over stdio, SSE and HTTP, the browser, and a deck, for all its models. - Tool rows open while the turn runs and show the command, on jcode and OpenSquilla.
- Reply language. OpenSquilla on gpt-5.4 and gpt-5.5: 8 of 8 English prompts answered in English, and Chinese prompts in Chinese.
Gateway, runner and console tests pass.
docker run -d -p 3000:3000 -v hr-data:/data harnessrouter/harnessrouter:0.33.0
Full Changelog: v0.32.9...v0.33.0