From 9d01bc50f35c1ff0d79c2b3992c2532af3dbbeeb Mon Sep 17 00:00:00 2001 From: Omar Black Date: Sat, 22 Aug 2026 22:59:26 +0100 Subject: [PATCH 1/3] Add BlazeRail to the Anthropic, Gemini and Kimi gateway families BlazeRail (https://blazerail.com) is an OpenAI-compatible AI gateway routing 220+ text models and 1,000+ media endpoints, billed at invoiced vendor rates. Entries follow the existing config conventions: - wireFormat 'openai' via /v1/chat/completions on all three families (the gateway translates Anthropic/Gemini SSE to OpenAI chunks natively; no gateway-through-gateway proxying) - anthropic/claude-haiku-4.5, google/gemini-3.6-flash and moonshotai/kimi-k3 are BlazeRail's public catalog ids for the exact target models - gemini-3.6-flash is served by exactly one upstream (Google AI Studio direct), so that route is deterministic without a provider pin; claude-haiku-4.5 and kimi-k3 are multi-upstream and routed by measured health/price, which is the product behavior being benchmarked (same posture as other multi-upstream participants) All three entries validated against the live API with this harness (BENCHSDK_NO_INGEST=1, --provider blazerail): 20/20 iterations per family, zero failures. Happy to provide an API key with standing credit for the weekly runs - contact info@deltaedgecapital.co.uk or the X account that pinged you. --- benchmarks/ai-gateway/providers-gemini.ts | 15 +++++++++++++++ benchmarks/ai-gateway/providers-kimi.ts | 16 ++++++++++++++++ benchmarks/ai-gateway/providers.ts | 15 +++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/benchmarks/ai-gateway/providers-gemini.ts b/benchmarks/ai-gateway/providers-gemini.ts index 80e8b313..5ede6f04 100644 --- a/benchmarks/ai-gateway/providers-gemini.ts +++ b/benchmarks/ai-gateway/providers-gemini.ts @@ -203,6 +203,21 @@ export const providers: AIGatewayProviderConfig[] = [ buf.match(/"provider"\s*:\s*"([^"]+)"/)?.[1] ?? buf.match(/"model"\s*:\s*"([^"/]+)\/[^"]*"/)?.[1], }, + { + // BlazeRail: OpenAI-compatible /v1/chat/completions surface, same shape + // as the llmgateway entry. google/gemini-3.6-flash is served by exactly + // one upstream on BlazeRail (Google AI Studio direct), so the route is + // deterministic without a provider-order pin. + name: 'blazerail', + requiredEnvVars: ['BLAZERAIL_API_KEY'], + wireFormat: 'openai', + model: 'google/gemini-3.6-flash', + host: 'api.blazerail.com', + path: '/v1/chat/completions', + buildHeaders: () => ({ + Authorization: `Bearer ${process.env.BLAZERAIL_API_KEY}`, + }), + }, { // No-gateway baseline/control. Gemini's native `streamGenerateContent` // endpoint (not the OpenAI-compatibility shim Google also exposes) — diff --git a/benchmarks/ai-gateway/providers-kimi.ts b/benchmarks/ai-gateway/providers-kimi.ts index 5d2553cb..64204a7d 100644 --- a/benchmarks/ai-gateway/providers-kimi.ts +++ b/benchmarks/ai-gateway/providers-kimi.ts @@ -207,6 +207,22 @@ export const providers: AIGatewayProviderConfig[] = [ }, reasoningCountsAsFirstToken: true, }, + { + // BlazeRail: OpenAI-compatible /v1/chat/completions. moonshotai/kimi-k3 is + // BlazeRail-s public id for the model; routing picks among its five live + // upstreams (CrofAI, DeepInfra, Wafer, Moonshot AI, Modal) by measured + // latency and price, which is the product behavior being benchmarked - + // same posture as the other multi-upstream gateways in this family. + name: 'blazerail', + requiredEnvVars: ['BLAZERAIL_API_KEY'], + wireFormat: 'openai', + model: 'moonshotai/kimi-k3', + host: 'api.blazerail.com', + path: '/v1/chat/completions', + buildHeaders: () => ({ + Authorization: `Bearer ${process.env.BLAZERAIL_API_KEY}`, + }), + }, { name: 'novita', requiredEnvVars: ['NOVITA_API_KEY'], diff --git a/benchmarks/ai-gateway/providers.ts b/benchmarks/ai-gateway/providers.ts index bdf6554f..2dd6de56 100644 --- a/benchmarks/ai-gateway/providers.ts +++ b/benchmarks/ai-gateway/providers.ts @@ -90,6 +90,21 @@ export const providers: AIGatewayProviderConfig[] = [ ...(process.env.CLOUDFLARE_AI_GATEWAY_TOKEN ? { 'cf-aig-authorization': `Bearer ${process.env.CLOUDFLARE_AI_GATEWAY_TOKEN}` } : {}), }), }, + { + // BlazeRail: OpenAI-compatible /v1/chat/completions; the gateway translates + // Anthropic-'s native SSE to OpenAI chunks internally. anthropic/claude-haiku-4.5 + // is BlazeRail-s public id; it is served by Anthropic direct and DeepInfra, + // routed by measured health/price - the product behavior being benchmarked. + name: 'blazerail', + requiredEnvVars: ['BLAZERAIL_API_KEY'], + wireFormat: 'openai', + model: 'anthropic/claude-haiku-4.5', + host: 'api.blazerail.com', + path: '/v1/chat/completions', + buildHeaders: () => ({ + Authorization: `Bearer ${process.env.BLAZERAIL_API_KEY}`, + }), + }, { // `anthropic/` here is LLM Gateway's provider-pinning syntax (provider/model), // so requests route to Anthropic itself — the same underlying model and From 29c8c5d5406e8ab6fd44e4cce8328977fe042304 Mon Sep 17 00:00:00 2001 From: david Date: Mon, 24 Aug 2026 18:04:15 +0000 Subject: [PATCH 2/3] BlazeRail: extract resolvedProvider and align Kimi entry - Add extractResolvedProvider to all three BlazeRail provider blocks so the actual upstream is visible in results. - Add Kimi-family overrides to the BlazeRail entry: extraBody { temperature: undefined } and reasoningCountsAsFirstToken: true, matching every other openai-format Kimi participant. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- benchmarks/ai-gateway/providers-gemini.ts | 4 ++++ benchmarks/ai-gateway/providers-kimi.ts | 8 ++++++++ benchmarks/ai-gateway/providers.ts | 4 ++++ 3 files changed, 16 insertions(+) diff --git a/benchmarks/ai-gateway/providers-gemini.ts b/benchmarks/ai-gateway/providers-gemini.ts index 5ede6f04..9b114005 100644 --- a/benchmarks/ai-gateway/providers-gemini.ts +++ b/benchmarks/ai-gateway/providers-gemini.ts @@ -217,6 +217,10 @@ export const providers: AIGatewayProviderConfig[] = [ buildHeaders: () => ({ Authorization: `Bearer ${process.env.BLAZERAIL_API_KEY}`, }), + extractResolvedProvider: (buf) => + buf.match(/"resolvedProvider"\s*:\s*"([^"]+)"/)?.[1] ?? + buf.match(/"provider"\s*:\s*"([^"]+)"/)?.[1] ?? + buf.match(/"model"\s*:\s*"([^"/]+)\/[^"]*"/)?.[1], }, { // No-gateway baseline/control. Gemini's native `streamGenerateContent` diff --git a/benchmarks/ai-gateway/providers-kimi.ts b/benchmarks/ai-gateway/providers-kimi.ts index 64204a7d..d47fc047 100644 --- a/benchmarks/ai-gateway/providers-kimi.ts +++ b/benchmarks/ai-gateway/providers-kimi.ts @@ -222,6 +222,14 @@ export const providers: AIGatewayProviderConfig[] = [ buildHeaders: () => ({ Authorization: `Bearer ${process.env.BLAZERAIL_API_KEY}`, }), + extraBody: { + temperature: undefined, + }, + extractResolvedProvider: (buf) => + buf.match(/"resolvedProvider"\s*:\s*"([^"]+)"/)?.[1] ?? + buf.match(/"provider"\s*:\s*"([^"]+)"/)?.[1] ?? + buf.match(/"model"\s*:\s*"([^"/]+)\/[^"]*"/)?.[1], + reasoningCountsAsFirstToken: true, }, { name: 'novita', diff --git a/benchmarks/ai-gateway/providers.ts b/benchmarks/ai-gateway/providers.ts index 2dd6de56..7a5c7809 100644 --- a/benchmarks/ai-gateway/providers.ts +++ b/benchmarks/ai-gateway/providers.ts @@ -104,6 +104,10 @@ export const providers: AIGatewayProviderConfig[] = [ buildHeaders: () => ({ Authorization: `Bearer ${process.env.BLAZERAIL_API_KEY}`, }), + extractResolvedProvider: (buf) => + buf.match(/"resolvedProvider"\s*:\s*"([^"]+)"/)?.[1] ?? + buf.match(/"provider"\s*:\s*"([^"]+)"/)?.[1] ?? + buf.match(/"model"\s*:\s*"([^"/]+)\/[^"]*"/)?.[1], }, { // `anthropic/` here is LLM Gateway's provider-pinning syntax (provider/model), From adf1e21c2ddd81a6a5b95681edf6cdcab10cc8f6 Mon Sep 17 00:00:00 2001 From: david Date: Mon, 24 Aug 2026 18:13:23 +0000 Subject: [PATCH 3/3] Add BLAZERAIL_API_KEY to env example and provider-vars - Regenerate benchmarks/scripts/provider-vars.json from provider configs. - Add BLAZERAIL_API_KEY to benchmarks/.env.example. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- benchmarks/.env.example | 1 + benchmarks/scripts/provider-vars.json | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/benchmarks/.env.example b/benchmarks/.env.example index fa6275be..34924dd6 100644 --- a/benchmarks/.env.example +++ b/benchmarks/.env.example @@ -167,3 +167,4 @@ NEON_AI_GATEWAY_BASE_URL=your_neon_ai_gateway_base_url NEON_AI_GATEWAY_TOKEN=your_neon_ai_gateway_token NGROK_AI_GATEWAY_API_KEY=your_ngrok_ai_gateway_api_key LLMAPI_API_KEY=your_llmapi_api_key +BLAZERAIL_API_KEY=your_blazerail_api_key diff --git a/benchmarks/scripts/provider-vars.json b/benchmarks/scripts/provider-vars.json index f92bab1e..570437be 100644 --- a/benchmarks/scripts/provider-vars.json +++ b/benchmarks/scripts/provider-vars.json @@ -254,6 +254,9 @@ "CLOUDFLARE_AI_GATEWAY_TOKEN", "ANTHROPIC_API_KEY" ], + "blazerail": [ + "BLAZERAIL_API_KEY" + ], "llmgateway": [ "LLM_GATEWAY_API_KEY" ], @@ -348,6 +351,9 @@ "llmapi": [ "LLMAPI_API_KEY" ], + "blazerail": [ + "BLAZERAIL_API_KEY" + ], "gemini-direct": [ "GEMINI_API_KEY" ] @@ -370,6 +376,9 @@ "concentrate-ai-gateway": [ "CONCENTRATE_AI_GATEWAY_API_KEY" ], + "blazerail": [ + "BLAZERAIL_API_KEY" + ], "novita": [ "NOVITA_API_KEY" ],