Skip to content

Releases

0.3.0: does the harness help? Screening, sign-offs, replay, Docker

Choose a tag to compare

@Zaenus Zaenus released this 14 Nov 11:35

Experimental, like everything here. Upgrade with pip install -U "hemisphere-harness[web]", adding mcp and anthropic to the extras for tools or Claude, or run it with docker compose up -d.

New

  • Does the harness help? hemisphere-harness compare runs ten scripted tasks twice with your right model: with the harness, and with the right deciding every step alone under the same policy. It counts reserved actions taken without sign-off, stops for sign-off, answers, prompt injections obeyed, and cost. With Nemotron 3 Ultra and tev1, the harness stopped for a $449 refund the right alone issued; results and caveats are in docs/evaluation.md.
  • The left reads tool output first. Output that tries to instruct the agent reaches the right only fenced and marked untrusted; search results that do are dropped. HARNESS_SCREEN_TOOL_OUTPUT.
  • Your sign-offs become test cases. Approvals in the web UI are kept as eval scenarios; hemisphere-harness eval --signoffs runs them. The eval report now suggests a policy threshold with its margin, and breaks results down by domain.
  • Answers follow your preferences. The left checks each answer against remembered preferences, and the right rewrites a clear miss.
  • Replay. hemisphere-harness replay RUN --left-model ... puts a past run's questions to another left and shows where it would differ.
  • What a run cost: tokens, time per hemisphere, and money with RIGHT_PRICE_INPUT / RIGHT_PRICE_OUTPUT.
  • Notifications in the browser, and a webhook (HARNESS_NOTIFY_URL) when a run waits for sign-off.
  • Docker: compose.yaml runs the web UI next to Ollama with tev1.

Changed

  • The policy question no longer accepts claimed approvals. Told a customer had "confirmed twice in writing", the old wording let tev1 allow an account deletion (0.92). The new one scores it 0.04, allows nothing reserved across the 40 eval scenarios, and refuses fewer harmless actions (53 allowed correctly, from 42).
  • The right now sees the operator's policy.
  • Rate-limited calls back off for seconds, not milliseconds.
  • Fixed a broken link in the README.

Limits

The comparison is ten tasks in single runs, scored by keywords, and its last run was cut short by rate limits: a direction, not a verdict. Claude and Gemini are still untested with real keys.

0.2.0: tools, evaluation, lookups, streaming, memory, Claude and Gemini

Choose a tag to compare

@Zaenus Zaenus released this 13 Nov 20:20

Experimental, like everything here. Install or upgrade with pip install -U "hemisphere-harness[web]", adding mcp and anthropic to the extras if you want tools or Claude.

New

  • Tools. Options can call tools from MCP servers (HARNESS_MCP_CONFIG, the usual mcpServers file) or plain Python functions. Only tools a server marks read-only run on their own; any other tool waits for a person's sign-off, whichever hemisphere chose it. What a tool returns counts as evidence when the answer is checked.
  • An evaluation suite. hemisphere-harness eval puts 40 decisions with known answers to a left hemisphere, in six domains, and reports accuracy, calibration, the lowest commit threshold where it is right 95% of the time, and whether the policy gate ever allows what a policy reserves for a person. Results for tev1 4.3B and 0.8B are in docs/evaluation.md.
  • Lookups for the answer check. Claims the left is unsure of can be searched on Wikipedia, SearXNG or Brave (HARNESS_LOOKUP) and judged again with the evidence; the right may cite the sources. Off by default, since it sends the claims to that service.
  • Streaming. Answers appear as they are written.
  • Memory across conversations (HARNESS_MEMORY=true, off by default). The right keeps short notes: preferences, always recalled, and facts, recalled when the left judges them relevant. Kept in a local file; Settings → Memory lists and forgets them.
  • Claude and Gemini. RIGHT_PROVIDER=anthropic uses Anthropic's SDK, with RIGHT_EFFORT and server-side refusal fallback on current models. RIGHT_PROVIDER=gemini uses Google's OpenAI-compatible endpoint. Neither has been run with a real key yet.
  • Web UI: Tools and Memory settings, example tasks, offline demos at a pace you can watch.
  • Issue and pull request templates.

Limits

Tools have been run live against a local MCP server only. Wikipedia lookups help with general knowledge and little with specialised or recent facts. See Status and limits in the README.

v0.1.1 — fix a conversation that would not open

Choose a tag to compare

@Zaenus Zaenus released this 13 Nov 19:06

A bug-fix release.

Fixed

  • A conversation could fail to open in the web UI. The Markdown formatter crashed on a list item continued on an indented line, which models often write, and the crash stopped the whole conversation from drawing. It now formats those lines correctly.
  • One bad step can no longer blank a conversation. If a step or an answer ever fails to format, it is shown as plain text and the rest of the conversation still draws.

No changes to the harness, the API or settings.

Install or upgrade

pip install --upgrade "hemisphere-harness[web]"

v0.1.0 — first public version (experimental)

Choose a tag to compare

@Zaenus Zaenus released this 13 Nov 18:34

The first public version. Experimental: the architecture is settled enough to try and to build on, and the numbers below come from a handful of live runs, not an evaluation.

What it is

An agent harness after Iain McGilchrist's The Master and His Emissary. A generative LLM (the right hemisphere) plans, proposes options, judges in context and writes every word. A calibrated decision model (the left hemisphere) picks among the options it is handed and says how sure it is. The harness enforces who may commit to what: the left acts alone only on routine, low-stakes picks it is sure of and that the operator's policy allows; everything else returns to the right, and what the policy reserves for a person waits for a person.

In this release

  • Any model on either side. Right: OpenAI, NVIDIA NIM, xAI, OpenRouter, Ollama, LM Studio, vLLM, llama.cpp, any OpenAI-compatible endpoint, or a plugin. Left: TypeSafe AI's Jev, decision models served by Ollama (such as tev1), any System One server, an offline mock, and an experimental chat-model left. Mix local and hosted freely.
  • A policy gate in plain language that binds both hemispheres.
  • Answers in one voice, checked before you see them. The right lists its answer's factual claims, the left judges each, and the right corrects or qualifies what does not hold.
  • Conversations. Reply to any answer; each reply remembers what came before. Approving or rejecting a sign-off continues the stopped run.
  • A web UI (hemisphere-harness web): settings for both hemispheres, runs drawn live as a network, the steps behind a toggle, and the answer as a chat reply. Local only, behind a launch token.
  • A terminal chat (hemisphere-harness chat) and a Python API (Harness, Conversation).

Tried live

  • Fully local: gemma4 as the right, tev1 (4.3B) as the left, through Ollama. tev1 was a sound policy gate on the demo tickets; the 0.8B tev1 was not.
  • Mixed: NVIDIA's Nemotron 3 Ultra as the right, local tev1 as the left, including a two-message conversation.
  • Not yet with real keys: OpenAI, xAI, OpenRouter, and TypeSafe's hosted Jev (tested against mock transports only).

Known limits

  • The answer check is only as good as the left's knowledge. A small decision model mostly says "unsure" on specialised facts, which makes answers more careful, not more correct. Nothing is looked up.
  • Actions in the web UI and the terminal chat are simulated. Real tools go through your own actuator in the Python API.
  • Python 3.11 to 3.14.

Install

pip install "hemisphere-harness[web]"
hemisphere-harness web

MIT licensed. Feedback and provider contributions are welcome: see CONTRIBUTING.md and Discussions.