Oh My Pi 15.10.0 Shows Why Provider Compatibility Is the Hidden Tax of Vibe Coding

Oh My Pi 15.10.0 Shows Why Provider Compatibility Is the Hidden Tax of Vibe Coding

“Supports every provider” is the agentic-coding equivalent of “works on my machine,” only more expensive. The phrase sounds like freedom until a tool call loses its arguments, a reasoning block gets replayed in the wrong format, a usage report double-counts a shared quota, or one crashed turn poisons the next request with malformed conversation history. Oh My Pi v15.10.0 is worth covering because it is full of exactly those unglamorous fixes. This is the hidden tax of vibe coding: the harness becomes a protocol adapter, accounting layer, browser, terminal, transcript repair tool, and UI renderer before it gets to be an “AI coding assistant.”

The release landed on GitHub at 2026-06-06T22:29:35Z. Its changelog fixes Antigravity and Gemini usage-report deduplication, Cloud Code Assist schema rejection around mixed pr parameters, OpenAI Responses-family failures after orphaned tool calls, Anthropic-compatible unsigned reasoning replay, llama.cpp parallel tool-call argument loss, and a todo renderer crash triggered by malformed streaming args. It also changes URL-reader backend priority toward native local extraction and prevents eval subagents from being killed by a parent runtime cap.

None of that looks like a launch keynote. All of it is what separates a real multi-provider agent from a demo that breaks the moment a developer brings their own model.

The model is not the product. The transcript converter is.

The most revealing fix is for OpenAI Responses-family providers, including Codex, OpenAI Responses, and Azure Responses. When an earlier turn ended with an unpaired tool call — because the process crashed, the user aborted, or the conversation branch changed — the next request could fail with 400 No tool output found for function call. From the user’s perspective, this is maddeningly abstract. They did not “forget” a tool output. They resumed work after a broken agent turn. The provider, however, sees a transcript with a function call and no matching output, so it rejects the request.

Oh My Pi now synthesizes placeholder function_call_output or custom_tool_call_output entries after those orphaned calls. That is not a hack so much as transcript garbage collection. Agent sessions are no longer linear chat logs. They are mutable execution histories with tools, branches, partial streams, failed runs, and recovery paths. A robust harness has to normalize that history before handing it back to a provider with stricter expectations.

This is where “provider compatibility” becomes engineering work instead of marketing copy. Every provider has slightly different semantics for tool calls, reasoning traces, schemas, streaming events, and rejected histories. A harness that wants to route between Anthropic, Codex, Azure Responses, llama.cpp, Ollama, Gemini, Antigravity, and local models has to become a compatibility layer. The prettier the TUI, the easier it is to forget that the hard part is usually invisible.

Local providers expose the edge cases hosted APIs smooth over

The llama.cpp fix is the kind of bug only a real local-agent user could love. Issue #1970 described parallel tool calls where the first N-1 calls received empty {} arguments and only the last call succeeded. The release fixes this by routing identifierless final-argument events through open function calls in item order. Translation: the provider emitted enough information to reconstruct intent, but not in the shape the harness expected.

That matters because local inference is not a monolith. Teams evaluating “local coding agents” often lump together Ollama, llama.cpp, vLLM, SGLang, OpenAI-compatible shims, Anthropic-compatible shims, and bespoke model gateways. Each one may stream arguments differently, attach identifiers differently, or preserve reasoning traces differently. If the agent’s compatibility layer assumes the hosted-provider happy path, local support becomes cosplay.

Issue #2005 is even more instructive. A MiMo V2.5 Pro setup using an Anthropic-protocol path hit malformed todo args, a renderer path expecting args?.ops?.map, append-only context, reasoning replay, and eventually a startup crash/infinite retry loop. That is not one bug. That is an ecosystem bug: custom extension, compatible-but-not-official protocol, UI assumptions, memory/transcript mode, and retry behavior all colliding.

Practitioners should internalize the lesson. If your evaluation plan is “run the agent against one hosted model and see whether it edits files,” you are not testing model agnosticism. You are testing the easiest path. Real compatibility testing needs parallel tool calls, aborted turns, branch navigation, unsigned reasoning, malformed streaming args, mixed JSON-schema variants, local providers, hosted providers, and extension hooks.

Usage accounting is a safety feature now

The Antigravity and Gemini usage fixes sound like bookkeeping, but bookkeeping is now part of agent safety. The release changes usage reporting so Antigravity deduplicates by tier instead of treating 15+ model entries under one shared-quota account as separate usage surfaces. Reports now include email and accountId, while Google Cloud provider dedup also considers projectId.

That is not just nicer reporting. During a Gemini CLI to Antigravity migration window, teams need to know which human account, cloud project, provider tier, and shared quota actually paid for the agent’s work. If usage bars are duplicated or identities are missing, engineering managers cannot distinguish “we are burning one shared pool faster than expected” from “fifteen separate model entries are noisy but harmless.” Finance gets mushy. Quota planning gets mushy. And once coding agents run longer tasks, spawn subagents, or retry provider failures, mushy accounting becomes a production problem.

The Cloud Code Assist schema fix points in the same direction. A mixed anyOf: [string, array] collapse leaked items from an array branch onto a selected string type, causing HTTP 400 rejection for a GitHub tool schema. That is the sort of compatibility edge case that breaks a migration checklist in the worst possible way: everything looks configured, but a provider rejects the tool definition because a schema normalization layer was slightly too clever.

The URL reader change is smaller but also practical. Oh My Pi changes providers.parallelFetch into a providers.fetch enum — auto, native, trafilatura, lynx, parallel, jina — and moves the default priority toward native extraction first. Coding agents increasingly read docs, issues, changelogs, and API references as part of their work. The fetch backend is now part of answer quality, latency, privacy, and failure behavior. “Just read this URL” is a subsystem.

What teams should test before believing “bring any model”

If you are choosing a multi-provider coding agent, build a small compatibility test suite before you build a migration deck. Include one hosted Anthropic-like provider, one OpenAI Responses-like provider, one local llama.cpp or Ollama path, and one Google/Antigravity account path if those matter to your team. Run tasks that force parallel tool calls, then inspect whether every call receives the right arguments. Abort a turn after a tool call and resume. Branch a conversation. Replay unsigned reasoning. Feed a mixed JSON schema through a tool registration path. Trigger a malformed todo/update event and make sure the UI fails soft, not into an infinite retry loop.

Also test accounting. Run the same task under two accounts and two projects. Confirm that usage reports identify the account, project, provider, and quota tier in a way a human can reconcile later. Agentic coding is no longer a single developer spending a few prompt credits. It is becoming a distributed workload with retries, subagents, remote execution, and sometimes shared quotas. If you cannot attribute spend, you cannot govern it.

My take: Oh My Pi 15.10.0 is the kind of release that should make buyers more skeptical and builders more appreciative. Multi-provider support is valuable, but it is not a checkbox. It is a long tail of transcript repair, schema filtering, reasoning replay, account identity, streaming weirdness, and UI hardening. The agent tools that survive will be the ones that treat provider compatibility as core infrastructure, not a bullet point near the pricing table.

Sources: Oh My Pi release v15.10.0, Oh My Pi repository, Issue #1970, Issue #2005