<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Manifest Changelog</title>
    <link>https://manifest.build/llm-gateway/changelog/</link>
    <description>New features, fixes, and improvements to Manifest, released on GitHub.</description>
    <language>en-us</language>
    <atom:link href="https://manifest.build/llm-gateway/changelog/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title><![CDATA[Manifest v6.25.4]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-25-4</link>
      <description><![CDATA[<h3>🐛 Patch Changes</h3>
<ul>
<li>6727c89: Faster first paint of the dashboard: sessions are validated from a signed cookie (Better Auth cookie cache, 5 minute max age) instead of a database round trip on every request, and the plan lookup no longer waits behind the session probe. A failed plan lookup is no longer remembered for the session.</li>
<li>5c206d7: Fix self-hosted HTTP deployments failing to start after remote MCP became mandatory. <code>@better-auth/mcp</code> rejects a non-loopback HTTP resource URL while the plugin is constructed, so an install with a plain-HTTP <code>BETTER_AUTH_URL</code> (a LAN or tailnet hostname) exited before listening. Manifest now runs without the MCP surface on such an origin instead of refusing to boot, and <code>MCP_ENABLED=false</code> switches MCP off explicitly.</li>
<li>2d80449: Speed up the first Overview load: the notification bell no longer refetches the workspace Autofix status on every gateway request and polls once a minute instead of every 15 seconds, and a partial index over unlinked provider attempts (<code>request_id IS NULL</code>) stops the Overview and Autofix analytics from scanning ~300 MB of the <code>agent_messages</code> heap twice per call.</li>
</ul>
]]></description>
      <pubDate>Sun, 20 Sep 2026 07:46:14 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.25.4</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.25.3]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-25-3</link>
      <description><![CDATA[<h3>🐛 Patch Changes</h3>
<ul>
<li>c494805: Fix the per-harness Overview and Requests pages being slow on workspaces with a lot of traffic. The filter that hides Playground traffic re-read the agents table once per row, which on a busy harness meant tens of thousands of sequential scans. It now reads it once per query. Measured on production, the timeseries behind the Overview went from 24.7s to 0.3s and the requests chart from 26.2s to 0.7s, with identical results.</li>
<li>5f4c69c: Lead with Allow on the remote MCP consent screen and move Deny below it as a secondary button.</li>
<li>0f5ba81: Name gateway models correctly: OpenCode Go models that the underlying vendor’s catalog does not list (e.g. <code>deepseek-v4.1-flash</code>) now read their name and capabilities from the gateway’s own models.dev catalog instead of falling back to the raw model id, the Requests log resolves gateway ids through the pricing catalogue so it matches the routing page, the model picker hides an OpenCode Go id only when a published one already stands for the same model, and a promotional OpenCode Go quota row is parsed instead of skipped.</li>
</ul>
]]></description>
      <pubDate>Thu, 17 Sep 2026 15:54:36 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.25.3</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.25.2]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-25-2</link>
      <description><![CDATA[<h3>🐛 Patch Changes</h3>
<ul>
<li>
<p>a782be5: Replace the CLI npm README with a public quick start and remove development-only details.</p>
</li>
<li>
<p>c140bd1: Fix the CLI npm publish, which failed on provenance because the package did not declare public access.</p>
</li>
<li>
<p>77792bc: Forward the caller’s <code>anthropic-beta</code> header on native Messages requests to Anthropic instead of dropping it. Manifest builds the upstream header set from scratch, so a beta flag the caller sent never arrived: the API-key path sent no flag at all and the subscription path sent a fixed list. A request whose body used a beta-gated field was then validated against the non-beta schema and rejected. The caller’s flags are now appended to Manifest’s own, on the primary forward, the Autofix retry and fallback hops.</p>
<p>Scope is deliberately narrow. Only <code>POST /v1/messages</code> to Anthropic itself, including a custom provider row pointed at it. Translated OpenAI-shaped requests are excluded, because their responses come back through converters that understand only known content blocks. The Anthropic-compatible third parties (Bedrock, BytePlus, CommandCode, MiniMax, Kimi, OpenCode Go) are excluded too.</p>
</li>
<li>
<p>0c2273f: Show an email verification recovery path when social sign-in finds an unlinked account.</p>
</li>
<li>
<p>099e20d: Make MCP OAuth registration and callback errors actionable, and resume signed authorization after login.</p>
</li>
<li>
<p>0d44d41: Point every repository URL at <code>mnfst/llm-gateway</code> after the rename. The GitHub stars endpoint, the self-hosted update check, the <code>docker/install.sh</code> download source and the Docker image source label no longer rely on GitHub’s redirect from the old name.</p>
</li>
<li>
<p>5438859: Restore app.manifest.build as the default Cloud setup URL while keeping gateway.manifest.build available for existing MCP clients.</p>
</li>
<li>
<p>8cbf2bf: Resolve the Better Auth <code>baseURL</code> per request when the dashboard and the API answer on more than one host. The OAuth <code>redirect_uri</code> and the session cookie are pinned to <code>baseURL</code>, so with a single static origin a sign-in started on <code>app.manifest.build</code> returned to <code>gateway.manifest.build</code> and set the cookie there — an origin the dashboard cannot read, which stranded the user. Allowed hosts are derived from <code>BETTER_AUTH_URL</code>, <code>CORS_ORIGIN</code>, and the optional <code>BETTER_AUTH_ALLOWED_HOSTS</code>; unknown hosts fall back to the canonical <code>BETTER_AUTH_URL</code>, and development keeps the static origin.</p>
</li>
</ul>
]]></description>
      <pubDate>Wed, 16 Sep 2026 20:22:06 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.25.2</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.25.1]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-25-1</link>
      <description><![CDATA[<h3>🐛 Patch Changes</h3>
<ul>
<li>e765308: Publish the CLI as <code>mnfst-gateway-cli</code> instead of <code>@mnfst/gateway-cli</code>. The scoped publish failed because the <code>@mnfst</code> npm organization does not exist. Install with <code>npm i -g mnfst-gateway-cli</code>; the command is still <code>mnfst</code>.</li>
</ul>
]]></description>
      <pubDate>Tue, 15 Sep 2026 11:53:50 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.25.1</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.25.0]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-25-0</link>
      <description><![CDATA[<h3>✨ Minor Changes</h3>
<ul>
<li>e1de563: Fallback-exhausted responses now say what the provider said. The error message leads with the primary provider’s own sentence followed by a one-line summary of every attempt, <code>source</code> is always <code>provider</code> (the exhaustion is a routing outcome, carried by a new <code>fallback_exhausted: true</code> flag and the existing <code>X-Manifest-Fallback-Exhausted</code> header, not an error class), and <code>code</code> holds only the provider’s own code. Each <code>attempted_fallbacks</code> entry now carries its sanitized <code>message</code>, <code>code</code> and <code>auth_type</code>, plus a request-scoped <code>autofix</code> summary (<code>applied</code>, <code>original_status</code>, <code>retry_status</code>) on the primary and on any hop where Phoenix was consulted. The provider-error parsers also understand FastAPI-style <code>{detail}</code> bodies (how ChatGPT Codex rejects an unsupported model) and bare <code>{&quot;error&quot;:&quot;…&quot;}</code> strings, so those messages are no longer collapsed to a generic “Bad request to upstream provider”.</li>
<li>1dbd49f: Add an Integrations section to the dashboard sidebar with pages for the MCP server and the CLI. The MCP page shows this install’s own endpoint and copy-paste setup for Claude Code, Codex and OpenCode; the CLI page shows the npm install and a login command that carries the host on self-hosted.</li>
<li>b43f461: Publish the management CLI to npm as <code>@mnfst/gateway-cli</code>. Install it with <code>npm i -g @mnfst/gateway-cli</code> instead of building the monorepo; the command is still <code>mnfst</code>. Its version tracks the Manifest release it ships with.</li>
<li>81e6cb5: Requests log: filter by model, and isolate cancelled requests. The Model filter is multi-select and matches any provider attempt on the request, so filtering by the primary of a fallback chain still finds the request it was recovered on; a request Manifest blocked before any provider call matches on its requested model, which is what the Model column shows for those rows. <code>Cancelled</code> becomes its own status instead of being counted as <code>Failed</code>. The Min/Max $ inputs are gone — filtering by an absolute cost threshold required already knowing the distribution you were trying to find.</li>
</ul>
<h3>🐛 Patch Changes</h3>
<ul>
<li>
<p>c1b2d32: Fix the Release workflow, which failed on every merge to main after the CLI publishing change. Stamping the CLI version during the version PR made changesets look for a changelog the CLI does not have.</p>
</li>
<li>
<p>aca3257: Forward the caller’s <code>anthropic-beta</code> header to Anthropic instead of dropping it. Manifest built the upstream header set from scratch, so a beta flag the caller sent never arrived: the API-key path sent no flag at all and the subscription path sent a fixed list that goes stale whenever Anthropic ships a new beta. Body fields those betas gate (<code>output_config</code>, <code>context_management</code>, <code>diagnostics</code>, <code>speed</code>, <code>thinking.adaptive</code>) then came back as <code>&lt;field&gt;: Extra inputs are not permitted</code>. The caller’s flags are now appended to Manifest’s own, sanitized and bounded, on the primary forward, the Autofix retry and fallback hops. Anthropic-compatible third parties (Bedrock, BytePlus, CommandCode, MiniMax, Kimi, OpenCode Go) are unaffected.</p>
</li>
<li>
<p>b02d350: Use gateway.manifest.build for cloud dashboard links and share previews. Build email image URLs from the configured dashboard URL so self-hosted installations use their own assets.</p>
<p>Use gateway.manifest.build for n8n and management CLI API defaults and the deprecated OTLP migration message. Generate SDK examples from the current dashboard origin.</p>
<p>Send self-hosted pivot waitlist submissions to gateway.manifest.build and allow that origin in the dashboard content security policy.</p>
</li>
<li>
<p>a50e129: Keep harness type selectors within compact dialogs by stacking category groups in two columns, switching to one column on mobile, and scrolling long menus. Share the option rendering between the creation dropdown and settings dialog.</p>
</li>
<li>
<p>11b3942: The pivot waiting-list modal describes the new product and lists its three advantages.</p>
</li>
<li>
<p>006e904: Show custom tiers in the Requests Tier filter. The log spans every harness unless one is picked, but the filter only listed custom tiers of a selected harness, so on the default view there were none to pick. Tier options now come from the tenant-scoped filter metadata, and same-named tiers on different harnesses share one option that matches all of them.</p>
</li>
</ul>
]]></description>
      <pubDate>Tue, 15 Sep 2026 11:10:27 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.25.0</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.24.0]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-24-0</link>
      <description><![CDATA[<h3>✨ Minor Changes</h3>
<ul>
<li>b415978: Run Autofix on failed <strong>fallback</strong> attempts, not just the primary. Previously a fallback that failed with a repairable request-side 4xx (for example an unsupported <code>response_format</code>) was recorded as a dead hop even when Phoenix already had a patch for that model. Each failed fallback is now handed to Phoenix and its patched body is retried on the same fallback transport, so a request can be recovered without burning the rest of the chain. Consent is unchanged: Autofix only runs for agents that opted in.</li>
<li>f0b9432: Add a remote MCP server at <code>POST /api/v1/mcp</code> with OAuth 2.1. Better Auth’s MCP plugin provides the authorization server (PKCE, resource-bound JWT access tokens, CIMD client identity, RFC 8414/9728 discovery), and <code>requireMcpAuth</code> gates the route. Tools reuse the same services as the REST API and CLI — agents, provider connections (including custom providers), routing (status, fallbacks, Autofix, recording, custom/header tiers), models, pricing, the request ledger, and a dependency-ordered <code>doctor</code>. Read tools require <code>mcp:read</code>; write tools are hidden unless the token carries <code>mcp:write</code>. Adds a <code>/consent</code> page.</li>
<li>f7f07b4: Add the mnfst management CLI (packages/cli) and a GET /api/v1/me identity endpoint. One login with a global API key, then agents, providers, routing, and analytics are manageable from the terminal without the dashboard.</li>
</ul>
<h3>🐛 Patch Changes</h3>
<ul>
<li>97d7b05: Fix Anthropic server tools (web_search, bash, computer, etc.) being forwarded to non-Anthropic providers with no <code>parameters</code> field, which some providers reject with a 400.</li>
<li>b940f39: Harden the mnfst CLI auth and command edges: refuse HTTP redirects so the workspace API key cannot leak cross-origin, strip inherited <code>MANIFEST_AGENT_KEY</code>/<code>MANIFEST_API_KEY</code> (and variant casing) from <code>mnfst run</code> children, require the requested <code>--auth-type</code> on <code>agent configure</code>’s primary model so an unroutable route is rejected before any write, and report clearer errors for a raced key file, an array-valued config, and a JSON <code>null</code> token response.</li>
<li>5eb95bd: The mnfst CLI no longer sends a telemetry request per command. Commands are recorded in a local spool (<code>~/.config/manifest/telemetry-spool.jsonl</code>, mode 0600) and shipped in one anonymous request per install per day to <code>/v1/cli-report</code>, matching the self-hosted install report. The first command ever flushes immediately so a new install is counted the day it appears; the spool is capped at 500 events and a failed send is retried at most hourly. The wire payload is reshaped into one envelope per request: <code>schema_version</code>, <code>anon_id</code>, <code>cli_version</code>, and <code>os</code> now sit on the envelope with an <code>events</code> array beneath it (each event keeps <code>command</code>, <code>ok</code>, <code>duration_ms</code>, <code>agent_runtime</code>, plus a minute-precision <code>at</code>). No new data is collected, and the <code>MANIFEST_TELEMETRY_DISABLED=1</code> opt-out is unchanged.</li>
<li>1d03ae2: The mnfst CLI’s daily telemetry batch now carries <code>target</code>: <code>cloud</code> or <code>self-hosted</code>, the class of Manifest the install points at (same precedence as command resolution: <code>MANIFEST_URL</code>, then the active config host, then Cloud). Never the URL. Lets Peacock’s CLI usage page split the two populations. Opt-out unchanged.</li>
<li>326ecb5: The remote MCP endpoint answers GET and DELETE with 405 + <code>Allow: POST</code> as the Streamable HTTP spec requires for a stateless JSON transport, instead of a 404 that clients logged on every connect. <code>mnfst routing test</code> now sends <code>User-Agent: mnfst-cli/&lt;version&gt;</code> so the gateway’s caller attribution can tell CLI test traffic apart.</li>
<li>62433aa: Fix OpenAI subscription model discovery so newer Codex CLI models (e.g. <code>gpt-6-astra</code>) appear. OpenAI gates <code>gpt-6-astra</code> behind Codex CLI <code>0.153.0</code>+, and the <code>/backend-api/codex/models</code> endpoint silently returns the older model subset for older <code>client_version</code> values. Bump <code>CODEX_CLI_VERSION</code> from <code>0.128.0</code> to <code>0.154.0</code>.</li>
<li>148c7f7: Speed up the harness and global Overview Autofix cards. The request window is now scanned once for both the current and previous period instead of twice, halving the heaviest query behind the reliability KPIs.</li>
<li>073d55a: Kiro requests record real token usage instead of always logging zeros. Live <code>GenerateAssistantResponse</code> streams carry no per-token counts (only <code>assistantResponseEvent</code> content and a credit-based <code>meteringEvent</code>), so usage is estimated from the request conversation and the emitted text and marked <code>estimated: true</code>. When Kiro does send an explicit <code>tokenUsage</code> block it is used verbatim, and the cache read/write breakdown is preserved so <code>cache_read_tokens</code> / <code>cache_creation_tokens</code> populate the request log. Unknown Kiro event types are logged at debug.</li>
<li>abc0183: Return <code>M302</code> (“model not available”) instead of <code>M101</code> (“no providers configured”) when a pinned routing override names a model its connection no longer offers and no fallback route resolves. Only applies while the override’s provider connection still exists, so a genuinely unconfigured agent keeps the neutral <code>M101</code>.</li>
<li>4f674c9: Drop the unsupported <code>thinking</code> parameter before forwarding requests to NVIDIA Nemotron models served through OpenRouter (e.g. <code>nvidia/nemotron-3-ultra-550b-a55b</code>), which validate params strictly and otherwise reject it with a 400. The strip is scoped to the Nemotron family via the bare model id, so the general OpenRouter passthrough for Gemma, DeepSeek, Kimi, etc. is unchanged.</li>
<li>a5de1c2: Refresh the Google Code Assist subscription model catalog. Add the current Generally Available <code>gemini-3.5-flash</code> (the model the latest Gemini/Antigravity CLI defaults to) and drop the retired <code>gemini-3.1-flash-lite-preview</code> preview alias. Gemini Code Assist does not expose a <code>/models</code> endpoint, so this curated list is what the routing UI offers; models outside it 404 at chat time. Also correct the provider tile and README, which advertised a non-existent “Gemini 3.6 Flash” and a “Gemini 3.1 Pro” the subscription does not offer.</li>
<li>b630d2c: Self-hosted telemetry now reports CLI and remote-MCP adoption: <code>mnfst login</code> key counts and 7-day actives, plus MCP OAuth client, consent, and 24h access-token counts, with client names whitelisted to known MCP hosts. All fields are additive aggregates read from existing tables; no per-call counter or new table.</li>
</ul>
]]></description>
      <pubDate>Sun, 13 Sep 2026 20:49:12 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.24.0</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.23.4]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-23-4</link>
      <description><![CDATA[<h3>🐛 Patch Changes</h3>
<ul>
<li>483d6c1: Close object schemas in Anthropic structured output. Every <code>type: object</code> node in <code>output_config.format.schema</code> now gets <code>additionalProperties: false</code> (unless the author set it), on both the chat-completions → Anthropic translation and the native <code>/v1/messages</code> pass-through, so Anthropic no longer rejects requests with “For ‘object’ type, ‘additionalProperties’ must be explicitly set to false”.</li>
<li>8f4fd02: Fix Kiro agent loops. When a request ends on a tool result with no new user text, leave the current Kiro turn empty instead of synthesizing <code>continue</code> (or leaving the system prompt there). Kiro read that fabricated text as a fresh instruction and dropped the in-flight task, so tool-calling agents (opencode et al.) lost context immediately after the first tool call. The system prompt now rides the conversation’s first user turn so it still reaches the model.</li>
</ul>
]]></description>
      <pubDate>Fri, 11 Sep 2026 21:53:54 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.23.4</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.23.3]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-23-3</link>
      <description><![CDATA[<h3>🐛 Patch Changes</h3>
<ul>
<li>5f02d11: Leave model-specific provider corrections to Autofix. Keep provider-level protocol strips (OpenAI-only fields, OpenRouter and Ollama dialect fields) so traffic does not regress when Autofix is off.</li>
<li>07a962b: Fix Kiro tool calling. Forward OpenAI tool definitions as Kiro tool specifications, map assistant <code>tool_calls</code> and <code>tool</code> role messages into Kiro <code>toolUses</code>/<code>toolResults</code>, and return Kiro <code>toolUseEvent</code> frames as OpenAI <code>tool_calls</code> (with <code>finish_reason: tool_calls</code>) in both streaming and non-streaming responses.</li>
</ul>
]]></description>
      <pubDate>Fri, 11 Sep 2026 20:19:24 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.23.3</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.23.2]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-23-2</link>
      <description><![CDATA[<h3>🐛 Patch Changes</h3>
<ul>
<li>6b0bbc9: Fix DeepSeek thinking-mode 400s by replaying <code>reasoning_content</code> under the scoped session key and covering non-tool assistant turns in tool conversations.</li>
<li>340628f: Give repeated tool call ids unique values when converting a Chat Completions request to Responses, so reused ids no longer trip a strict Responses provider’s “Duplicate function_call_output for call_id”.</li>
<li>922fefd: Give repeated tool call ids unique values before forwarding a Responses history, so strict Responses providers stop rejecting resubmitted turns with “Duplicate function_call_output for call_id”.</li>
</ul>
]]></description>
      <pubDate>Fri, 11 Sep 2026 10:50:23 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.23.2</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.23.1]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-23-1</link>
      <description><![CDATA[<h3>🐛 Patch Changes</h3>
<ul>
<li>b2edaaa: Stop the internal CRM metrics feed timing out over long windows by dropping the provider breakdown it no longer needs.</li>
<li>3c8ffb6: Bill DeepSeek V4.1 Flash at the published peak/off-peak rates, and switch <code>deepseek-v4-pro</code> onto that card from 2026-09-14 04:00 UTC.</li>
<li>b60eeb4: Recognize n8n community node requests from User-Agent so request details can show the node as the caller.</li>
<li>3efbe8e: Keep streaming requests as success when the caller closes after a terminal provider event.</li>
</ul>
]]></description>
      <pubDate>Thu, 10 Sep 2026 10:29:11 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.23.1</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.23.0]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-23-0</link>
      <description><![CDATA[<h3>✨ Minor Changes</h3>
<ul>
<li>
<p>8076d88: Add OpenAI Codex as a coding-assistant agent platform. Codex shows up in the agent picker with a copy-ready <code>~/.codex/config.toml</code> setup panel that points Codex CLI and Desktop at Manifest over the Responses API (<code>wire_api = &quot;responses&quot;</code>) and authenticates with your <code>mnfst_</code> key. Two upstream-compatibility fixes make Codex work against non-OpenAI providers: Responses-API <code>role: &quot;developer&quot;</code> instruction messages are folded into <code>system</code>, and OpenAI-hosted tools (<code>web_search</code>, <code>file_search</code>, …) are dropped on the Chat Completions path. Native Responses upstreams keep developer roles and hosted tools untouched.</p>
<p>Preserve streamed function calls and namespaced client tools through non-OpenAI providers, including parallel calls and tool-result replay.</p>
</li>
<li>
<p>f1a50eb: Add an internal, secret-guarded feed of the users whose requests Autofix repaired, so outreach can reach them with their real repair counts.</p>
</li>
</ul>
<h3>🐛 Patch Changes</h3>
<ul>
<li>8ccecc8: Remove the $25 Gemini credit user-discovery banner and modal from the Overview page.</li>
</ul>
]]></description>
      <pubDate>Mon, 07 Sep 2026 09:59:26 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.23.0</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.22.0]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-22-0</link>
      <description><![CDATA[<h3>✨ Minor Changes</h3>
<ul>
<li>5b5eac7: Custom providers now have an alias, the readable prefix their models are published under in <code>/v1/models</code> (<code>vercel-ai-gateway/alibaba/qwen-3-14b</code> instead of <code>custom:&lt;uuid&gt;/alibaba/qwen-3-14b</code>). The alias defaults to the provider name, is editable at creation and later, and the proxy accepts both the alias form and the internal <code>custom:&lt;uuid&gt;/…</code> form in the <code>model</code> field, so existing client configs keep working. Existing custom providers are backfilled on upgrade.</li>
<li>e86c83a: Add an Automation harness category with n8n as its first platform, including n8n credential setup guidance in the harness creation flow.</li>
<li>142d082: Add <code>GET /api/v1/version</code> for self-hosted installs: reports the running version, the latest GitHub release, and changelog/upgrade links so the dashboard can show a “new version available” badge. Checks once a day, never in cloud mode, and can be turned off with <code>MANIFEST_UPDATE_CHECK_DISABLED=1</code>.</li>
</ul>
<h3>🐛 Patch Changes</h3>
<ul>
<li>ed8ac04: Adapt the provider connection page, the Overview KPI cards, and the app header to phone-sized screens</li>
</ul>
]]></description>
      <pubDate>Fri, 04 Sep 2026 09:43:37 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.22.0</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.21.1]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-21-1</link>
      <description><![CDATA[<h3>🐛 Patch Changes</h3>
<ul>
<li>b974b60: Send the <code>x-opencode-session</code> header on every OpenCode Go/Zen request — hashed per-conversation id when the caller provides <code>x-session-key</code>, stable per-agent fallback otherwise — ahead of OpenCode’s 09/06 enforcement deadline.</li>
<li>30ecba8: Stop listing OpenRouter <code>:batch</code> model variants in model discovery. These variants are only served through OpenRouter’s asynchronous Batch API and always fail with a 404 on the synchronous chat completions proxy.</li>
<li>51fa1b8: Security: bump fast-uri to 3.1.6 (fixes GHSA-5jgf-p345-68v8, GHSA-fph4-wmhf-6fwf, GHSA-f65p-4m7j-42xc, GHSA-jqff-g426-hqxp) and refresh Docker base images.</li>
</ul>
]]></description>
      <pubDate>Thu, 03 Sep 2026 11:31:53 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.21.1</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.21.0]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-21-0</link>
      <description><![CDATA[<h3>✨ Minor Changes</h3>
<ul>
<li>ae39136: Encrypt stored request recordings with the at-rest encryption key. Existing gzip-only recordings remain readable.</li>
<li>760e21c: Add MANIFEST_ENCRYPTION_KEY_PREVIOUS and a boot-time re-encryption pass so the at-rest key can be introduced or rotated without losing stored provider credentials.</li>
</ul>
<h3>🐛 Patch Changes</h3>
<ul>
<li>6b88368: Route an explicit bare model id to the subscription connection when both a subscription and an api_key connection of the same provider serve it, instead of silently metering the key.</li>
<li>39fdbe0: Add claude-fable-5-1 to the Anthropic subscription model catalog so Claude Max / Pro connections can serve it instead of silently falling through to an API key</li>
<li>478c64b: Strip inline base64 images from stored request recordings and Phoenix observations.</li>
<li>15998da: Remove the self-hosted loopback auto-login. Requests from 127.0.0.1 without a session are no longer treated as a signed-in local user.</li>
<li>686656a: The routing model picker now window-renders long catalogs so scrolling stays in place instead of lagging or jumping back to the top.</li>
<li>9534911: Scrub provider credentials from upstream error bodies before they are written to logs.</li>
<li>65e318b: Waiting-list claims now record where they were made (cloud or self-hosted) instead of a generic label, and a repeat claim updates the attribution to the latest origin.</li>
</ul>
]]></description>
      <pubDate>Wed, 02 Sep 2026 15:52:09 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.21.0</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.20.0]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-20-0</link>
      <description><![CDATA[<h3>✨ Minor Changes</h3>
<ul>
<li>b7d5368: New self-hosted users now see a one-time optional discovery form (name, email, project type, company size) right after signup, before reaching the dashboard. Submitting or skipping persists the choice, and the step never appears on Manifest Cloud or for existing users.</li>
<li>54a6356: The sidebar now announces that Manifest is becoming the self-healing layer for APIs, with a modal to join the waiting list using a prefilled but editable email. The old Autofix sidebar card is retired since notifications cover it.</li>
<li>b3bd178: Add grok-4.6 to the Grok subscription known-models list so xAI subscription connections can select it.</li>
<li>1f6e851: Limit the Grok subscription catalog to grok-4.6 and grok-4.5, the models Grok Build actually offers, and advertise their 500k context window.</li>
</ul>
<h3>🐛 Patch Changes</h3>
<ul>
<li>4de42c1: Open Anthropic subscription popups before the OAuth request so adding another account is not blocked by the browser.</li>
<li>597d183: Allow custom provider models to use streaming response mode.</li>
<li>4b824d7: Stop serializing tool_result images as base64 text on OpenAI-compatible routes (a single screenshot inflated to 100K+ input tokens and could overflow the provider context window), and return deterministic ChatGPT Codex context errors as HTTP 400 instead of 502.</li>
<li>e0105a2: Keep configured subscription context windows current without replacing provider values.</li>
<li>5cd26a1: Fix fallback drag-and-drop reordering below the second position.</li>
<li>3c5af56: Allow deployments to configure the per-tenant concurrent request limit with <code>MANIFEST_CONCURRENCY_MAX</code>.</li>
<li>29f0316: Keep Phoenix model remaps provider-native while preserving subscription routing and legacy Autofix compatibility.</li>
<li>eb0992c: Pin Better Auth to 1.6.25 to restore upgrades from populated 1.6 databases.</li>
<li>c86273b: Translate Anthropic user metadata when routing Messages requests to OpenAI.</li>
</ul>
]]></description>
      <pubDate>Tue, 01 Sep 2026 19:59:16 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.20.0</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.19.0]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-19-0</link>
      <description><![CDATA[<h3>✨ Minor Changes</h3>
<ul>
<li>44cb47b: Add Meta Model API support for Muse Spark 1.1, Muse Spark 1.2, and the Contributor route.</li>
<li>f83ba4f: Support the full Kimi Coding Plan model lineup for Moonshot subscriptions using the wire-format ids the api.kimi.com/coding endpoint expects: k3, k3-256k, kimi-for-coding, and kimi-for-coding-highspeed (the previous curated list sent kimi-k3, which the endpoint does not accept). Includes correct per-model context windows (1M for k3, 256k for the rest, with an explicit k3-256k entry so prefix matching cannot inherit the 1M window), curated input modalities (image+video for k3 and both kimi-for-coding variants, image-only for k3-256k), provider inference for the bare k3 ids, and quality-score overrides so the zero-priced k3 models are not mis-tiered as ultra-low in auto-routing.</li>
</ul>
<h3>🐛 Patch Changes</h3>
<ul>
<li>c40e550: Show the loading skeleton on the Agent Overview page while switching between agents, instead of leaving the previous agent’s data on screen until the new fetch resolves.</li>
<li>215f863: Rename the “AI agents” harness category to “AI agent” so it matches the other singular category labels</li>
<li>b27a578: Fix empty non-streaming responses for Bedrock GPT-5.x models (openai.gpt-5.6-luna/sol/terra, gpt-5.5, gpt-5.4). The non-streaming Responses handler assumed the upstream always returns SSE, but the Bedrock mantle /openai/v1/responses endpoint returns a plain JSON Responses object when stream:false, so content came back null with zero usage. The handler now detects the response shape and parses JSON Responses objects directly.</li>
<li>87475e2: Route Bedrock GPT-5.4, GPT-5.5, and GPT-5.6 models through the namespaced OpenAI Responses API path.</li>
<li>9b2704c: Keep OpenAI subscription requests streaming upstream when clients request buffered responses.</li>
<li>e821268: Bound dashboard query concurrency and reduce default PostgreSQL pool sizes.</li>
<li>6b4bf29: Cap the provider connections list at six and a half rows so the supported-provider catalog below it stays reachable. The card scrolls, and a “Show all” button expands it to full height.</li>
<li>b24ddcb: Calculate GitHub Copilot request costs from live token prices, including long-context tiers.</li>
<li>ba1d7b6: Prefer the cost a provider reports over any catalogue estimate. Manifest already read <code>usage.cost</code> from responses but only used it for subscription providers, so an exact figure from a gateway such as OpenRouter was captured and then discarded in favour of catalogue arithmetic. Local inference (Ollama, llama.cpp, LM Studio) now records a known <code>$0</code> instead of an unknown <code>null</code>.</li>
<li>2d5fb92: Bill DeepSeek V4 at its real peak/off-peak rates. Pricing entries can now carry time-of-day tiers (the models.dev <code>cost.tiers</code> time variant), cost calculation resolves them against the attempt timestamp, and a built-in seed supplies DeepSeek’s schedule until the catalog carries it.</li>
<li>ba1d7b6: Stop billing DeepSeek V4 peak rates on weekends: time-of-day pricing tiers now carry the weekdays they apply on, and DeepSeek’s 01:00-04:00 / 06:00-10:00 UTC peak windows are Monday-Friday only. Also prices <code>deepseek-v4-flash-vision-exp</code>, which billed at the stale flat catalog rate.</li>
<li>061d351: Continue fallback routing when a non-streaming Chat Completions provider returns no output.</li>
<li>3330dae: Refresh cached harness message counts when new requests arrive.</li>
<li>633455b: Show the Meta logo anywhere the dashboard renders provider icons.</li>
<li>ab1a544: Keep model parameter specs current: the modelparams catalog now refreshes hourly from the modelparams.dev API (ETag-conditional, validated before swap, stale-on-error) instead of being frozen at the bundled package version, and the bundled fallback is bumped to modelparams 0.0.40.</li>
<li>6b04574: Report modalities and capability flags for Ollama Cloud models. <code>ollama-cloud</code> was missing from the models.dev provider map, so every lookup missed and <code>GET /v1/models?capabilities=true</code> returned no <code>input_modalities</code>, <code>output_modalities</code>, or <code>features</code> for those models. Release tags that models.dev omits from its key (<code>:preview</code>, <code>:0813</code>) now fall back to the base model.</li>
<li>0259c8d: Show refreshed provider metadata immediately after manual model discovery.</li>
<li>ca21b97: Route OpenCode Go Responses-only models (Grok 4.5, GPT 5.6 Luna, Muse Spark) to <code>/v1/responses</code> instead of <code>/v1/chat/completions</code>.</li>
<li>7b09c5e: Report tool support and modalities for OpenRouter models. OpenRouter reached neither models.dev provider map, so all 323 published models declared only <code>stream</code> and never <code>tools</code>, and anything reasoning about capability — the dashboard picker, <code>/v1/models?capabilities=true</code>, agents choosing a remap target — treated every one of them as tool-incapable. OpenRouter now sits in the capability-only map, so its rates stay with its own live <code>/models</code> feed while models.dev supplies the modalities and tool-call flags that feed omits. Routing variants (<code>:free</code>, <code>:nitro</code>, <code>:batch</code>) resolve to their base model’s capabilities.</li>
<li>fe8677e: Cost each request with the price of the provider that actually served it. The pricing cache was keyed by model name alone, so every provider selling a model wrote to the same key and only the last one survived — 24 providers list <code>deepseek-v4-pro</code>, and DeepSeek is not the one that won. A request to DeepSeek’s own API was billed at OpenCode Zen’s resale rate, roughly 3.7x the real price on an agent-shaped token mix.</li>
<li>0d244d0: Fix Responses→chat-completions conversion emitting content-less <code>{&quot;role&quot;:&quot;user&quot;}</code> messages for <code>reasoning</code>, <code>item_reference</code>, and other non-message input items, which strict OpenAI-compatible providers rejected with 400/422.</li>
<li>bf7876a: Restore the $25 Gemini credit user-discovery banner and modal on the Overview page</li>
<li>6c29c71: Sanitize tool_use ids emitted on /v1/messages responses so non-Anthropic upstream ids (e.g. <code>Edit:0</code>) no longer poison session histories against Anthropic’s id pattern</li>
<li>ecb3c8d: Spell Autofix without a hyphen across the dashboard, notifications, and emails.</li>
<li>549bece: Stop advertising Gemini 3.1 Pro Preview and Gemini 3 Flash Preview for Google Code Assist subscriptions because the Code Assist API returns model-not-found responses for both routes.</li>
<li>7b09c5e: Report modalities and capability flags for Kilo, Pioneer, Cline Pass and Xiaomi models. These providers publish no modality data on their own <code>/models</code> endpoints, and models.dev may not price them: they list resold vendor models under the vendor’s own ID, so their rates would overwrite the real vendor price in the shared cache. A new capability-only provider map carries them, separate from the map that grants pricing authority.</li>
</ul>
]]></description>
      <pubDate>Thu, 27 Aug 2026 13:22:33 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.19.0</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.18.0]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-18-0</link>
      <description><![CDATA[<h2>Auto-fix now works on self-hosted installs</h2>
<p>Auto-fix repairs failing LLM requests before your fallback chain runs. When a provider rejects a request with a repairable error such as a malformed body, a renamed model, or an invalid parameter, Manifest sends the failed request to its healing service, receives a patched version, and resends it once. Until now this only worked on Manifest Cloud. Starting with v6.18.0 it works on self-hosted installs with zero configuration.</p>
<h3>How to enable it</h3>
<p>Upgrade to 6.18.0, then turn Auto-fix on per agent from the Settings page. The dashboard also shows a card listing agents that do not have it yet. It is off by default and requires a one-time consent per install.</p>
<pre><code class="hljs">docker pull manifestdotbuild/manifest:6.18.0
</code></pre>
<h3>What this sends to our servers</h3>
<p>Auto-fix is a hosted service. To repair a request, your install sends the failing request, including its message content, together with the provider’s error response, to the Auto-fix service. Your install is identified by an anonymous install id. Provider API keys and OAuth tokens are never sent. The details are in the <a href="https://manifest.build/privacy/" target="_blank" rel="noopener noreferrer">privacy policy</a> and the <a href="https://manifest.build/terms/" target="_blank" rel="noopener noreferrer">terms</a>.</p>
<h3>How to turn it off</h3>
<p>You can disable Auto-fix at any time per agent from the dashboard, or globally by setting <code>AUTOFIX_GLOBAL_ENABLED=false</code>. With that variable set, your install makes no calls to the Auto-fix service at all.</p>
<p>Questions and feedback: <a href="https://github.com/mnfst/manifest/discussions/2692" target="_blank" rel="noopener noreferrer">https://github.com/mnfst/manifest/discussions/2692</a></p>
<h3>✨ Minor Changes</h3>
<ul>
<li>f9eb3d8: Enable hosted Auto-fix for self-hosted installs: one-time consent with an option to turn it on for every existing agent, identified by the anonymous install id.</li>
<li>1e4cac8: Add opt-in Provider Attempt message recording with tenant-scoped durable filesystem or S3-compatible storage.</li>
</ul>
<h3>🐛 Patch Changes</h3>
<ul>
<li>1b633b6: Fix horizontal overflow in request drawer: error, autofix and fallback context cards now span full width, long error messages wrap instead of scrolling horizontally, and the tabs bar uses a muted background.</li>
<li>59f0e37: Enable automatic prompt caching for Anthropic API keys and OpenRouter Claude models.</li>
<li>205e25c: Auto-fix retries a healed model on the original provider transport when routing cannot resolve it (stale tenant model cache), instead of synthesizing a 502</li>
<li>31eaa75: Auto-fix always closes the evidence loop with Phoenix: a retry that dies mid-flight is reported as a synthetic 499 instead of leaving the heal attempt pending, and a dropped outcome report is resent before giving up</li>
<li>f299e4b: Route Bedrock OpenAI and Anthropic models through their compatible Responses and Messages API surfaces.</li>
<li>d040011: Stop blocking <code>/billing/status</code> and free-tier admission on the historical request-usage baseline scan; return the live counter immediately and finish the baseline in the background. Dashboards no longer wait on billing at all: the plan is resolved once at login via the new light <code>GET /api/v1/billing/plan</code> and read synchronously, so Overview, Global Overview, and the Requests log fetch each chart exactly once at the right range.</li>
<li>42a750b: Open routing model pickers from cached provider models and refresh stale catalogs only once per browser session each day.</li>
<li>95c17cf: Cache provider usage aggregates and coalesce live dashboard refreshes.</li>
<li>f8cbfd8: Classify Anthropic subscription extra-usage errors as billing without sending them to Auto-fix.</li>
<li>89de9cd: Keep the routing page mounted while refreshed model data loads.</li>
<li>060b42b: Preserve GPT-5.6 reasoning summaries on inbound Chat Completions: map the standard <code>reasoning_effort</code> param onto the Responses <code>reasoning</code> object (with <code>summary: auto</code>) for OpenAI endpoints so the model actually reasons, prefix-match Responses reasoning-summary delta events instead of an exact-name allowlist, and backfill <code>reasoning_content</code> from the terminal <code>response.completed</code>/<code>response.incomplete</code> output when no summary deltas streamed.</li>
<li>fb8beb2: Prepare DeepSeek reasoning tool turns once before each provider attempt.</li>
<li>6ac0908: Keep subscription model availability scoped to provider discovery and curated model lists.</li>
<li>3ed45a4: Enable message recording by default for newly created harnesses without changing existing harness settings.</li>
<li>e56afee: Forward explicit uncatalogued models to connected providers so real model errors can reach Auto-fix.</li>
<li>b4f85dd: Load paginated requests before aggregating attempts and refresh exact totals separately.</li>
<li>01a6966: Keep provider-cooldown skips and successful fallbacks as separate ordered Attempts in Request timelines.</li>
<li>934416d: Reject billing-enabled Cloud startup when request quota and process timezones differ.</li>
<li>b6b5db5: Add a Gemini Free provider with Gemini-scoped keys and a reusable managed free-provider
configuration. Use the existing managed gateway by default.</li>
<li>ca18aad: Prevent headerless Codex subscription requests from sharing token-wide cache affinity.</li>
<li>fa15665: Preserve native Responses and Anthropic Messages requests until cross-protocol conversion is required.</li>
<li>6d49e02: Record provider cache-write usage consistently across response formats.</li>
<li>06b0715: Make Auto-fix available to every tenant and retire the early-access waitlist.</li>
<li>cdb9028: Preserve OpenRouter input and output modalities during model discovery.</li>
<li>ecc29b6: Preserve redacted structured provider error details in proxy responses.</li>
<li>04710be: Simplify model parameter requests with a prefilled GitHub issue.</li>
<li>538d021: Improve request message drawer: markdown rendering, JSON syntax highlighting, gear icon for tool calls, wider drawer, Tools tab shows called and available tools separately.</li>
<li>e4b6e6c: Remove the legacy Auto-fix tenant rollout columns after general availability.</li>
<li>bd4b560: Honor requested model routes on the Anthropic Messages endpoint.</li>
<li>d1d2ea7: Scope proxy replay caches and routing momentum to their owning tenant and agent.</li>
<li>4c42c24: Scope provider prompt cache affinity to explicit tenant and agent sessions.</li>
<li>eaa4026: Show actual Provider Attempt tool calls instead of available tool definitions in recorded message details.</li>
<li>3f7f7cf: Show complete Gemini request messages, including system instructions.</li>
<li>1ee0634: Show recorded Gemini streaming responses in Provider Attempt message details.</li>
<li>a0834db: Record Manifest-authored routing failures, including provider cooldown skips, as failed Attempts so the Request drawer shows the full routing chain.</li>
<li>df19e6e: Keep the routing model picker open while refreshed model data loads.</li>
<li>064e462: Keep <code>reasoning_content</code> on OpenCode Zen requests. The reasoning dialect is now decided by the models.dev reasoning capability instead of a model-family regex, so Zen’s DeepSeek and codename reasoning models replay their thinking while Claude/GPT/Gemini/Grok slugs keep stripping it.</li>
</ul>
]]></description>
      <pubDate>Wed, 05 Aug 2026 14:34:23 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.18.0</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.17.1]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-17-1</link>
      <description><![CDATA[<h3>🐛 Patch Changes</h3>
<ul>
<li>ba9db64: In Cloud, replace repeated monthly request COUNT scans with an exact counter, lazy baseline, and fail-fast deploy cutover.</li>
</ul>
]]></description>
      <pubDate>Tue, 28 Jul 2026 14:34:26 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.17.1</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.17.0]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-17-0</link>
      <description><![CDATA[<h3>✨ Minor Changes</h3>
<ul>
<li>c7243c9: Auto-fix now gets a chance to heal requests naming an unavailable model (M302). When an explicit <code>model</code> resolves to no connected model and the agent has Auto-fix enabled, the failure is handed to the healing service as a synthetic model-not-found 404; a successful patch re-resolves routing and serves the repaired request, recording the real provider retry without inventing a provider attempt for the Manifest-blocked original. Agents without Auto-fix keep the friendly M302 response unchanged.</li>
<li>ca55f79: Expose model input and output costs in USD per million tokens from <code>GET /v1/models?cost=true</code>, while keeping the default response unchanged.</li>
<li>8b07c7f: Add Hugging Face Inference Providers as a first-class API-key provider with dynamic model discovery and OpenAI-compatible chat routing.</li>
<li>43cf52b: Invite users to a short discovery call: a one-time modal on the dashboard and a persistent banner offer $10 of Gemini credit for 30 minutes of feedback.</li>
</ul>
<h3>🐛 Patch Changes</h3>
<ul>
<li>f1e0dc7: Clean up request drawer when no provider attempts: hide the sidebar, show “-” for blank provider/model fields in attempt details, and show “No provider” in the attempt list.</li>
<li>ebf49fd: Add Claude Opus 5 to the Anthropic subscription model catalog.</li>
<li>6f649fc: Route streaming provider timeouts through configured fallbacks instead of returning M500.</li>
<li>24174dd: Report provider-native failed request parameters and response bodies directly to Phoenix diagnostics.</li>
<li>4e9a09c: Record streaming timeouts, protocol errors, incomplete streams, and caller cancellations with explicit terminal outcomes.</li>
<li>ed712ab: Refresh the model lists shown on provider tiles and in the README so they match the catalogs providers actually serve today</li>
<li>3caacde: Stop silently discarding successful requests from the Messages log. A heuristic
deduplicator treated two distinct successes as the same completion whenever they
hit the same agent and model with identical input/output token counts inside a
30s window — which an agent looping over one model satisfies routinely — and
dropped the second one. It was added to suppress double-writes when the old OTLP
telemetry pipeline and the proxy both recorded a request; that second writer has
since been removed, so every match it could still find was a false positive.</li>
<li>92430b1: Raise the per-provider credential safety ceiling from 5 to 50 connections.</li>
<li>cf5d6d8: Send native Google provider failures through Auto-fix with their exact request and response bodies.</li>
<li>cc0da80: When primary credentials fail to resolve, treat it as a failed attempt and enter the normal fallback chain instead of hard-failing with M100. Dead subscription OAuth (refresh/unwrap failed) now surfaces as M102 rather than the misleading “no API key” M100.</li>
<li>10a17a7: Add real-Postgres e2e coverage for the subscription OAuth credential lock (row-lock serialization, savepoint retry, lock_timeout bound).</li>
<li>cc0da80: Serialize OAuth subscription token refreshes with a DB row lock (<code>SELECT … FOR UPDATE</code> on <code>tenant_providers</code>) so multi-replica backends cannot rotate the same refresh token concurrently</li>
<li>a31dae6: Preserve configured reasoning effort when forwarding requests to native DeepSeek V4 models.</li>
<li>08404f2: Refresh provider model lists on the first routing model picker opened each day.</li>
<li>e3bb269: Self-hosting fixes. The install script now resumes instead of failing when the install directory already exists, so a run that died at <code>docker compose up</code> can be retried without losing the generated secret. Adds <code>--port</code> for installing on a port other than 2099, and generates <code>MANIFEST_ENCRYPTION_KEY</code> so provider credentials are no longer encrypted with the session-signing secret by default. The bundled compose file now forwards 16 documented variables it was silently dropping, including <code>TELEMETRY_ENDPOINT</code> and <code>MANIFEST_DISABLE_HSTS</code>. Blank values for <code>TELEMETRY_ENDPOINT</code> and the provider OAuth client IDs fall back to their defaults instead of being treated as an override.</li>
<li>a0bfab8: Security: bump transitive dependency <code>seroval</code> 1.5.1 → 1.5.6, fixing a critical deserialization advisory (<code>fromJSON()</code> Promise resolver type confusion, GHSA — patched in 1.5.3).</li>
<li>fd1dd88: Request-params snapshots are now derived from the raw request body: caller-sent parameters the model catalog has no spec for (scalars and small structured knobs, content excluded) are recorded, so failure evidence shows the exact knob a provider rejected instead of silently omitting it.</li>
<li>0a1ee2c: Scope a harness’s Overview to that harness’s own routing: requests where the caller pinned an explicit model in the request body (<code>direct</code>) no longer appear in its Recent Messages, charts, cost breakdown or summary cards. They stay fully visible on the global Overview and the Messages log, so total spend still reconciles.</li>
</ul>
]]></description>
      <pubDate>Tue, 28 Jul 2026 13:34:11 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.17.0</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.16.0]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-16-0</link>
      <description><![CDATA[<h3>✨ Minor Changes</h3>
<ul>
<li>c1e7717: Separate caller requests from provider attempts in storage, analytics, and the dashboard.</li>
<li>c1e7717: Expose provider-attempt and fallback aggregate analytics.</li>
<li>c7e0be7: Expose structured model capability metadata (input/output modalities, endpoint features, supported endpoints) from <code>GET /v1/models?capabilities=true</code>, keeping the default response unchanged, resolved through the same pipeline as the routing model picker. Curated modality facts identify <code>gpt-5.3-codex-spark</code> as text-only input and mainline ChatGPT subscription models as image-capable in both the API and the picker.</li>
</ul>
<h3>🐛 Patch Changes</h3>
<ul>
<li>c1e7717: Add an <code>auto_fixed</code> count to the <code>GET /api/v1/errors/breakdown</code> response (number of requests healed by Auto-fix in the window), plus a typed <code>getErrorBreakdown()</code> frontend API wrapper — so a dashboard can surface auto-fixed alongside errors.</li>
<li>2c81871: Report the exact provider-facing request body to Phoenix and retry healed bodies through the already-resolved transport without reapplying routing parameter merges or protocol translations.</li>
<li>1943921: Clarify offline tunnel errors and keep HTML error pages out of message records.</li>
<li>d24cd21: Extend the dashboard covering index with the columns the request-first dashboard reads (key label, status, request id) and add a partial index for the skills panel, restoring index-only scans on the Overview and Provider Usage endpoints for large installs</li>
<li>275fbfa: Limit request backfill refreshes to parents linked by the current batch.</li>
<li>4e6e74a: Treat empty ChatGPT Codex streams as provider failures so routing can use fallbacks. Self-hosted deployments can tune the semantic-output wait with <code>CODEX_SEMANTIC_OUTPUT_TIMEOUT_MS</code>.</li>
<li>ae1213e: Strip legacy <code>budget_tokens</code> from Anthropic adaptive thinking requests.</li>
<li>0b91ff3: Update OpenRouter logo to the current brand mark</li>
<li>79856bc: Block built-in local providers on Manifest Cloud.</li>
<li>26b0635: Prepare request history in the background before the request-level dashboard rollout.</li>
<li>aa767db: Refresh every matching provider connection so models returned by an API key are cached for each connected key.</li>
<li>8412baf: Surface interrupted upstream streams as terminal SSE errors.</li>
<li>6ec0136: Stop request-history tail sweeps after the initial backfill.</li>
</ul>
]]></description>
      <pubDate>Thu, 23 Jul 2026 09:26:52 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.16.0</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.15.2]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-15-2</link>
      <description><![CDATA[<h3>🐛 Patch Changes</h3>
<ul>
<li>2cdaee6: Fix auto routing resolving to a provider the agent never connected. A stale legacy auto-assigned (or promoted fallback) route now reuses the gateway’s provider-key lookup before it becomes primary, so an unconfigured provider is skipped without adding a separate model-discovery query. When nothing routable remains, the request returns the neutral <code>M101</code> “no providers configured” error. The proxy also treats the resolver’s fallback chain as definitive so a fallback promoted to primary is not retried as its own fallback.</li>
<li>9cf2571: Bump <code>modelparams</code> to 0.0.13 to pick up the new xAI Grok model parameter specs, including <code>grok-4.5</code> and subscription entries for the Grok subscription models.</li>
<li>6f1345c: Scope Auto-fix parameter repairs by provider authentication type.</li>
<li>d3d44e3: Add Kimi K3 (<code>cline-pass/kimi-k3</code>) to the ClinePass subscription’s known models list.</li>
<li>d8fb0b2: Fix Auto-fix attempt recording so no-patch consultations remain plain provider failures and failed patched retries keep their own outcome.</li>
<li>84b2112: The password reset page now detects when no email provider is configured and shows a clear notice (pointing to the authenticated Change Password flow) instead of silently pretending a reset link was sent. Self-hosted installs without an <code>EMAIL_PROVIDER</code> no longer dead-end here.</li>
<li>6519ea5: Add opt-in Sentry error monitoring. It stays disabled without a <code>SENTRY_DSN</code>; request contents, user data, tracing, and profiling remain off.</li>
<li>189a6eb: Sync the model parameter catalog to <code>modelparams@0.0.15</code>. Adds 24 new model routes (including a new <code>xiaomi</code> provider) with no schema changes — the param types, groups, and auth types are unchanged, so the bump is purely additive.</li>
<li>89c1757: Preserve xAI reasoning effort when forwarding Chat Completions requests.</li>
</ul>
]]></description>
      <pubDate>Mon, 20 Jul 2026 09:05:49 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.15.2</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.15.1]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-15-1</link>
      <description><![CDATA[<h3>🐛 Patch Changes</h3>
<ul>
<li>970ed63: Show newly created harnesses in the sidebar immediately.</li>
</ul>
]]></description>
      <pubDate>Sun, 12 Jul 2026 18:12:26 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.15.1</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.15.0]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-15-0</link>
      <description><![CDATA[<h3>✨ Minor Changes</h3>
<ul>
<li>5059bcb: Show every Manifest error in the Messages log, with a documented error code and a link to its docs page. Setup errors are no longer hidden from the log, malformed requests and Manifest internal errors are no longer blamed on your providers, and each rate limit now says which one fired.</li>
<li>4c5aed8: Report an agent’s request-side 4xx to Phoenix as evidence, carrying the full request body, for agents that have Auto-fix on. Opt-in via <code>AUTOFIX_REPORT_ALL_4XX=true</code>; nothing is stored in Manifest.</li>
</ul>
<h3>🐛 Patch Changes</h3>
<ul>
<li>e7fa0c1: Show a dedicated M302 “model not available” message when an explicit model ID is not available for the agent.</li>
<li>fccb0e2: Stop failing requests whose <code>model</code> isn’t a provider-qualified ID. A bare model name now routes to the connection carrying it, an unrecognized one falls back to configured routing instead of erroring with “no providers configured”, and a matching custom header tier again outranks the model an SDK names.</li>
<li>80f3cb5: Drop two unused indexes on <code>agent_messages</code>, reclaiming about 1 GB and removing an index write from every message insert.</li>
<li>09ecac0: Store the full provider error envelope on Auto-fix rows. They previously kept only the error’s message text, dropping its <code>type</code>, <code>param</code> and <code>code</code> — so re-reading such a row identified the failure differently from the live report of that same failure.</li>
<li>ff947a6: Open the HTTP port at boot instead of waiting for the provider model registry to load, so a slow database no longer stalls deploy healthchecks.</li>
<li>ca87016: Attribute public provider-token stats from recorded message providers before falling back to pricing metadata, so ChatGPT subscription usage is not grouped under API-key gateways that expose the same model name.</li>
<li>ec290d1: Add a Messages dashboard trigger filter for ordinary, fallback, and Auto-fix rows.</li>
</ul>
]]></description>
      <pubDate>Fri, 10 Jul 2026 14:58:38 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.15.0</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.14.0]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-14-0</link>
      <description><![CDATA[<h3>✨ Minor Changes</h3>
<ul>
<li>7dd4edc: Auto-fix now explains <em>why</em> a request was repaired. Phoenix returns a human-readable explanation with each heal (a one-line summary plus a plain sentence per edit), and the message Auto-fix card renders it — replacing the locally re-derived operation prose, which couldn’t describe most fixes. Falls back to the previous phrasing for older healed rows.</li>
<li>45420a1: Add Auto-fix: when an agent request fails with a fixable error (bad parameter, wrong format, unknown model), Manifest sends it to a healing service, applies the patched request, and retries before falling back. Opt-in per agent from the Routing page. Each healed request shows as two linked rows in the log: the failed original and the successful retry.</li>
<li>6442224: Report the Manifest tenant id to Phoenix on auto-fix heal requests, so failures are attributed to the tenant that hit them.</li>
<li>e5d4177: Add a post-auth Pro upgrade page and preserve upgrade intent through sign-in and sign-up.</li>
<li>29f6cc7: Add support for ClinePass subscription</li>
<li>e5d4177: Add Stripe billing (cloud only). Free plan request quota comes from shared plan limits. Pro price is read from the configured Stripe Price ID and includes unlimited requests. Free request limits are enforced on the proxy; over-limit requests return a 402 with an upgrade prompt. Self-hosted stays unlimited.</li>
</ul>
<h3>🐛 Patch Changes</h3>
<ul>
<li>5aeb106: Split user Limits, Manifest plan quota, and provider billing errors in message error taxonomy.</li>
<li>e5d4177: Route request-limit upgrade links to the post-auth upgrade page.</li>
<li>9514558: Reset the request quota window for the billing rollout.</li>
<li>e5d4177: Send Manifest billing emails for plan lifecycle changes and monthly request usage milestones, with usage-alert preferences.</li>
</ul>
]]></description>
      <pubDate>Thu, 09 Jul 2026 13:28:17 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.14.0</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.13.5]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-13-5</link>
      <description><![CDATA[<h3>🐛 Patch Changes</h3>
<ul>
<li>46a09a8: Fix waitlist sync reading email from session instead of empty tenant field, rename table to waitlist_claims</li>
</ul>
]]></description>
      <pubDate>Mon, 06 Jul 2026 09:15:27 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.13.5</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.13.4]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-13-4</link>
      <description><![CDATA[<h3>🐛 Patch Changes</h3>
<ul>
<li>
<p>b2b95f0: Preserve route metadata on streamed provider errors so message logs keep model and provider fields.</p>
</li>
<li>
<p>3dd41a1: fix: Gemini adapter — strip unsupported schema keywords, merge parallel tool responses, and inject missing thought signatures</p>
<p>The Gemini adapter now strips additional JSON Schema keywords that Google’s
<code>function_declarations</code> parameter schema rejects (<code>propertyNames</code>,
<code>uniqueItems</code>, <code>multipleOf</code>, <code>contains</code>/<code>minContains</code>/<code>maxContains</code>,
<code>prefixItems</code>, <code>additionalItems</code>, <code>readOnly</code>, <code>writeOnly</code>, <code>deprecated</code>,
and <code>$comment</code>/<code>$anchor</code>/<code>$dynamicRef</code>/<code>$dynamicAnchor</code>/<code>$vocabulary</code>).</p>
<p>It merges consecutive parallel tool responses into a single Gemini user turn,
matching Google’s requirement that N functionCall parts be answered by exactly
N functionResponse parts in one turn.</p>
<p>When a functionCall part has no <code>thought_signature</code> from the client or cache
(e.g. after a fallback from another model), the adapter now injects the
documented dummy signature so Gemini 3.x does not reject the request with
“Function call is missing a thought_signature”.</p>
</li>
<li>
<p>3b2bbd9: Self-hosted waitlist claims now sync to the cloud instance</p>
</li>
</ul>
]]></description>
      <pubDate>Sun, 05 Jul 2026 18:48:13 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.13.4</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.13.3]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-13-3</link>
      <description><![CDATA[<h3>🐛 Patch Changes</h3>
<ul>
<li>4e3fdde: Report Claude Opus 4.8 with a 1M context window for Anthropic subscription routing.</li>
<li>a0f5549: Preserve Responses reasoning summaries when Copilot responses-only models are used through Chat Completions.</li>
<li>aafa8d4: Record DeepSeek prompt cache hits from <code>prompt_cache_hit_tokens</code>.</li>
<li>6ce3a9d: Send Fireworks prompt cache keys from Manifest sessions.</li>
<li>4c9335e: Mark MiniMax Coding Plan subscriptions as prompt-cache capable.</li>
<li>ff48cfb: Send Moonshot prompt cache keys and record Kimi cached tokens.</li>
<li>884170d: Preserve author-prefixed Ollama model IDs when proxying requests.</li>
<li>a4fd8aa: Stop forwarding Anthropic-style thinking params to Ollama endpoints.</li>
<li>d329f57: Send Qwen cache-control markers and mark Qwen subscriptions cacheable.</li>
<li>09d904a: Remove the proxy message-count limit so long agent sessions are bounded by request body limits instead.</li>
<li>f1a5243: Mark Xiaomi MiMo Token Plan subscriptions as prompt-cache capable.</li>
<li>0cc5520: Mark Z.ai Coding Plan subscriptions as prompt-cache capable.</li>
</ul>
]]></description>
      <pubDate>Fri, 03 Jul 2026 12:35:06 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.13.3</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.13.2]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-13-2</link>
      <description><![CDATA[<h3>🐛 Patch Changes</h3>
<ul>
<li>7ca120b: Enable prompt caching support metadata for Anthropic subscriptions and send first-party subscription requests with Anthropic automatic cache control.</li>
<li>a46c3dc: Mark Gemini subscriptions as supporting prompt caching in shared provider metadata.</li>
<li>dc3c4a9: Send stable prompt cache keys to Mistral when callers do not provide one.</li>
<li>abec177: Mark OpenAI subscriptions as supporting prompt caching in shared provider metadata.</li>
<li>fb63274: Add OpenRouter prompt cache breakpoints for Gemini and Qwen model families.</li>
<li>22a15a4: Send prompt cache keys to xAI Responses requests from Manifest session affinity.</li>
</ul>
]]></description>
      <pubDate>Fri, 03 Jul 2026 11:56:58 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.13.2</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.13.1]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-13-1</link>
      <description><![CDATA[<h3>🐛 Patch Changes</h3>
<ul>
<li>fef144a: Show explicit SDK model overrides as Direct in Messages.</li>
<li>5572692: Update the shipped modal for OpenAI-compatible model discovery and direct model calls.</li>
<li>f8a5a5d: Lead README, Docker docs, and app meta tags with connecting agents to any provider instead of cost savings.</li>
</ul>
]]></description>
      <pubDate>Fri, 03 Jul 2026 10:07:39 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.13.1</guid>
    </item>
    <item>
      <title><![CDATA[Manifest v6.12.0]]></title>
      <link>https://manifest.build/llm-gateway/changelog/#v6-12-0</link>
      <description><![CDATA[<h3>✨ Minor Changes</h3>
<ul>
<li>8956f43: Stop storing full message request/response bodies. The Messages page keeps the per-message metadata view (status, model, provider, tokens, cost, routing, request headers, model parameters) but the recorded-body drawer is removed. A migration drops the <code>message_recordings</code> table and the unused <code>llm_calls</code> / <code>tool_executions</code> / <code>agent_logs</code> tables, significantly reducing database storage.</li>
</ul>
<h3>🐛 Patch Changes</h3>
<ul>
<li>b27a16e: Stop index migrations from deadlocking deploys against live traffic. The agent_messages index migrations used blocking DDL (plain CREATE/DROP INDEX), which takes an ACCESS EXCLUSIVE lock and deadlocked against live INSERTs while the previous deployment was still serving — failing every deploy and leaving the schema (and the dashboard perf work) unshipped. Those migrations now run CONCURRENTLY (SHARE UPDATE EXCLUSIVE, which does not conflict with writes) outside a transaction, and the migration runner uses per-migration (‘each’) transactions. The covering index also builds without a write stall.</li>
<li>88a8590: Add a timestamp-leading partial index for cross-tenant error scans. The Cloud control plane’s hourly error-insights rollup scans agent_messages by time window across all tenants, but the only error index was tenant-leading — so each run scanned every error row ever recorded (cost growing with total accumulated errors), which turned into multi-minute scans that saturated the database. A timestamp-leading partial index over error rows turns those into windowed range scans (measured 110ms/29k buffers down to 2ms/274 buffers on ~2M error rows). The index stays partial so write amplification on ingest is negligible.</li>
<li>29ee8be: Speed up the dashboard, message log, and provider/subscription lists for high-volume tenants. Distinct model/provider lookups now use an index skip-scan instead of scanning a tenant’s whole history, and the Overview derives its summary cards from the timeseries it already fetches (one fewer full-range scan). A covering index lets the Overview summary, timeseries, and cost-by-model aggregations run as index-only scans on every install (previously self-hosted had none). Postgres planner defaults (JIT off, larger work_mem, SSD-tuned random_page_cost) plus tighter autovacuum on agent_messages keep those aggregations off the heap, and a redundant index is dropped to lighten ingest.</li>
<li>46c88c2: Lazy-load hidden token and cost chart series on agent overview.</li>
<li>1591e53: Name the affected agent when provider disconnect is blocked by routing.</li>
<li>8fb56c1: Speed up provider disconnect route checks and ignore disabled route rows.</li>
<li>e266b8e: Support large OpenAI-compatible inline image requests on <code>/v1/*</code> with route-scoped body parsing, clear body-size errors, and redacted inline image data for routing and message recordings.</li>
<li>49ef687: Start retiring complexity and task-specific routing. Agents that never configured them now see only Default and Custom routing, so the routing page is simpler for new and unconfigured agents. Agents already using complexity tiers or task-specific categories keep everything working and see a banner explaining the change.</li>
<li>0501bb0: Improve the agent routing empty state contrast in dark mode.</li>
<li>5eec940: Stop deploys from deadlocking on database migrations. Migrations ran on every replica’s boot over PgBouncer, so multi-replica deploys with pending migrations could deadlock acquiring locks on agent_messages and fail. Migrations now run once in a pre-deploy step over the direct connection (with an advisory lock so overlapping deploys serialize), before any replica starts. App-boot migration is now configurable (RUN_MIGRATIONS_ON_BOOT, default on for dev and single-instance self-hosted). The migration runner also uses the committed migration list instead of a compiled-file glob, so stale build artifacts from deleted migrations can never run.</li>
<li>100a3b4: Run database migrations under a Postgres advisory lock so concurrent runners serialize instead of deadlocking. When more than one process ran migrations at once (overlapping deployments, or replicas across regions), they could deadlock acquiring DDL locks on the high-churn agent_messages table and fail the deploy. The deploy migration step now takes a single advisory lock over the direct migration connection: the first runner applies every pending migration, the rest wait and then find nothing pending. Single-instance and self-hosted deploys are unaffected.</li>
<li>ca62d7b: Clarify Xiaomi MiMo Basic API-key setup by linking directly to the API Keys console and validating the documented <code>sk-xxxxx</code> pay-as-you-go key shape separately from Token Plan <code>tp-</code> credentials.</li>
</ul>
]]></description>
      <pubDate>Wed, 24 Jun 2026 07:39:04 GMT</pubDate>
      <guid isPermaLink="false">manifest@6.12.0</guid>
    </item>
  </channel>
</rss>