← Back to Overview

MAXIM 1.3.3

Verified

Say what you checked, and check the thing you ship

Design write-up By Denny Schaedig · Written October 2026. The details here come from the v1.3.3 changelog and release notes, which win wherever the two disagree. For what ships today, see pymaxim.bio.

The release notes for pymaxim 1.3.2 said its voice was “verified”. It was checked, and it couldn't speak. 1.3.3 makes no new claim about what Maxim's agents can do. It's about that one word: three checks that tested a stand-in instead of the real thing, and a release process built so the thing that gets checked is the exact thing that ships. “Verified” is only as good as the answer to one question: verified what?

The Inspection Sticker

Picture buying a used car with a fresh inspection sticker on the windscreen. You'd assume someone drove it. But a sticker can mean very different things. Maybe the mechanic checked that the engine was installed, not that it started. Maybe the brakes were tested on a rig in the shop, never on this car. The sticker looks the same either way.

Software is full of stickers like that. A test passes, a check goes green, a release note says “verified”, and the question that matters is what was actually exercised. In 1.3.2, three of Maxim's checks had quietly tested something other than the thing that ships. None of them was lying. Each one checked exactly what it was built to check. The trouble was the gap between that and what people read it as.

Three Checks of a Stand-In

A voice that loaded

Maxim can speak through Piper, an open-source text-to-speech library, and a robot uses that voice to read out a pairing code. The 1.3.2 notes called the voice setup “verified”. What was checked was that the voice's files were the right ones and that the voice loaded. Nothing checked that it could speak, and it couldn't: Maxim called an older version of Piper's interface, so every attempt failed and the pairing code played as silence (#1332). The engine was installed; nobody turned the key.

A stream tested on a rig

Maxim's Console, its web dashboard, shows the agent's activity live over a streaming connection. On a clean install that connection failed: the web server Maxim installs ships without the piece that handles streaming, so every live panel was blank (#1347). The tests passed anyway, because they used a test client that never goes through the real web server. The brakes worked on the rig.

A score sheet that never saw the drive

Maxim's benchmark graded each run against an empty record of what the agent did, so some of its checks could never pass, for any model. A small model's “0 of 3” in the 1.3.2 release checklist was that empty record, not the model. Meanwhile a suite with no score threshold at all could pass on nothing (#1310). Picture a driving examiner whose clipboard never receives the drive.

Each fix comes with a check of the real thing. A test now drives the real Piper library with the exact voice Maxim ships, and the robot only offers spoken pairing on a voice that really speaks. Another test starts the real web server and opens a real streaming connection. The benchmark now sees the run it's grading. It passes only if at least one threshold was applied and every expectation was met, and the shipped suite that can't pass yet now says so instead of passing on empty inputs. The 1.3.3 notes also correct the 1.3.2 notes in writing: “verified Piper voice provisioning” overclaimed.

The Customer Who Drove It

Most of these weren't found by Maxim's own tests. They were found by maxim-pulse, a separate project that builds the Console on top of Maxim. Building a real product on your own library is like handing the car to a customer who actually drives it to work. They find what the inspection didn't.

Besides the silent voice and the blank live panels, maxim-pulse found that the Console's chat offered the model tools it wasn't allowed to use, and when the model picked one, the turn sat waiting until it timed out (#1412, #1413). And one message typed into the chat was being saved as a new memory every half second (#1414). Each is fixed, with a test that would have caught it.

Only the Car That Passed

The other half of 1.3.3 makes sure the checked thing and the shipped thing are the same. It's the first Maxim release published by an automated pipeline instead of by hand, and the pipeline works like a dealer who may only hand over the exact car that passed today's inspection:

  • It starts from a signed tag: a release marker on the code that can be traced to me.
  • It requires the overnight tests to have passed on that exact code, not on a version from earlier in the week.
  • It installs the exact package it's about to publish into a fresh, empty environment and runs a quick check there, so it tests the car on the lot, not one like it.
  • It waits for my approval, then uploads through PyPI's trusted publishing, so no password sits anywhere waiting to be stolen.

Two checks guard the parts that come from elsewhere. The Console bundled inside Maxim must be the newest release of maxim-pulse for its interface version, and the build refuses anything else; 1.3.2 had shipped an older Console two days after a newer one was tagged. And the optional voice and Console add-ons are now installed on their own every night, at the oldest and newest versions Maxim says it supports, so a mismatch like the Piper one shows up before a release instead of after.

Also in 1.3.3

  • Security. Every local language-model server Maxim starts now requires a key, even on a machine working alone, because before this any other program or user on a shared computer could use it. Every Maxim on a machine should be upgraded together. The agent also can no longer switch its own internet access back on, and its file tools refuse to write git settings. The changelog says plainly that the last one narrows a risk rather than closing it.
  • A saved agent no longer forgets while it's switched off. Before, a saved agent's learning faded with the time it spent off, a learned fear halving every week. Now it resumes exactly as it was saved. The changelog records the trade-off: a learned fear now never fades, because Maxim has no way to unlearn one yet (see Engrams).
  • Nothing downloads without asking. A missing model is now downloaded only with your consent, on every path.

What It Doesn't Show

1.3.3 claims no new behaviour, and no experiment result changed status. The one result with out-of-date evidence, the cross-session experiment Exp 37, stays marked stale under a written exception, as it did in 1.3.2. Some changes break on purpose, and the release notes list what to do for each.

This is the third release in a row without a headline, after Foundations. That's deliberate. The next real result has to beat a plain learner (Floors), and when it arrives I want every sticker it carries to mean what it says. The source is on GitHub, and the docs and evidence ledger are at pymaxim.bio.

A check is a promise about one specific thing. The work is in saying which thing, and making sure it's the one you hand over.