Skip to content

Releases

mini 1.0.5

Choose a tag to compare

@phuryn phuryn released this 06 Nov 22:13
  • read: a damaged PNG (a chunk that fails its CRC check, or no IEND chunk) is refused with the reason, before it reaches the transcript. It was sent, the API refused it, and since the transcript is never edited, every later request in the session failed too
  • bash: when a job's shell has ended but what it started still runs (nohup make & inside a call), the "ended" note says so and how to stop it; it read as if everything had finished
  • On Linux, a finished process that was never reaped (in a container whose init doesn't reap) no longer counts as running, so mini doesn't report it or wait a second for it at exit
  • bash description: output piped into tail, grep or less appears only when the command ends, so a long command should write to a file
  • The wait hint in the still-running note says to give that call a long enough timeout

Update: uv tool upgrade mini

mini 1.0.4

Choose a tag to compare

@phuryn phuryn released this 06 Nov 14:58
  • A run the API refuses exits with code 1 in headless mode, like any run that didn't finish; it exited 0, so a script read a refusal as done
  • bash: a command killed by signal N reports [exit 128+N], as bash and its job log do; it reported [exit -N]
  • bash: the command reaches the shell through the environment, not its command line, so the model's own pkill -f <pattern> no longer matches the shell running it
  • bash: every result ends with what earlier calls left running (pid and log, how to stop or wait for it), and says once when one of them has ended. A job counts while anything it started is alive, so a plain kill of its shell doesn't hide a server that's still up, and mini still stops it at exit
  • DeepSeek requests outside its peak hours (01:00–04:00 and 06:00–10:00 UTC on weekdays) are priced at half, set by peak_utc and off_peak in models.json

Update: uv tool upgrade mini

mini 1.0.3

Choose a tag to compare

@phuryn phuryn released this 06 Nov 02:58
  • bash on macOS and Linux: a command still running at its timeout isn't killed. It goes on in the background, and the model gets its pid, the output so far, a log under ~/.mini/jobs/ (ending with [exit N]) and a stop command that needs no approval. What a timeout left running stops when mini exits, including on SIGTERM or SIGHUP (it gets SIGTERM first, then SIGKILL a second later). On Windows the timeout still stops the command
  • bash waits for the command, not its output, so a job started with & no longer holds the call; stdout and stderr come back together
  • Output cap per model (max_output in models.json): 128,000 tokens for the listed Claude models, up from 64,000
  • A reply that fails partway through streaming (overloaded, rate-limited, a server or network error, a cut-off stream) is tried again up to three times; failures before the stream starts get only the SDK's own retries
  • ~/.mini/models.json entries now change only the fields they name
  • Fix: output-limit recovery counted per turn, so a headless run stopped at its third cut-off anywhere; it now counts cut-offs in a row
  • Fix: the goal's verify command no longer leaves behind what it started with &
  • README: about 1,400 lines of Python

Update: uv tool upgrade mini

mini 1.0.2

Choose a tag to compare

@phuryn phuryn released this 05 Nov 20:46
  • read shows images: PNG, JPEG, GIF and WebP up to 3000 px a side, and up to 20 MB of images per conversation
  • The model is told who approves in your permission mode, and again when you change it with /permissions; tool descriptions no longer say commands can be denied when they can't
  • A reply that hits the output limit continues (up to twice) instead of ending the run; a goal pauses after that, and headless --goal exits 1 unless the goal is done
  • bash can start long jobs in the background (servers, long builds), with output in a log under ~/.mini/jobs/
  • On Linux the bash tool runs bash, not dash
  • Headless runs no longer offer ask_user, since nobody can answer
  • Web search no longer brings Anthropic's server-side code sandbox along
  • Fix: a ~word in a command no longer fails the call; one bash expands but Python can't (~+, ~-) counts as outside the project and asks
  • README: about 1,300 lines of Python; headless exit codes explained

Update: uv tool upgrade mini

mini 1.0.1

Choose a tag to compare

@phuryn phuryn released this 04 Nov 13:48
  • /sessions marks the session you are in (*), shows when each was last updated, and uses the first prompt as a short title
  • README: built for teaching up front; interactive and unattended (-p) runs explained apart; --model and the other flags work in both
  • README: Terminal-Bench 2.0 results (Claude Haiku 5.5, five runs, eight harnesses) and a row for Claude's server-side compaction in the comparison

Update: uv tool upgrade mini

mini 1.0.0

Choose a tag to compare

@phuryn phuryn released this 03 Nov 00:21

First release of mini: a minimal agent harness for Claude (and models that speak Anthropic's message format), about 1,200 lines of Python.

  • Tool loop with read, write, edit, bash, find, web search, subagents and ask_user
  • Append-only sessions you can resume, server-side compaction, /context
  • Agent Skills, MCP servers over stdio (OAuth via mcp-remote)
  • /goal mode with an independent reviewer
  • Permission gate: asks outside the project, for secrets and for files that run later; optional Jev judge (default when OPENROUTER_API_KEY is set)
  • Models, prices and windows in models.json; Claude and DeepSeek V4.1 Flash out of the box
  • macOS, Linux and Windows (Git Bash); tests run on all three in CI

Install: uv tool install git+https://github.com/phuryn/mini-harness