OctaFuse Gateway 2.12.0: Provider Account Management, Routing Workspace & Multimodal Endpoint Discovery
OctaFuse Gateway 2.12.0 adds supplier account categorization with live quota queries, a searchable routing workspace showing sticky binding counts, multimodal model endpoint discovery via /v1/models with protocol and operation fields, responsive mobile admin UI, and extends streaming idle timeout from 30 to 90 seconds.
01 | Supplier Management Optimization: Account Categorization & Quota Queries
When multiple accounts exist for the same platform, configuring routes or debugging logs requires distinguishing which account is used. Accounts can now be labeled with an alias (e.g., two ZenMux accounts named "Production" and "Testing"). The alias must be unique within the same provider type; different platforms may reuse the same alias. Adding another account for the same platform is done by importing the platform again from the catalog — the system creates a new account and appends a sequence number on name collision.
Editing only the type or alias no longer requires re-entering the API key. The edit dialog hides the key by default, revealing it only when needed.
No Need to Check Balances Platform by Platform
When a request fails, operators can click "Quota" on the supplier card to see real-time balance or period usage fetched directly from the upstream provider. Results are displayed only and not stored in the Gateway database. Pay-as-you-go accounts show remaining balance; subscription accounts may show usage over 5-hour, weekly, or monthly periods with reset times, depending on what the platform exposes.
Initial supported providers: DeepSeek, Moonshot AI, SiliconFlow (including international), OpenRouter, Novita AI, DeepInfra, StepFun (阶跃星辰), Vercel AI Gateway, OpenCode Go, MiniMax Token Plan, and Zhipu (智谱) and Z.AI GLM Coding Plan.
02 | Routing Configuration Workspace Upgrade
Finding routes tied to a specific model, upstream model name, or provider used to require manual scanning. The routing page now offers a search box and a provider-type filter. Display density can be toggled between "Compact" and "Detailed"; the preference persists per browser.
With sticky routing enabled, each route card now shows the total binding count for the route group and the effective binding count per upstream target. Hovering reveals the intra-group proportion. Disabling a route triggers a warning if unexpired bindings remain. These counts reflect valid binding relationships, not real-time online users, concurrency, or request volume.
03 | Model Interface Enhancements: Explicit Entry Protocols & Endpoints
Integrating models into portals, SDKs, or clients requires knowing which endpoint to call: Chat Completions vs. Responses for text, speech recognition vs. synthesis for audio. Hard-coding this in clients creates maintenance overhead when models or routes change. Since 2.10.0, GET /v1/models returned text entry points. Version 2.12.0 adds image generation, image editing, speech-to-text, and text-to-speech, and makes the public catalog endpoint GET /catalog/models return the same inbound structure. Clients can read protocol (e.g., "openai") and operation (e.g., "audio.speech") to dynamically select supported endpoints.
Example response for a TTS model (other fields omitted):
{
"id": "example-tts",
"model_info": {
"inbound": [
{
"protocol": "openai",
"operation": "audio.speech"
}
]
}
}A client recognizing openai protocol with audio.speech operation knows to call POST /v1/audio/speech. Portals can display a "Text-to-Speech" label instead of guessing from the model name.
These entries come from active routes in the currently visible route groups. Clients must still implement the corresponding protocols and choose which entry to use; the return order does not imply priority.
To query image or audio models, pass a kind parameter: kind=image for image models, kind=audio for speech-to-text and text-to-speech, kind=all for all types. Omitting the parameter returns only text models (backward compatible).
Refreshing the model list no longer consumes user or API key RPM. Even if rate-limited or quota-exhausted, a valid API key can still fetch the list, preserving model selection and capability display.
04 | Responsive UI Support
The admin console now adapts to narrow screens. On phones or tablets, navigation collapses into a side drawer, secondary filters expand on demand, and the dashboard, provider import, model list, playground, and simulator are usable for common tasks like checking status, adjusting routes, or verifying requests.
05 | Other Updates
Streaming Debug : Fixed Playground and Simulator scrolling the entire page when receiving streamed content; now only the result area scrolls.
Long Streaming Requests : Default idle timeout between upstream data chunks extended from 30 seconds to 90 seconds, reducing interruptions during mid-generation reasoning or retrieval pauses.
Model Info : model_info.pricing_profile now returns an object or null directly (no JSON parsing needed). Empty vendor fields uniformly return other.
Config Display : Fixed placeholder display issue in Gemini endpoint examples.
New Model Presets : Added MiMo series: mimo-v2.6-pro, mimo-v2.6-flash, mimo-v2.6-pro-ultraspeed; also gpt-6-sol, gpt-6-luna, claude-opus-5-5, grok-4.7. Presets include USD/CNY pricing. Importing does not overwrite existing models with the same ID.
Upgrading to 2.12.0
Back up the database.
Run the new migration 0029_provider_kind.
Update Proxy and Admin to 2.12.0.
For D1 deployments: the migration rebuilds and copies provider, route, and sticky binding tables; avoid writes during this process.
Post-upgrade checks:
Manage existing provider accounts : Existing routes continue to work, but accounts remain uncategorized. Edit each account to select the correct type; only then can you filter by type. Supported platforms will show quota after a valid key is configured.
Update model list integration code : If you previously applied JSON.parse to model_info.pricing_profile, change to read the object directly and handle null.
Review streaming timeout configuration : Existing STREAM_IDLE_TIMEOUT_MS values remain effective; unconfigured instances now default to 90 seconds.
Finally, test a quota query, route filter, model list endpoint invocation, and a long streaming request.
Full changelog and upgrade notes: GitHub Release v2.12.0 (https://github.com/OctaFuse/octafuse-gateway/releases/tag/v2.12.0) and CHANGELOG (https://github.com/OctaFuse/octafuse-gateway/blob/v2.12.0/CHANGELOG.md).
OctaFuse website: https://octafuse.dev
GitHub repository: https://github.com/OctaFuse/octafuse-gateway
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Programmer DD
A tinkering programmer and author of "Spring Cloud Microservices in Action"
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
