Skip to content

Releases: mubit-ai/minima

v0.6.0 — agent core: cost-aware sub-agents, budgets, recovery, persistence

Choose a tag to compare

@shankha98 shankha98 released this 02 Jul 15:28
f7af29f

The largest release since the TypeScript harness shipped: the coding agent gains sub-agent orchestration, budget following, failure recovery, and a durable local record — every piece wired into Minima's cost-aware routing — plus server-side routing fixes.

CLI / coding agent

  • task tool — sub-agent delegation: the agent can decompose work into subtasks, each cost-routed to its own model via Minima, run in parallel (bounded) with depends_on ordering, per-node budgets, timeouts, and abort propagation.
  • Budgets: --budget <usd> (graduated warnings at 50/75/90/100%) and --budget-enforce (refuses runs before any provider spend once exhausted). /budget command + status-bar segment. Cross-session-safe atomic reserve/reconcile.
  • Recovery ladder: a provider failure or judged-below-threshold turn automatically retries on the server's next-ranked model (failed model excluded, per-rung feedback, max 3 attempts).
  • --slider N: the cost/quality dial (0 = cheapest acceptable, 10 = quality-first) from the command line.
  • Persistent runs: every conversation, tool call, and routing decision lands in a local SQLite record — /resume restores context and the cost ledger, /name persists, /cost shows quality-per-dollar, savings vs all-premium, and optimal-cost-ratio.
  • Feedback truth: run-total cost reporting, no fabricated verification flags, unjudged turns tagged — the learning loop only gets honest signal. Optional LLM judge (MINIMA_LLM_JUDGE=1) with transient-failure retry.
  • Effort routing (preview, MINIMA_AUTO_EFFORT=1): server-classified difficulty picks each prompt's thinking level.

Routing service

  • Classifier overhaul: feature-vector classification (per-rule profiles, uncertainty, neighbor blending — thanks @404-ammar-not-found, #41/#46) with strongest-signal task-type selection and coding-agent vocabulary — real coding prompts no longer misprice as one-line summaries (benchmark: 73% vs 70% on the labeled set, both live misroutes fixed).
  • Savings accounting resilience: decision-log reconciliation now happens before the memory write, so /v1/savings realized figures survive a memory-backend outage.

Docs

  • docs/agent-core-architecture.md + docs/agent-core-implementation-plan.md — the full design + roadmap behind this release.

Homebrew: brew upgrade minima. PyPI SDK unchanged.

v0.5.2

Choose a tag to compare

@shankha98 shankha98 released this 02 Jul 08:41
832a774

Fixes

TUI viewport-overflow rendering corruption (#50) — the interactive shell garbled/overlapped content when the conversation exceeded the terminal height. The chat region and outer frame now hard-clip via overflow="hidden", the chat is bottom-aligned so the newest reply + live streaming stay visible, and the message-height estimates were rewritten (extracted to a unit-tested layout.ts) to mirror the real box model (multi-line tool messages, per-turn chrome, streaming newlines, input/overlay budgets). Overflow is now impossible regardless of estimate error.

Homebrew: brew upgrade minima.

v0.5.1

Choose a tag to compare

@shankha98 shankha98 released this 01 Jul 19:14
a231eed

Minima v0.5.1 — harness UX + Mubit memory

Patch release for the TypeScript CLI (the brew binary).

Fixed (from user feedback)

  • No more scary red banners for benign routing diagnostics (no_model_meets_threshold, thompson_pick, no_model_within_*_budget, …) — these are now muted info, not errors. Offline/unrouted is muted too (the turn still ran).
  • Clear, actionable errors — killed the doubled Error: Error: …; a missing model-provider key now says exactly which key to set (and that minima auth configures routing only). --print/--mode json surface provider failures and exit non-zero.
  • Routing never picks an unrunnable model — candidates are pre-filtered to providers whose key is present.

Added

  • Full model catalog in /model — populated from Minima /v1/models + (when OPENROUTER_API_KEY is set) the full OpenRouter catalog, key-gated to runnable models; the picker is now scrollable + type-to-filter.
  • Mubit memory in the agent — recall-before-route + outcome write-back (fail-open, no-op unless MUBIT_API_KEY is set), with a stable per-repo memory session so it learns across runs on the same repo.

Install / upgrade

brew upgrade mubit-ai/minima/minima

Python SDK on PyPI is unchanged (minima-cli stays at 0.5.0).

Binaries + Homebrew formula update via the automated release pipeline.

v0.5.0

Choose a tag to compare

@shankha98 shankha98 released this 01 Jul 11:38
8e22e0d

Minima v0.5.0 — the TypeScript harness is now the CLI

The Homebrew-installed minima is now the TypeScript/Bun binary (Ink TUI), replacing the Python virtualenv build. brew upgrade swaps it in place; install is a download + extract (seconds) with no Python or runtime deps.

Highlights

  • One-click authminima auth / /auth: browser login to the Mubit console (loopback + PKCE), auto-provisions a managed project per repo, stores a scoped key, reconnects routing. No manual MUBIT_API_KEY paste.
  • Cost-aware routing TUI with per-repo memory isolation, /goals, model picker, IDE-style tool rendering, and more.
  • Prebuilt binaries for macOS (arm64 + x64, ad-hoc signed) and Linux (x64 + arm64), attached below.

Install / upgrade

brew upgrade mubit-ai/minima/minima     # existing users
brew install mubit-ai/minima/minima     # new

Also in this release

  • Python minima-cli 0.5.0 publishes to PyPI (the minima_client SDK + server tooling) — unchanged distribution, version aligned with the tag.
  • minima-prod service + docs redeployed.

The Homebrew formula updates via an automated tap PR once the binaries finish building.

v0.4.10

Choose a tag to compare

@shankha98 shankha98 released this 26 Jun 17:47
a576087

Docs + tooling release (CLI/SDK code unchanged vs 0.4.9).

  • minima-cli now auto-publishes to PyPI on releasepip install minima-cli (bundles the minima_client SDK). This is the first release to publish via CI.
  • Docs (API reference) corrected — accurate GET /v1/health response shape, the real summary.realized field set, and the days bound (>0–365); plus a PyPI install link on the Client SDK page.

Full notes in CHANGELOG.md.

v0.4.9

Choose a tag to compare

@shankha98 shankha98 released this 26 Jun 16:39
180881d

Two fixes.

  • Multi-turn conversations with thinking enabled no longer 400 on Anthropic. Anthropic signs each thinking block and requires the signature echoed back when the block is replayed in history — so the second turn of any thinking conversation (and any thinking + tool-use turn) failed with messages.N.content.0.thinking.signature: Field required. The provider now captures the signature and sends it back; an unsigned thinking block is dropped rather than sent unsigned.
  • Text selection works again in macOS Terminal.app. Terminal.app doesn't report mouse-motion events (xterm mode 1003) that Textual needs for in-app drag-select, so capturing the mouse there left you unable to select at all. Mouse capture now defaults OFF on Terminal.app (native click-drag select + copy; scroll with PageUp/PageDown) and ON elsewhere (wheel-scroll + in-app drag-select). --mouse/--no-mouse overrides; /mouse toggles live.

Full notes in CHANGELOG.md.

v0.4.8

Choose a tag to compare

@shankha98 shankha98 released this 26 Jun 15:31
99d3f2d

Two fixes from this cycle, combined.

  • A provider whose API key is invalid no longer wastes every routed turn. An auth failure (e.g. invalid ANTHROPIC_API_KEY401 invalid x-api-key) now blacklists that provider for the session and auto-reroutes the same message onto a provider whose key works — instead of the router re-recommending the dead provider every turn. Auth failures are no longer fed back to Minima as model-quality failures (they can't poison a model's success estimate). Keyless providers are dropped from routing up front; /reconnect clears the blacklist; pins are never auto-rerouted.
  • Scroll-wheel and text selection/copy both work. Mouse capture is ON by default (wheel scroll + in-app drag-select); the terminal's native selection stays reachable by holding the bypass modifier while dragging (Option on macOS, Shift on Linux); and copy now also pushes to the OS clipboard (pbcopy/xclip/wl-copy), so it works on macOS Terminal.app (which ignores Textual's OSC-52-only copy). New /mouse [on|off] toggle + --no-mouse flag.
  • /resume picker shows created + recently-used timestamps, sorted most-recently-used first.

Full notes in CHANGELOG.md.

v0.4.7

Choose a tag to compare

@shankha98 shankha98 released this 26 Jun 13:04
30a6f56

Fixes the real cause of "Gemini stopped working" (surfaced by 0.4.6's raw-error feature).

  • Gemini calls failed whenever a tool with a nested-model schema was attached — including the /ledger tasks tool. Pydantic emits $ref/$defs for nested models, and the google-genai SDK's strict Schema rejects them (ValidationError: extra_forbidden), failing the whole call — and the extra_forbidden text was misclassified as a 403 "key lacks permission, or no quota". The Google provider now sends tool schemas via parameters_json_schema (the SDK's standard-JSON-Schema path, which converts $ref per Gemini's rules). Introduced with the tasks tool in 0.4.4; verified live (gemini-2.5-flash now accepts the tasks tool and emits a valid nested call).
  • Client-side validation errors are no longer misread as provider auth/403 failures.

Full notes in CHANGELOG.md.

v0.4.6

Choose a tag to compare

@shankha98 shankha98 released this 26 Jun 12:44
bf53bdc

Reliability + diagnostics for the agent loop, found by reproducing against the live API.

  • One provider hiccup no longer wedges the session. A failed model call (transient 403/429, bad key, network) was swallowed into an empty assistant left in history, which then made the next request invalid even on a healthy provider (Anthropic 400 "text content blocks must be non-empty"). The loop now never sends a failed call's assistant to a provider, and a failed turn is rolled fully out of context.
  • Pinning a model not in Minima's catalog no longer 422s / runs the wrong model. Pinning e.g. an OpenRouter id (google/gemini-2.5-flash) now bypasses Minima and runs exactly the pinned model.
  • Banner correctness. A failed model call shows an actionable model-error (… — check GEMINI_API_KEY (/config) or pin another model (/model)) instead of "routing offline / reconnect"; switching models clears stale banners; the 403 message gained a next step.
  • Raw provider errors surfaced + logged (└ provider said: …) so an ambiguous 403/429 is self-diagnosing.

Full notes in CHANGELOG.md.

v0.4.5

Choose a tag to compare

@shankha98 shankha98 released this 26 Jun 10:20
a8b0f2c

Routing-auth reliability fix.

  • Routing no longer 401s for the whole session when the Mubit key wasn't resolvable at launch. The Minima client's auth header was fixed at startup, so a key added via /config (or exported after launch) never took effect and every turn showed minima error 401: pass your Mubit API key …. /reconnect — and saving a routing key/URL in /config — now rebuild the client in place, so the fix applies immediately, no restart.
  • Actionable offline banner for an auth/config problem: no Mubit API key — add MUBIT_API_KEY via /config instead of the misleading "/reconnect to retry" (transient outages keep the "/reconnect" framing).
  • No doomed round-trip: a no-key request to a hosted endpoint short-circuits instantly instead of a guaranteed-401 per turn (loopback endpoints still attempt, so keyless local servers are unaffected).

Full notes in CHANGELOG.md.