<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: CodeKing</title>
    <description>The latest articles on DEV Community by CodeKing (@codekingai).</description>
    <link>https://dev.to/codekingai</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3843914%2Fedc4fbb1-edd3-4c7d-9c94-e2b13dbc1af0.jpg</url>
      <title>DEV Community: CodeKing</title>
      <link>https://dev.to/codekingai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/codekingai"/>
    <language>en</language>
    <item>
      <title>"My Company Has Azure OpenAI. My AI Coding Tools Had No Idea What to Do With It."</title>
      <dc:creator>CodeKing</dc:creator>
      <pubDate>Wed, 15 Apr 2026 03:03:11 +0000</pubDate>
      <link>https://dev.to/codekingai/my-company-has-azure-openai-my-ai-coding-tools-had-no-idea-what-to-do-with-it-26ik</link>
      <guid>https://dev.to/codekingai/my-company-has-azure-openai-my-ai-coding-tools-had-no-idea-what-to-do-with-it-26ik</guid>
      <description>&lt;p&gt;My company's Azure OpenAI deployment has been running for eight months. Enterprise-grade security controls, compliance logging, the whole setup. Every team that needs AI API access routes through it.&lt;/p&gt;

&lt;p&gt;Every team except the ones using AI coding tools.&lt;/p&gt;

&lt;p&gt;Claude Code talks Anthropic protocol. Codex CLI talks OpenAI protocol, but to the public endpoint. Azure OpenAI is a different enough target that just pointing the tools at it doesn't work — and the error messages are not helpful when it silently fails.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes Azure OpenAI Different
&lt;/h2&gt;

&lt;p&gt;If you've only used the direct OpenAI or Anthropic APIs, Azure OpenAI looks similar at first glance. It's still a REST API, still returns completions. But the differences compound quickly when you're trying to make a proxy work:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Endpoint format is different.&lt;/strong&gt; Instead of &lt;code&gt;api.openai.com&lt;/code&gt;, you have a resource-specific URL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://your-resource-name.openai.azure.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Models are replaced by deployments.&lt;/strong&gt; You don't call &lt;code&gt;gpt-4o&lt;/code&gt;. You call a deployment — an instance you created in the Azure portal that points to a model. The deployment name is arbitrary (&lt;code&gt;my-gpt4-deployment&lt;/code&gt;, &lt;code&gt;prod-coding-model&lt;/code&gt;). Your code has to know it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API version is required.&lt;/strong&gt; Every request needs a &lt;code&gt;?api-version=2024-10-21&lt;/code&gt; query parameter (or similar). Miss it and the request fails with a cryptic error.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JSON Schema rules are stricter.&lt;/strong&gt; Azure OpenAI's tool definition validation rejects things the direct OpenAI API accepts — &lt;code&gt;$schema&lt;/code&gt;, &lt;code&gt;$id&lt;/code&gt;, &lt;code&gt;definitions&lt;/code&gt; fields, &lt;code&gt;const&lt;/code&gt; values. If your tool definitions contain any of these (and Claude Code's do), requests fail silently.&lt;/p&gt;

&lt;p&gt;That last one took me an embarrassingly long time to figure out.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Translation Problem
&lt;/h2&gt;

&lt;p&gt;Claude Code sends requests in Anthropic's Messages API format. Azure OpenAI accepts OpenAI's Responses API format. Between those two surfaces there's:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A message format translation (Anthropic content blocks → OpenAI messages)&lt;/li&gt;
&lt;li&gt;Tool definition translation (Anthropic tool schema → Azure-safe OpenAI tool schema)&lt;/li&gt;
&lt;li&gt;Response translation back (OpenAI completion → Anthropic-format streaming response)&lt;/li&gt;
&lt;li&gt;Schema sanitization that strips the fields Azure rejects and converts &lt;code&gt;const&lt;/code&gt; to &lt;code&gt;enum&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The sanitization step is the one that actually makes things work. Claude Code includes hosted tool definitions with JSON Schema features that Azure's stricter validator rejects. The proxy strips &lt;code&gt;$schema&lt;/code&gt;, &lt;code&gt;$id&lt;/code&gt;, &lt;code&gt;$defs&lt;/code&gt;, &lt;code&gt;$comment&lt;/code&gt;, &lt;code&gt;definitions&lt;/code&gt;, and &lt;code&gt;examples&lt;/code&gt; fields, and converts &lt;code&gt;const: value&lt;/code&gt; to &lt;code&gt;enum: [value]&lt;/code&gt; before forwarding. Azure accepts the result.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting It Up in CliGate
&lt;/h2&gt;

&lt;p&gt;CliGate now supports Azure OpenAI as a native key type. In the API Keys tab, add a new key and select &lt;strong&gt;Azure OpenAI&lt;/strong&gt; as the provider. You'll fill in four fields:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;API Key&lt;/strong&gt; — your Azure OpenAI resource key from the Azure portal&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Base URL&lt;/strong&gt; — &lt;code&gt;https://your-resource-name.openai.azure.com&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment Name&lt;/strong&gt; — the name you gave your deployment in Azure (e.g. &lt;code&gt;gpt4o-prod&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Version&lt;/strong&gt; — e.g. &lt;code&gt;2024-10-21&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once saved, that key appears in your routing options. You can assign it as the backend for Claude Code, Codex CLI, or the chat UI — or let the router pick it based on priority settings.&lt;/p&gt;

&lt;p&gt;From Claude Code's perspective, nothing changes. You're still hitting &lt;code&gt;localhost:8081&lt;/code&gt; with Anthropic credentials. The proxy handles the translation, the schema cleaning, the deployment name injection, and the API version parameter. The response comes back in valid Anthropic streaming format.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters for Enterprise Teams
&lt;/h2&gt;

&lt;p&gt;The practical upshot: your AI coding tools now route through your company's Azure deployment.&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requests flow through your company's network controls and compliance logging&lt;/li&gt;
&lt;li&gt;You're not using personal API keys or personal accounts for work&lt;/li&gt;
&lt;li&gt;Usage appears in your Azure portal dashboards alongside other company AI usage&lt;/li&gt;
&lt;li&gt;The content controls and safety policies your company configured in Azure apply&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For teams where "just use the public API with your personal key" isn't an acceptable answer — because it usually isn't on enterprise projects — this closes a gap that's been annoying for a while.&lt;/p&gt;

&lt;h2&gt;
  
  
  One Thing to Watch
&lt;/h2&gt;

&lt;p&gt;Azure OpenAI deployments have their own rate limits, set at the deployment level in the Azure portal. If you're routing multiple AI coding tools through a single deployment, you can hit those limits quickly during intensive sessions. The proxy handles failover to other keys if you've configured them, but it's worth sizing your deployment quota for the team's expected usage before you roll this out.&lt;/p&gt;




&lt;p&gt;The Azure OpenAI provider in CliGate is part of the open-source release: &lt;a href="https://github.com/codeking-ai/cligate" rel="noopener noreferrer"&gt;github.com/codeking-ai/cligate&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're in an enterprise setup and have gotten AI coding tools working through your company's infrastructure — curious how you handled it. Azure, on-prem, something else?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>"How I Route claude-sonnet-4-6 to GPT-5 Codex — Without Claude Code Knowing the Difference"</title>
      <dc:creator>CodeKing</dc:creator>
      <pubDate>Tue, 14 Apr 2026 02:37:28 +0000</pubDate>
      <link>https://dev.to/codekingai/how-i-route-claude-sonnet-4-6-to-gpt-5-codex-without-claude-code-knowing-the-difference-48n7</link>
      <guid>https://dev.to/codekingai/how-i-route-claude-sonnet-4-6-to-gpt-5-codex-without-claude-code-knowing-the-difference-48n7</guid>
      <description>&lt;p&gt;Claude Code always sends &lt;code&gt;claude-sonnet-4-6&lt;/code&gt; in the request body. That string goes to whatever base URL you've configured.&lt;/p&gt;

&lt;p&gt;Here's what most people don't realize: that string doesn't have to end up at Anthropic.&lt;/p&gt;

&lt;p&gt;It doesn't even have to end up at a Claude model.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Model Name Is a Routing Hint, Not a Destination
&lt;/h2&gt;

&lt;p&gt;When Claude Code makes a request, it sends something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"claude-sonnet-4-6"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"messages"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"stream"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If your &lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt; points to a local proxy instead of &lt;code&gt;api.anthropic.com&lt;/code&gt;, that proxy receives the request first. It can read the model field, and decide what to do with it.&lt;/p&gt;

&lt;p&gt;That decision is entirely up to you.&lt;/p&gt;

&lt;h2&gt;
  
  
  What CliGate Does With It
&lt;/h2&gt;

&lt;p&gt;CliGate is a local proxy that sits at &lt;code&gt;localhost:8081&lt;/code&gt;. Every AI coding tool I use — Claude Code, Codex CLI, Gemini CLI — routes through it.&lt;/p&gt;

&lt;p&gt;When a request for &lt;code&gt;claude-sonnet-4-6&lt;/code&gt; arrives, CliGate checks its routing table:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;claude-sonnet-4-6  →  ChatGPT account pool  →  GPT-5.2 Codex
claude-opus-4-6    →  ChatGPT account pool  →  GPT-5.3 Codex
claude-haiku-4-5   →  Kilo AI (free)        →  DeepSeek R1 / Qwen3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude Code asked for &lt;code&gt;claude-sonnet-4-6&lt;/code&gt;. What actually handles the request is GPT-5.2 Codex, via a rotating pool of ChatGPT accounts. The response comes back in Anthropic's response format. Claude Code never knows the difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Works
&lt;/h2&gt;

&lt;p&gt;The magic is in protocol translation. CliGate translates between Anthropic's Messages API format and OpenAI's Chat Completions format at the proxy layer. Claude Code speaks Anthropic protocol. GPT-5.2 Codex speaks OpenAI protocol. The proxy bridges them invisibly.&lt;/p&gt;

&lt;p&gt;From Claude Code's perspective, it sent a request and got back a valid streaming Anthropic response. The model name in the response is echoed back correctly. Everything behaves as expected.&lt;/p&gt;

&lt;p&gt;The same logic applies to the haiku model. When Claude Code sends a quick completion request using &lt;code&gt;claude-haiku-4-5&lt;/code&gt;, that gets routed to DeepSeek R1 or Qwen3 through Kilo AI — completely free, no API key required. Claude Code sees a streaming Anthropic response and moves on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting This Up
&lt;/h2&gt;

&lt;p&gt;The routing table lives in CliGate's Settings tab. Each model can be mapped to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A specific ChatGPT account (or the account pool, for automatic rotation)&lt;/li&gt;
&lt;li&gt;A Claude account (direct Anthropic protocol, no translation needed)&lt;/li&gt;
&lt;li&gt;An API key (OpenAI, Anthropic, Azure, Vertex AI, Gemini, etc.)&lt;/li&gt;
&lt;li&gt;The free routing path via Kilo AI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also set a &lt;strong&gt;Priority Mode&lt;/strong&gt; for each model: account pool first (free tier), or API key first (more reliable). If the first option fails or is exhausted, the proxy falls back to the next one automatically.&lt;/p&gt;

&lt;p&gt;One practical configuration I've settled on:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;claude-sonnet-4-6&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;  &lt;span class="s"&gt;ChatGPT account pool  (4 accounts, round-robin)&lt;/span&gt;
&lt;span class="na"&gt;claude-opus-4-6&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;    &lt;span class="s"&gt;Anthropic API key     (reserved for long context work)&lt;/span&gt;
&lt;span class="na"&gt;claude-haiku-4-5&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;   &lt;span class="s"&gt;Free routing          (DeepSeek R1 via Kilo AI)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means the vast majority of my coding requests go through the ChatGPT account pool at no API cost. The Anthropic key only gets touched for heavy reasoning tasks. Haiku requests are free.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Part That Surprised Me
&lt;/h2&gt;

&lt;p&gt;I expected some quality degradation when routing sonnet requests to GPT-5.2 Codex. For most coding tasks, I didn't notice any.&lt;/p&gt;

&lt;p&gt;Code generation, test writing, refactoring, explaining stack traces — these all behaved identically from Claude Code's interface. The model was different. The output quality was comparable. The cost was zero (account pool, no API billing).&lt;/p&gt;

&lt;p&gt;The cases where I do notice a difference are long multi-file reasoning tasks, where I've configured the fallback to use the Anthropic API key directly. But those are a small fraction of the total request volume, as the usage stats from yesterday confirmed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters Beyond Cost
&lt;/h2&gt;

&lt;p&gt;The cost savings are real, but that's not the most interesting part.&lt;/p&gt;

&lt;p&gt;The more interesting implication is that your AI coding tool no longer locks you into a single provider's ecosystem. You chose Claude Code for its UX and agent loop — not necessarily because Anthropic's API is the only place you want your requests going. &lt;/p&gt;

&lt;p&gt;With a proxy routing layer, those are two separate decisions. You can use the tool you like with the backend that makes sense for each request type.&lt;/p&gt;

&lt;p&gt;The model name in your config is just a string. Where it goes is up to the routing layer.&lt;/p&gt;




&lt;p&gt;CliGate is open source: &lt;a href="https://github.com/codeking-ai/cligate" rel="noopener noreferrer"&gt;github.com/codeking-ai/cligate&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Curious what routing setups others have tried — are you using a single provider for everything, or have you experimented with mixing backends?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>javascript</category>
      <category>opensource</category>
    </item>
    <item>
      <title>"My AI Coding Tools Were Running Up a Tab I Couldn't See — So I Fixed That"</title>
      <dc:creator>CodeKing</dc:creator>
      <pubDate>Mon, 13 Apr 2026 03:16:31 +0000</pubDate>
      <link>https://dev.to/codekingai/my-ai-coding-tools-were-running-up-a-tab-i-couldnt-see-so-i-fixed-that-1g67</link>
      <guid>https://dev.to/codekingai/my-ai-coding-tools-were-running-up-a-tab-i-couldnt-see-so-i-fixed-that-1g67</guid>
      <description>&lt;p&gt;Three months ago I had four AI coding tools set up: Claude Code, Codex CLI, Gemini CLI, and a chat UI for quick questions. Every month I'd get a bill from Anthropic and a bill from OpenAI and vaguely wonder what I'd actually spent them on.&lt;/p&gt;

&lt;p&gt;I had no idea which model was being called when. I didn't know if Claude Code was routing to Sonnet or Opus. I didn't know how many tokens Gemini was burning in the background. I just paid the bill and moved on.&lt;/p&gt;

&lt;p&gt;Then I looked at one month's invoice line by line.&lt;/p&gt;

&lt;p&gt;The answer was uncomfortable.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem With Opaque AI Billing
&lt;/h2&gt;

&lt;p&gt;When you use AI coding tools directly, the billing is aggregated. You see "claude-sonnet-4-6: 2.4M tokens" but you don't know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which tasks generated those tokens (code review? refactors? quick completions?)&lt;/li&gt;
&lt;li&gt;Which tool was responsible (Claude Code? your chat UI?)&lt;/li&gt;
&lt;li&gt;Whether any of it could have been handled by a cheaper — or free — model&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You're essentially flying blind. You optimize what you can measure, and the billing dashboards the providers give you aren't built for developers trying to understand usage at the tool level.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Did About It
&lt;/h2&gt;

&lt;p&gt;CliGate is a local proxy I built that sits between your AI coding tools and the upstream APIs. All four tools route through it — one &lt;code&gt;localhost:8081&lt;/code&gt;, one place to manage credentials and routing.&lt;/p&gt;

&lt;p&gt;That position in the stack turned out to be the perfect place to add cost tracking.&lt;/p&gt;

&lt;p&gt;Every request passes through the proxy. The proxy knows: which tool sent it, which model was requested, how many tokens were used (from the response stream), and what each model costs per token. The math is simple. The data is suddenly very visible.&lt;/p&gt;

&lt;p&gt;Here's what the usage dashboard looks like after a week of normal coding work:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Provider breakdown (this week)
──────────────────────────────────────────
Anthropic API          $4.82   68%
ChatGPT Account         $0.00    0%   ← account pool, no API cost
Free (Kilo AI)          $0.00    0%   ← routed to DeepSeek/Qwen
OpenAI API              $2.27   32%
──────────────────────────────────────────
Total                   $7.09
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Model breakdown told an even more interesting story:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;claude-sonnet-4-6       $4.21   59%
claude-haiku-4-5        $0.00    0%   ← free routing active
gpt-4o                  $1.89   27%
codex-mini              $0.38    5%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The haiku line at zero was the thing that made me stop and think.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bit I Didn't Expect: Some Models Are Just Free
&lt;/h2&gt;

&lt;p&gt;CliGate has a feature called free model routing. When a request comes in for &lt;code&gt;claude-haiku-4-5&lt;/code&gt;, instead of forwarding it to Anthropic, the proxy routes it to a free model — DeepSeek R1, Qwen3, MiniMax, whatever you've configured — via Kilo AI. No API key needed.&lt;/p&gt;

&lt;p&gt;I turned this on almost as an experiment. But looking at the usage stats a week later: every quick question, every short completion, every "what does this function do" — all of that had been handled for free. The expensive Sonnet calls were left for the work that actually needed it.&lt;/p&gt;

&lt;p&gt;That split happened automatically. I didn't have to think about it.&lt;/p&gt;

&lt;p&gt;You can change which free model handles haiku requests from the Settings tab. I've been rotating between DeepSeek R1 and Qwen3 depending on the task type — DeepSeek for reasoning-heavy work, Qwen3 for code generation.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Details That Actually Changed My Behavior
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Per-account tracking.&lt;/strong&gt; I have multiple Claude accounts in the pool. The usage stats break down by account, so I can see if one account is hitting its quota faster than others and rebalance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Daily and monthly views.&lt;/strong&gt; You can toggle between a daily sparkline and a monthly total. The daily view is where you catch the outliers — that one afternoon you had three long Claude Code sessions refactoring a module shows up as a spike and explains why a particular week cost more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing registry.&lt;/strong&gt; Every model's per-token price is configurable. When OpenAI changes pricing (which happens), you can update it in the dashboard without touching any config files. You can also add manual overrides for models that aren't in the default list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost per request in the logs.&lt;/strong&gt; The request log view shows cost alongside each request. If something seems expensive, you can pull up the exact prompt, response, token count, and cost in one place.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Changed Practically
&lt;/h2&gt;

&lt;p&gt;I now route &lt;code&gt;claude-haiku&lt;/code&gt; tasks through free models by default, and I've set up app-level routing so my quick chat window (the thing I use for "hey what's this error") hits the free path while Claude Code gets the full Sonnet model.&lt;/p&gt;

&lt;p&gt;My monthly AI tool spend dropped roughly 40% without changing how I actually work.&lt;/p&gt;

&lt;p&gt;The bigger change is more subtle: I stopped treating AI API costs as a fixed overhead I couldn't influence. Once you can see the breakdown, you start making different decisions about which model to reach for.&lt;/p&gt;




&lt;p&gt;If you're running multiple AI coding tools and paying per-token for all of them, it's worth spending 10 minutes to actually look at where the spend goes. The answer might be more improvable than you'd expect.&lt;/p&gt;

&lt;p&gt;CliGate is free and open source: &lt;a href="https://github.com/codeking-ai/cligate" rel="noopener noreferrer"&gt;github.com/codeking-ai/cligate&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What does your current AI tool spend look like? Are you tracking it at all, or just paying the bill?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>"I Pointed Claude Code at My Local Ollama Models — Here's the 3-Minute Setup"</title>
      <dc:creator>CodeKing</dc:creator>
      <pubDate>Fri, 10 Apr 2026 07:35:13 +0000</pubDate>
      <link>https://dev.to/codekingai/i-pointed-claude-code-at-my-local-ollama-models-heres-the-3-minute-setup-4hha</link>
      <guid>https://dev.to/codekingai/i-pointed-claude-code-at-my-local-ollama-models-heres-the-3-minute-setup-4hha</guid>
      <description>&lt;p&gt;My API bill last month had a line I couldn't ignore.&lt;/p&gt;

&lt;p&gt;Not the expensive reasoning tasks — those I expected. It was the small stuff. The "what does this error mean" questions. The quick refactors. The five-line test I asked Claude Code to write at 11pm. A thousand tiny requests, all billed like they mattered.&lt;/p&gt;

&lt;p&gt;Meanwhile, I had Ollama running on my machine with &lt;code&gt;qwen2.5-coder&lt;/code&gt; loaded. Fast. Free. Already sitting there.&lt;/p&gt;

&lt;p&gt;The problem was that my CLI tools had no idea it existed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Wiring Problem
&lt;/h2&gt;

&lt;p&gt;Claude Code speaks Anthropic's protocol. Codex CLI speaks OpenAI's. Gemini CLI speaks Google's. And Ollama? It speaks its own thing — but it also exposes an OpenAI-compatible endpoint at &lt;code&gt;http://localhost:11434&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So the question isn't "can Ollama do this" — it clearly can. The question is: &lt;strong&gt;how do you get your tools to talk to it without rewriting your entire config every time you switch between local and cloud?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's what I spent the last week solving, and I've now shipped it as part of &lt;a href="https://github.com/codeking-ai/cligate" rel="noopener noreferrer"&gt;CliGate&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;CliGate is a local proxy that already handles routing Claude Code, Codex CLI, and Gemini CLI to cloud providers. The new local model support adds Ollama as a first-class routing target alongside OpenAI, Anthropic, and Google.&lt;/p&gt;

&lt;p&gt;When local model routing is enabled, CliGate intercepts requests from your CLI tools and — depending on your config — sends them to Ollama instead of the cloud. Protocol translation happens in the proxy layer: Claude Code's Anthropic-formatted request gets adapted to whatever Ollama expects, the response gets adapted back.&lt;/p&gt;

&lt;p&gt;Your tool never knows the difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 3-Minute Setup
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1 — Make sure Ollama is running with a model&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama run qwen2.5-coder:7b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or any model you prefer. CliGate auto-discovers whatever's loaded.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Verify Ollama is accessible&lt;/span&gt;
curl http://localhost:11434/api/version
&lt;span class="c"&gt;# {"version":"0.6.x"}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2 — Start CliGate&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx cligate@latest start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dashboard opens at &lt;code&gt;http://localhost:8081&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3 — Add your Ollama instance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Go to &lt;strong&gt;Settings → Local Models&lt;/strong&gt;. Add your Ollama URL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:11434
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CliGate runs a health check and then fetches your model list via &lt;code&gt;/v1/models&lt;/code&gt;. You'll see your loaded models appear automatically — no manual entry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4 — Enable local routing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Toggle on &lt;strong&gt;"Local Model Routing"&lt;/strong&gt;. At this point, any request that would normally go to a cloud provider will check local models first.&lt;/p&gt;

&lt;p&gt;You can also configure this per-app. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; → &lt;code&gt;qwen2.5-coder:7b&lt;/code&gt; (your local coding model)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Codex CLI&lt;/strong&gt; → cloud (when you need the full thing)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini CLI&lt;/strong&gt; → cloud&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's it. No &lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt; juggling. No re-exporting env vars. One dashboard toggle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5 — Test it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Go to the &lt;strong&gt;Chat&lt;/strong&gt; tab, pick "Local Model" as the source, and send a message. If it comes back, the routing is working. Then go to your terminal and use Claude Code normally — the proxy handles the rest.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Claude Code is already pointed at CliGate from the one-click setup&lt;/span&gt;
claude &lt;span class="s2"&gt;"explain what this function does"&lt;/span&gt;
&lt;span class="c"&gt;# → routes to your local Ollama model&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The Part That Surprised Me
&lt;/h2&gt;

&lt;p&gt;I expected the basic routing to be the hard part. It wasn't.&lt;/p&gt;

&lt;p&gt;The interesting problem was &lt;strong&gt;streaming&lt;/strong&gt;. Claude Code expects streaming responses in Anthropic's SSE format. Ollama streams in its own format. Getting those two to handshake correctly without garbling the output took longer than everything else combined.&lt;/p&gt;

&lt;p&gt;The solution is a dedicated SSE bridge in the proxy layer that reads Ollama's stream chunk-by-chunk and re-emits it in the format the requesting tool expects. Claude Code sees a normal Anthropic streaming response. It never touches Ollama directly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Claude Code
  └─→ POST /v1/messages (Anthropic format, streaming)
        └─→ CliGate proxy
              └─→ detects: local routing enabled
              └─→ sends to Ollama /v1/chat/completions
              └─→ re-streams response as Anthropic SSE
        ←─ Claude Code receives: normal streaming response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same pattern for Codex CLI (OpenAI Responses format) and any other tool you route through the proxy.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Is Actually Good For
&lt;/h2&gt;

&lt;p&gt;I'm not suggesting you replace GPT-4 or Claude Sonnet with a local 7B model. There's a real capability difference.&lt;/p&gt;

&lt;p&gt;But a lot of what I actually use Claude Code for in a normal day doesn't need the best model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"What does this stacktrace mean?"&lt;/li&gt;
&lt;li&gt;"Generate a unit test for this function"&lt;/li&gt;
&lt;li&gt;"Rename these variables to be more descriptive"&lt;/li&gt;
&lt;li&gt;"Does this SQL query look right?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For tasks like these, &lt;code&gt;qwen2.5-coder:7b&lt;/code&gt; is fast, accurate enough, and free. Saving the cloud calls for the harder problems — complex refactors, architecture questions, multi-file changes — drops my monthly API bill significantly without changing my workflow.&lt;/p&gt;

&lt;p&gt;The toggle in CliGate makes it easy to switch back when you need to.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Your Local Model Setup?
&lt;/h2&gt;

&lt;p&gt;Are you running Ollama (or LM Studio, or anything else) for coding tasks? I'm curious what models people are finding useful for day-to-day dev work — especially anything that runs well on a laptop.&lt;/p&gt;




&lt;p&gt;GitHub: &lt;a href="https://github.com/codeking-ai/cligate" rel="noopener noreferrer"&gt;github.com/codeking-ai/cligate&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx cligate@latest start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>tutorial</category>
      <category>webdev</category>
      <category>node</category>
      <category>ai</category>
    </item>
    <item>
      <title>"CliGate Now Has a Built-in AI Assistant That Can Configure Your Proxy For You"</title>
      <dc:creator>CodeKing</dc:creator>
      <pubDate>Fri, 10 Apr 2026 07:08:13 +0000</pubDate>
      <link>https://dev.to/codekingai/cligate-now-has-a-built-in-ai-assistant-that-can-configure-your-proxy-for-you-doc</link>
      <guid>https://dev.to/codekingai/cligate-now-has-a-built-in-ai-assistant-that-can-configure-your-proxy-for-you-doc</guid>
      <description>&lt;p&gt;Most local dev tools give you a config file and a README. If something breaks, you're on your own.&lt;/p&gt;

&lt;p&gt;CliGate just shipped something different: a &lt;strong&gt;built-in AI assistant&lt;/strong&gt; that lives inside the dashboard, understands the product, and can actually &lt;em&gt;do things&lt;/em&gt; for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is CliGate Again?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/codeking-ai/cligate" rel="noopener noreferrer"&gt;CliGate&lt;/a&gt; is an open-source local proxy that sits between your AI coding tools and their APIs. You point Claude Code, Codex CLI, Gemini CLI, and OpenClaw at &lt;code&gt;localhost:8081&lt;/code&gt; — and CliGate handles routing, account pooling, protocol translation, and failover.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx cligate@latest start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The dashboard opens at &lt;code&gt;http://localhost:8081&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The New Chat Page
&lt;/h2&gt;

&lt;p&gt;There's now a &lt;strong&gt;Chat&lt;/strong&gt; tab in the dashboard.&lt;/p&gt;

&lt;p&gt;On the surface it looks like a chat interface — and it is. You pick a credential source (a ChatGPT account, Claude account, or any API key you've added), choose a model, optionally set a system prompt, and start chatting. It's a useful testing surface for verifying that your credentials actually work before routing real CLI traffic through them.&lt;/p&gt;

&lt;p&gt;But that's the boring part.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Product Assistant Mode
&lt;/h2&gt;

&lt;p&gt;Here's where it gets interesting.&lt;/p&gt;

&lt;p&gt;Toggle on &lt;strong&gt;Product Assistant&lt;/strong&gt;, and the chat behavior changes.&lt;/p&gt;

&lt;p&gt;The assistant now has the full CliGate product manual loaded into its context. Ask it things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;"How do I configure Codex CLI to use my Azure key?"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"What's the difference between Account Pool First and API Key First routing?"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"How do I enable free model routing?"&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And it answers with actual, accurate information about &lt;em&gt;this specific product&lt;/em&gt; — not generic AI hand-waving.&lt;/p&gt;

&lt;p&gt;This is useful. CliGate has a lot of moving parts: multiple protocols, multiple account types, routing modes, model mapping, Gemini patching, free model fallback. Having an assistant that knows the system well enough to answer specific setup questions in plain language removes a lot of friction for new users.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Action Mode: Chat That Does Things
&lt;/h2&gt;

&lt;p&gt;This is the part that surprised me.&lt;/p&gt;

&lt;p&gt;Type something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Set up Claude Code to use the proxy"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And the assistant doesn't just tell you how. It shows you a &lt;strong&gt;confirmation card&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enable Claude Code Proxy
Configure Claude Code to use the local proxy at http://localhost:8081.
[ Confirm ]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Click Confirm, and it actually writes the configuration to your Claude Code credentials — switching it to proxy mode, pointing it at &lt;code&gt;localhost:8081&lt;/code&gt;, and mapping the model aliases.&lt;/p&gt;

&lt;p&gt;Same in reverse: ask it to disable the proxy, and it confirms before restoring direct mode.&lt;/p&gt;

&lt;p&gt;The token-based confirm step isn't just UX polish. It's a deliberate safety gate. The action token expires in 10 minutes. Nothing changes without your explicit confirmation. The assistant proposes, you approve, the action executes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters More Than It Looks
&lt;/h2&gt;

&lt;p&gt;Most AI tools have chat interfaces.&lt;/p&gt;

&lt;p&gt;Very few of them are product-aware assistants that can actually modify their own configuration on your behalf.&lt;/p&gt;

&lt;p&gt;The gap between "I know how to fix this" and "I have just fixed this" is where most tool friction lives. CliGate's assistant collapses that gap for the most common setup operations — at least for Claude Code proxy toggle right now, with more actions likely coming.&lt;/p&gt;

&lt;p&gt;The language support is also worth noting: the assistant detects whether you're asking in English or Chinese and responds accordingly. The intent detection and tool pattern matching work across both languages.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Practical Loop
&lt;/h2&gt;

&lt;p&gt;Here's what the workflow looks like now for a new user:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;code&gt;npx cligate@latest start&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Open &lt;code&gt;http://localhost:8081&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Add an account or API key in the Accounts / API Keys tab&lt;/li&gt;
&lt;li&gt;Go to Chat → enable Product Assistant&lt;/li&gt;
&lt;li&gt;Ask: &lt;em&gt;"How do I set up Claude Code to use this proxy?"&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;The assistant explains it, then offers to do it for you&lt;/li&gt;
&lt;li&gt;Click Confirm&lt;/li&gt;
&lt;li&gt;Done&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's a pretty clean onboarding path for what used to require navigating Settings, reading docs, and manually editing config files.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/codeking-ai/cligate" rel="noopener noreferrer"&gt;github.com/codeking-ai/cligate&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;npm&lt;/strong&gt;: &lt;code&gt;npx cligate@latest start&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discord&lt;/strong&gt;: &lt;a href="https://discord.gg/GgxZSehxqG" rel="noopener noreferrer"&gt;Join the community&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're already using CliGate, update and check out the Chat tab. If you're not, the assistant is a pretty good reason to start.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;CliGate is open-source under AGPL-3.0. Not affiliated with Anthropic, OpenAI, or Google.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I Stopped Paying for AI CLI Chaos: This Local Gateway Makes Claude Code, Codex, and Gemini Work as One</title>
      <dc:creator>CodeKing</dc:creator>
      <pubDate>Thu, 09 Apr 2026 07:08:09 +0000</pubDate>
      <link>https://dev.to/codekingai/i-stopped-paying-for-ai-cli-chaos-this-local-gateway-makes-claude-code-codex-and-gemini-work-as-59hl</link>
      <guid>https://dev.to/codekingai/i-stopped-paying-for-ai-cli-chaos-this-local-gateway-makes-claude-code-codex-and-gemini-work-as-59hl</guid>
      <description>&lt;p&gt;If you are juggling &lt;strong&gt;Claude Code&lt;/strong&gt;, &lt;strong&gt;Codex CLI&lt;/strong&gt;, &lt;strong&gt;Gemini CLI&lt;/strong&gt;, and random API keys across different providers, the setup gets ugly fast.&lt;/p&gt;

&lt;p&gt;Different protocols. Different auth flows. Different config files. Different model names. Different rate limits.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;CliGate&lt;/strong&gt;: a &lt;strong&gt;local multi-protocol AI gateway&lt;/strong&gt; that sits on &lt;code&gt;localhost&lt;/code&gt; and turns that mess into one controllable entry point.&lt;/p&gt;

&lt;p&gt;Instead of wiring every tool separately, you point them at CliGate once and get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;multi-account pooling&lt;/li&gt;
&lt;li&gt;API key failover&lt;/li&gt;
&lt;li&gt;protocol translation&lt;/li&gt;
&lt;li&gt;app-level routing&lt;/li&gt;
&lt;li&gt;free-model fallback&lt;/li&gt;
&lt;li&gt;a visual dashboard for everything&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What CliGate actually does
&lt;/h2&gt;

&lt;p&gt;CliGate is an open-source local proxy for AI coding tools and model APIs.&lt;/p&gt;

&lt;p&gt;It currently supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; via Anthropic Messages API&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Codex CLI&lt;/strong&gt; via OpenAI Responses API, Chat Completions, and the Codex internal endpoint&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini CLI&lt;/strong&gt; via Gemini API compatibility&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenClaw&lt;/strong&gt; via provider injection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That means one local service can sit between your tools and multiple upstream providers like &lt;strong&gt;OpenAI&lt;/strong&gt;, &lt;strong&gt;Anthropic&lt;/strong&gt;, &lt;strong&gt;Google Gemini&lt;/strong&gt;, &lt;strong&gt;Vertex AI&lt;/strong&gt;, and even free-model routes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real problem it solves
&lt;/h2&gt;

&lt;p&gt;Most people do not have one clean AI stack.&lt;/p&gt;

&lt;p&gt;They have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a few accounts with different limits&lt;/li&gt;
&lt;li&gt;some paid API keys&lt;/li&gt;
&lt;li&gt;a CLI tool that only speaks one protocol&lt;/li&gt;
&lt;li&gt;another tool that expects a completely different endpoint&lt;/li&gt;
&lt;li&gt;no decent visibility into cost, usage, or failures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CliGate fixes that by separating &lt;strong&gt;the client protocol&lt;/strong&gt; from &lt;strong&gt;the upstream provider&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Your tool can keep speaking the protocol it expects, while CliGate decides where the request should actually go.&lt;/p&gt;

&lt;h2&gt;
  
  
  The killer features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. One gateway for multiple AI coding tools
&lt;/h3&gt;

&lt;p&gt;You can run Claude Code, Codex CLI, Gemini CLI, and OpenClaw through the same local server.&lt;/p&gt;

&lt;p&gt;No more maintaining a fragile pile of per-tool environment variables and scattered config files.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Account pools, not just API keys
&lt;/h3&gt;

&lt;p&gt;CliGate is not just another API proxy.&lt;/p&gt;

&lt;p&gt;It can manage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ChatGPT account pools&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude account pools&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Antigravity accounts&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;provider API key pools&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It supports OAuth login, token refresh, rotation strategies, quota tracking, and per-account management from the dashboard.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Smart routing instead of manual switching
&lt;/h3&gt;

&lt;p&gt;You can choose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;account-pool-first&lt;/li&gt;
&lt;li&gt;API-key-first&lt;/li&gt;
&lt;li&gt;automatic routing&lt;/li&gt;
&lt;li&gt;manual app assignment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So Claude Code can use one credential source, Codex can use another, and fallback behavior stays under your control.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Free-model routing for cheap or zero-cost workflows
&lt;/h3&gt;

&lt;p&gt;One of my favorite parts is the ability to route lightweight requests such as &lt;code&gt;claude-haiku&lt;/code&gt; to free models through Kilo AI.&lt;/p&gt;

&lt;p&gt;That gives you a practical low-cost path for lightweight coding, testing, and background tasks without burning premium quota for everything.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. A real dashboard instead of blind debugging
&lt;/h3&gt;

&lt;p&gt;CliGate ships with a web UI where you can manage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;accounts&lt;/li&gt;
&lt;li&gt;API keys&lt;/li&gt;
&lt;li&gt;model mapping&lt;/li&gt;
&lt;li&gt;per-app routing&lt;/li&gt;
&lt;li&gt;request logs&lt;/li&gt;
&lt;li&gt;usage and cost stats&lt;/li&gt;
&lt;li&gt;pricing overrides&lt;/li&gt;
&lt;li&gt;local tool installation and one-click configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This matters because most proxy tools become painful the moment you need to debug token expiry, failed routing, or mismatched models.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I think the protocol translation matters
&lt;/h2&gt;

&lt;p&gt;This is the part that makes CliGate more than a credential switcher.&lt;/p&gt;

&lt;p&gt;It exposes compatible endpoints for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;POST /v1/messages&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /v1/chat/completions&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /v1/responses&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /backend-api/codex/responses&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /v1beta/models/*&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So tools that were never designed to share the same backend can still be managed through one local layer.&lt;/p&gt;

&lt;p&gt;That unlocks a cleaner workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Keep your preferred client.&lt;/li&gt;
&lt;li&gt;Route it however you want.&lt;/li&gt;
&lt;li&gt;Change upstream providers without rebuilding your whole local setup.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Local-first is the point
&lt;/h2&gt;

&lt;p&gt;CliGate runs on &lt;code&gt;localhost&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no third-party relay server&lt;/li&gt;
&lt;li&gt;no hosted control plane&lt;/li&gt;
&lt;li&gt;no forced telemetry layer&lt;/li&gt;
&lt;li&gt;direct connections to official upstream APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For people who care about privacy, local control, or just not introducing another external dependency into their dev workflow, this is the right architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick start
&lt;/h2&gt;

&lt;p&gt;You can start it with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx cligate@latest start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or install globally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; cligate
cligate start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then open:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:8081
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From there you can add accounts or API keys, map models, and configure your CLI tools to hit the local gateway.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who this is for
&lt;/h2&gt;

&lt;p&gt;CliGate is especially useful if you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;use more than one AI coding CLI&lt;/li&gt;
&lt;li&gt;switch between Claude, OpenAI, Gemini, and other providers&lt;/li&gt;
&lt;li&gt;want fallback behavior when limits or keys fail&lt;/li&gt;
&lt;li&gt;want usage visibility across accounts and models&lt;/li&gt;
&lt;li&gt;want a local control plane instead of ad hoc shell config&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Repo
&lt;/h2&gt;

&lt;p&gt;GitHub: &lt;code&gt;https://github.com/codeking-ai/cligate&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If you are building serious local AI coding workflows, this project is designed to remove a surprising amount of friction.&lt;/p&gt;

&lt;p&gt;It is the difference between “a pile of disconnected AI tools” and “one local gateway that actually behaves like infrastructure.”&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>devtools</category>
      <category>programming</category>
    </item>
    <item>
      <title>I Renamed My Open-Source Project and Doubled Its Discoverability — Here's Why "CliGate" Replaced "ProxyPool Hub"</title>
      <dc:creator>CodeKing</dc:creator>
      <pubDate>Wed, 08 Apr 2026 08:15:59 +0000</pubDate>
      <link>https://dev.to/codekingai/i-renamed-my-open-source-project-and-doubled-its-discoverability-heres-why-cligate-replaced-16pi</link>
      <guid>https://dev.to/codekingai/i-renamed-my-open-source-project-and-doubled-its-discoverability-heres-why-cligate-replaced-16pi</guid>
      <description>&lt;h2&gt;
  
  
  The Problem: Nobody Could Find My Project
&lt;/h2&gt;

&lt;p&gt;I built an open-source tool that manages multiple AI coding assistant accounts (Claude Code, Codex CLI, Gemini CLI) through a single local proxy. It had multi-account pooling, smart routing, a visual dashboard — everything a developer using AI tools needs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But it had 12 stars. And when I Googled my own project name, I couldn't find it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The name was "ProxyPool Hub." The problem? Search "proxypool" on GitHub and you get &lt;strong&gt;dozens of HTTP/IP proxy pool projects&lt;/strong&gt; — web scraping tools with thousands of stars that completely buried mine. My AI coding tool was invisible because its name belonged to a different domain entirely.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Fix: Rename to CliGate
&lt;/h2&gt;

&lt;p&gt;After analyzing SEO patterns, checking npm/GitHub availability, and studying how successful open-source projects name themselves (LiteLLM, FastAPI, etc.), I renamed the project to &lt;strong&gt;CliGate&lt;/strong&gt; — CLI + Gateway.&lt;/p&gt;

&lt;p&gt;Why this name works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;7 characters&lt;/strong&gt; — short, memorable, easy to type&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLI + Gate&lt;/strong&gt; — instantly communicates "gateway for CLI tools"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero naming collisions&lt;/strong&gt; — searching "cligate" returns only my project&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Great CLI experience&lt;/strong&gt; — &lt;code&gt;npx cligate start&lt;/code&gt; feels natural&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO-friendly&lt;/strong&gt; — contains "cli" which matches what users search for&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The GitHub org also changed from &lt;code&gt;yiyao-ai&lt;/code&gt; (meaningless in English) to &lt;code&gt;codeking-ai&lt;/code&gt; (memorable, professional).&lt;/p&gt;

&lt;h2&gt;
  
  
  What CliGate Actually Does
&lt;/h2&gt;

&lt;p&gt;CliGate is a &lt;strong&gt;unified local gateway&lt;/strong&gt; that sits between your AI coding CLIs and their APIs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Claude Code / Codex CLI / Gemini CLI / OpenClaw
                    |
            CliGate (localhost:8081)
                    |
       +------------+------------+
       |            |            |
   ChatGPT      Claude       API Keys
   Accounts    Accounts     (10+ providers)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Core Features
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Multi-Account Pooling&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add multiple ChatGPT, Claude, and Antigravity accounts&lt;/li&gt;
&lt;li&gt;Auto-rotate when one hits rate limits (sticky, round-robin, or random)&lt;/li&gt;
&lt;li&gt;OAuth login with automatic token refresh&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;API Key Management&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Support for OpenAI, Azure OpenAI, Anthropic, Google Gemini, Vertex AI, MiniMax, Moonshot, ZhipuAI&lt;/li&gt;
&lt;li&gt;One-click connectivity test&lt;/li&gt;
&lt;li&gt;Automatic failover between keys&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Smart Routing&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Account Pool First or API Key First priority&lt;/li&gt;
&lt;li&gt;Bind specific apps to specific credentials&lt;/li&gt;
&lt;li&gt;Custom model mapping (e.g., route &lt;code&gt;claude-haiku&lt;/code&gt; to free models)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Visual Dashboard&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-time usage analytics and cost tracking&lt;/li&gt;
&lt;li&gt;Full request/response logging&lt;/li&gt;
&lt;li&gt;One-click CLI configuration for all supported tools&lt;/li&gt;
&lt;li&gt;Built-in tool installer (Node.js, Claude Code, Codex, Gemini CLI, OpenClaw)&lt;/li&gt;
&lt;li&gt;Dark/light theme, English/Chinese i18n&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# No install needed&lt;/span&gt;
npx cligate@latest start

&lt;span class="c"&gt;# Or install globally&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; cligate
cligate start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;a href="http://localhost:8081" rel="noopener noreferrer"&gt;http://localhost:8081&lt;/a&gt; and you'll see the dashboard:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgb9du05m2z7v1l0qylem.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgb9du05m2z7v1l0qylem.png" alt="CliGate Dashboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons Learned About Naming Open-Source Projects
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Your name IS your SEO&lt;/strong&gt; — If your project name collides with established projects in a different domain, you're invisible&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Include a domain keyword&lt;/strong&gt; — "cli", "ai", "code" help search engines categorize your project correctly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Short beats descriptive&lt;/strong&gt; — &lt;code&gt;cligate&lt;/code&gt; &amp;gt; &lt;code&gt;ai-llm-proxy-gateway-hub&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check availability everywhere&lt;/strong&gt; — GitHub org, npm, Google results&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Brand consistency matters&lt;/strong&gt; — org name and project name should work together (&lt;code&gt;codeking-ai/cligate&lt;/code&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/codeking-ai/cligate" rel="noopener noreferrer"&gt;github.com/codeking-ai/cligate&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;npm&lt;/strong&gt;: &lt;code&gt;npm install -g cligate&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Desktop App&lt;/strong&gt;: &lt;a href="https://github.com/codeking-ai/cligate/releases" rel="noopener noreferrer"&gt;GitHub Releases&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're using Claude Code, Codex CLI, or Gemini CLI, give CliGate a try. And if you've been through a rename yourself, I'd love to hear your experience in the comments.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;CliGate is open-source under AGPL-3.0. Stars, issues, and PRs are welcome!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>devtools</category>
      <category>webdev</category>
    </item>
    <item>
      <title>"I Found the Underground Map of Free LLM APIs — Then Wired Them All Into One Proxy"</title>
      <dc:creator>CodeKing</dc:creator>
      <pubDate>Tue, 31 Mar 2026 06:39:39 +0000</pubDate>
      <link>https://dev.to/codekingai/i-found-the-underground-map-of-free-llm-apis-then-wired-them-all-into-one-proxy-4h7g</link>
      <guid>https://dev.to/codekingai/i-found-the-underground-map-of-free-llm-apis-then-wired-them-all-into-one-proxy-4h7g</guid>
      <description>&lt;p&gt;There are two kinds of developers in 2026.&lt;/p&gt;

&lt;p&gt;The first kind is paying for every AI request like it's normal.&lt;/p&gt;

&lt;p&gt;The second kind is quietly collecting free quotas, trial credits, OpenAI-compatible endpoints, Gemini access, Groq speed, random hidden gems, and stitching them together into one ridiculous local setup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This post is for the second kind.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Problem Isn't "Which Model Is Best?"
&lt;/h2&gt;

&lt;p&gt;The real problem is this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One provider gives you speed&lt;/li&gt;
&lt;li&gt;Another gives you free credits&lt;/li&gt;
&lt;li&gt;Another gives you decent coding models&lt;/li&gt;
&lt;li&gt;Another looks promising but isn't integrated yet&lt;/li&gt;
&lt;li&gt;And your tools? They all want different configs, different keys, and different endpoints&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So your stack turns into a graveyard of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;half-used trial credits&lt;/li&gt;
&lt;li&gt;forgotten API keys&lt;/li&gt;
&lt;li&gt;rate-limited accounts&lt;/li&gt;
&lt;li&gt;browser bookmarks you'll never open again&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  So I Built the Map
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/yiyao-ai/proxypool-hub" rel="noopener noreferrer"&gt;ProxyPool Hub&lt;/a&gt; now includes a &lt;strong&gt;Resources Catalog&lt;/strong&gt;: a dedicated page that tracks free and trial LLM API platforms in one place.&lt;/p&gt;

&lt;p&gt;Not just a dumb markdown list.&lt;/p&gt;

&lt;p&gt;A real, filterable directory.&lt;/p&gt;

&lt;p&gt;You can now browse a curated catalog of providers like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OpenRouter&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google AI Studio&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Groq&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cerebras&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SambaNova Cloud&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hyperbolic&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scaleway Generative APIs&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;and more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each entry includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;whether it's &lt;strong&gt;free&lt;/strong&gt; or &lt;strong&gt;trial&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;whether ProxyPool Hub already supports it&lt;/li&gt;
&lt;li&gt;representative models&lt;/li&gt;
&lt;li&gt;signup requirements&lt;/li&gt;
&lt;li&gt;quota notes&lt;/li&gt;
&lt;li&gt;compatibility details&lt;/li&gt;
&lt;li&gt;whether it can be preset directly into the proxy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;it doesn't just tell you what's out there — it tells you what you can actually use right now.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  This Is Where It Gets Dangerous (In a Good Way)
&lt;/h2&gt;

&lt;p&gt;Because ProxyPool Hub isn't just a resource browser.&lt;/p&gt;

&lt;p&gt;It's also the thing that lets you &lt;strong&gt;use those resources without losing your mind&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Free Model Routing
&lt;/h3&gt;

&lt;p&gt;The new free model flow lets lightweight requests route to free providers automatically.&lt;/p&gt;

&lt;p&gt;So instead of burning paid credits for every tiny task, you can push fast or low-cost workloads toward free-tier resources.&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;quick coding questions → free routes&lt;/li&gt;
&lt;li&gt;lightweight model tasks → free routes&lt;/li&gt;
&lt;li&gt;expensive reasoning jobs → your better accounts or keys&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's not just cheaper.&lt;/p&gt;

&lt;p&gt;It changes your whole cost model.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Load Balancing Across API Keys
&lt;/h2&gt;

&lt;p&gt;Most people use API keys like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add one key&lt;/li&gt;
&lt;li&gt;Use it until it breaks&lt;/li&gt;
&lt;li&gt;Panic&lt;/li&gt;
&lt;li&gt;Switch manually&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;ProxyPool Hub does the opposite.&lt;/p&gt;

&lt;p&gt;It watches all your available keys and picks the one with the &lt;strong&gt;fewest requests&lt;/strong&gt; first.&lt;/p&gt;

&lt;p&gt;That's simple load balancing, but the practical effect is huge:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;your keys last longer&lt;/li&gt;
&lt;li&gt;rate limits hit later&lt;/li&gt;
&lt;li&gt;traffic spreads out automatically&lt;/li&gt;
&lt;li&gt;failures become much less noticeable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It feels less like "using an API key"&lt;/p&gt;

&lt;p&gt;and more like &lt;strong&gt;running your own tiny inference mesh on localhost&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Pooling Accounts and Providers Like a Greedy Goblin
&lt;/h2&gt;

&lt;p&gt;This is the part I like the most.&lt;/p&gt;

&lt;p&gt;You don't have to marry one provider.&lt;/p&gt;

&lt;p&gt;You can build a setup like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenRouter for rotating free models&lt;/li&gt;
&lt;li&gt;Google AI Studio for Gemini access&lt;/li&gt;
&lt;li&gt;Groq when you want stupid-fast responses&lt;/li&gt;
&lt;li&gt;Cerebras when you want extra OpenAI-compatible capacity&lt;/li&gt;
&lt;li&gt;SambaNova / Hyperbolic / Scaleway for trial credits&lt;/li&gt;
&lt;li&gt;your own Claude / OpenAI / Azure accounts for the heavy jobs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then point your tools at &lt;strong&gt;one local address&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's the whole trick.&lt;/p&gt;

&lt;p&gt;Your tools don't need to know your secret economy.&lt;/p&gt;

&lt;p&gt;They just talk to the proxy.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The Catalog Is Actually Strategic
&lt;/h2&gt;

&lt;p&gt;The smart part of the Resources Catalog isn't that it lists providers.&lt;/p&gt;

&lt;p&gt;It's that it classifies them by &lt;strong&gt;practical usability&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;supported&lt;/strong&gt; → already works cleanly with ProxyPool Hub&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;presettable&lt;/strong&gt; → can be slotted in with current patterns&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;candidate&lt;/strong&gt; → promising, but needs extra adapter work&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;catalog only&lt;/strong&gt; → good to know, not worth pretending it's plug-and-play yet&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's rare.&lt;/p&gt;

&lt;p&gt;Most AI lists are fluff.&lt;/p&gt;

&lt;p&gt;This one is operational.&lt;/p&gt;

&lt;p&gt;It answers:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Can I actually use this in my setup today?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;Because the AI tooling world is getting weirder, not simpler.&lt;/p&gt;

&lt;p&gt;Every month, new free endpoints appear.&lt;br&gt;
Every week, quotas change.&lt;br&gt;
Every day, someone discovers another provider with surprise credits and weird limits.&lt;/p&gt;

&lt;p&gt;If you don't organize that chaos, you waste it.&lt;/p&gt;

&lt;p&gt;ProxyPool Hub now gives you both sides of the game:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Discovery&lt;/strong&gt; — find free/trial opportunities fast&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Execution&lt;/strong&gt; — route, pool, balance, and survive rate limits&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Vibe
&lt;/h2&gt;

&lt;p&gt;This is no longer just "a proxy for Claude Code and Codex."&lt;/p&gt;

&lt;p&gt;It's becoming something more interesting:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;a local control plane for AI tool traffic.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One place to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;discover providers&lt;/li&gt;
&lt;li&gt;compare quotas&lt;/li&gt;
&lt;li&gt;pick usable free options&lt;/li&gt;
&lt;li&gt;spread load across keys&lt;/li&gt;
&lt;li&gt;route by app&lt;/li&gt;
&lt;li&gt;preserve paid credits&lt;/li&gt;
&lt;li&gt;keep your CLI tools working even when one provider taps out&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx proxypool-hub@latest start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then open:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;http://localhost:8081&lt;/code&gt; → dashboard&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;http://localhost:8081/resources/&lt;/code&gt; → free &amp;amp; trial resources catalog&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/yiyao-ai/proxypool-hub" rel="noopener noreferrer"&gt;github.com/yiyao-ai/proxypool-hub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;npm&lt;/strong&gt;: &lt;a href="https://www.npmjs.com/package/proxypool-hub" rel="noopener noreferrer"&gt;npmjs.com/package/proxypool-hub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discord&lt;/strong&gt;: &lt;a href="https://discord.gg/GgxZSehxqG" rel="noopener noreferrer"&gt;Join the community&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're the kind of developer who keeps a secret stash of trial credits and free endpoints, this might be your new favorite project.&lt;/p&gt;

&lt;p&gt;And if you're not?&lt;/p&gt;

&lt;p&gt;Give it a week.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;ProxyPool Hub is open-source under AGPL-3.0. Not affiliated with Anthropic, OpenAI, Google, or any listed provider.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>productivity</category>
    </item>
    <item>
      <title>"I Made AI Coding Tools Free (For Real This Time)"</title>
      <dc:creator>CodeKing</dc:creator>
      <pubDate>Tue, 31 Mar 2026 05:47:45 +0000</pubDate>
      <link>https://dev.to/codekingai/i-made-ai-coding-tools-free-for-real-this-time-1fj4</link>
      <guid>https://dev.to/codekingai/i-made-ai-coding-tools-free-for-real-this-time-1fj4</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;You know what's funny about "free" AI coding tools?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;They're not free.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Codex CLI says it uses your OpenAI credits — and those run out fast. Claude Code says it uses Anthropic — and suddenly you're staring at "rate limited" at 2 PM on a Tuesday.&lt;/p&gt;

&lt;p&gt;So much for "just works."&lt;/p&gt;

&lt;h2&gt;
  
  
  What If I Told You...
&lt;/h2&gt;

&lt;p&gt;What if I told you there's a way to make Codex, Claude Code, Gemini CLI, and OpenClaw &lt;strong&gt;actually free&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;Not "free tier" free. Not "limited to 50 requests" free. I'm talking &lt;strong&gt;free like WiFi at a coffee shop&lt;/strong&gt; free.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Secret: Free Model Routing
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/yiyao-ai/proxypool-hub" rel="noopener noreferrer"&gt;ProxyPool Hub&lt;/a&gt; now intercepts lightweight AI requests — the kind you'd use for quick code lookups, autocompletes, or "what does this error mean" — and routes them to &lt;strong&gt;actual free providers&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;No API key. No credits. No billing.&lt;/p&gt;

&lt;p&gt;When you need the heavy stuff (o4-mini, Sonnet 4, Gemini 2.5 Pro), it uses your paid accounts. When you just need a quick autocomplete? &lt;strong&gt;Free.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What Counts as "Free"?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Any model with "haiku", "mini", "fast", "lite" in the name gets auto-detected as a "fast" tier model&lt;/li&gt;
&lt;li&gt;ProxyPool Hub maps those to free alternatives from providers like &lt;strong&gt;DeepSeek R1&lt;/strong&gt;, &lt;strong&gt;Qwen3&lt;/strong&gt;, or &lt;strong&gt;MiniMax&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;You can also manually specify which models route to free providers&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Toggle
&lt;/h3&gt;

&lt;p&gt;One switch in the dashboard: "Enable Free Models." Flip it on. Done.&lt;/p&gt;

&lt;p&gt;When it's on, fast-tier requests go to free providers. When it's off, everything goes through your accounts. It's that simple.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Other Secret: Load Balancing Across API Keys
&lt;/h2&gt;

&lt;p&gt;Here's something nobody talks about: &lt;strong&gt;API key load balancing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You have 3 OpenAI keys? They're not all created equal. Key #1 might hit rate limit at 2 PM. Key #2 at 5 PM. Key #3 is barely used.&lt;/p&gt;

&lt;p&gt;ProxyPool Hub now tracks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Total requests per key&lt;/li&gt;
&lt;li&gt;Rate limit cooldown status&lt;/li&gt;
&lt;li&gt;Error history&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And automatically routes to the &lt;strong&gt;least-used available key&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Algorithm
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Simplified: pick the key with fewest requests&lt;/span&gt;
&lt;span class="nx"&gt;availableKeys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;totalRequests&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;totalRequests&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;availableKeys&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. When one key hits rate limit, it automatically tries the next. Your code doesn't know — or care — which key it's using.&lt;/p&gt;

&lt;h2&gt;
  
  
  But Wait, There's More
&lt;/h2&gt;

&lt;h3&gt;
  
  
  App-Specific Routing
&lt;/h3&gt;

&lt;p&gt;You can now bind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Codex&lt;/strong&gt; → your Azure OpenAI endpoint (fastest)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; → your Claude Pro account&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenClaw&lt;/strong&gt; → any available key&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each app gets its own priority list of credentials. If the first choice is unavailable, it tries the second. If all fail and you enabled fallback, it falls back to the automatic pool.&lt;/p&gt;

&lt;h3&gt;
  
  
  8 Provider Support
&lt;/h3&gt;

&lt;p&gt;We added 4 new providers since last time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MiniMax&lt;/li&gt;
&lt;li&gt;Moonshot (Kimi)&lt;/li&gt;
&lt;li&gt;ZhipuAI (GLM)&lt;/li&gt;
&lt;li&gt;Vertex AI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can now mix and match across 8 different AI providers in a single dashboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Cost
&lt;/h2&gt;

&lt;p&gt;Let's do math.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Without ProxyPool Hub:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Claude Code → ~$20/month (Anthropic API)&lt;/li&gt;
&lt;li&gt;Codex → ~$15/month (OpenAI)&lt;/li&gt;
&lt;li&gt;Gemini CLI → $0 (free tier, limited)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Total: ~$35/month&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;With ProxyPool Hub:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fast requests → Free (routed to free models)&lt;/li&gt;
&lt;li&gt;Heavy requests → Your existing keys (shared across tools)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Total: $0/month&lt;/strong&gt; (if you already have accounts)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The only "cost" is running a local Node.js process. That's it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup (30 Seconds)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx proxypool-hub@latest start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;localhost:8081&lt;/code&gt;. Add your accounts. Flip the "Free Models" switch. Start coding.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Catch
&lt;/h2&gt;

&lt;p&gt;There isn't one.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It's 100% local — nothing leaves your machine&lt;/li&gt;
&lt;li&gt;No telemetry, no tracking, no data collection&lt;/li&gt;
&lt;li&gt;Credentials stored with restrictive file permissions&lt;/li&gt;
&lt;li&gt;Runs on localhost — no cloud relay&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/yiyao-ai/proxypool-hub" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; · &lt;a href="https://www.npmjs.com/package/proxypool-hub" rel="noopener noreferrer"&gt;npm&lt;/a&gt; · &lt;a href="https://discord.gg/GgxZSehxqG" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Star it if it saves you money. Or don't. But at least try the free model routing — I dare you.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;ProxyPool Hub: open-source under AGPL-3.0. Not affiliated with Anthropic, OpenAI, or Google.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>javascript</category>
    </item>
    <item>
      <title>"Stop Letting AI Tools Fight Over Your API Keys — Let a Smart Proxy Handle It"</title>
      <dc:creator>CodeKing</dc:creator>
      <pubDate>Mon, 30 Mar 2026 08:42:34 +0000</pubDate>
      <link>https://dev.to/codekingai/stop-letting-ai-tools-fight-over-your-api-keys-let-a-smart-proxy-handle-it-19el</link>
      <guid>https://dev.to/codekingai/stop-letting-ai-tools-fight-over-your-api-keys-let-a-smart-proxy-handle-it-19el</guid>
      <description>&lt;p&gt;Every AI coding tool wants its own API key. Its own config. Its own account.&lt;/p&gt;

&lt;p&gt;Codex CLI wants OpenAI. Claude Code wants Anthropic. Gemini CLI wants Google. And you're sitting there with 5 browser tabs of API dashboards open, copy-pasting keys like it's 2019.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if your tools never had to know where their tokens come from?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem Nobody Talks About
&lt;/h2&gt;

&lt;p&gt;You've got 3 ChatGPT accounts (don't pretend you don't). Two API keys. Maybe a Claude account. And every time you switch tools, you're manually rewiring the plumbing.&lt;/p&gt;

&lt;p&gt;Worse — when one account hits its rate limit at 2 AM during a debug session, you're done. Go to bed. Try tomorrow.&lt;/p&gt;

&lt;p&gt;That's not how this should work.&lt;/p&gt;

&lt;h2&gt;
  
  
  ProxyPool Hub: Your AI Traffic Controller
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/yiyao-ai/proxypool-hub" rel="noopener noreferrer"&gt;ProxyPool Hub&lt;/a&gt; is an open-source local proxy that sits between your AI tools and their APIs. Every tool points to &lt;code&gt;localhost:8081&lt;/code&gt;, and the proxy figures out the rest.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx proxypool-hub@latest start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One command. Dashboard at &lt;code&gt;localhost:8081&lt;/code&gt;. Done.&lt;/p&gt;

&lt;p&gt;But the latest release isn't just about pooling accounts anymore. It's about &lt;strong&gt;intelligent routing&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's New: The Smart Routing Update
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Bind Apps to Specific Credentials
&lt;/h3&gt;

&lt;p&gt;This is the big one.&lt;/p&gt;

&lt;p&gt;You can now tell ProxyPool Hub: &lt;em&gt;"Always route Codex through my Azure OpenAI key. Always route Claude Code through my Claude account. Route everything else through the pool."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It's called &lt;strong&gt;App Assignments&lt;/strong&gt; — and it changes how you think about API credentials.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Codex CLI → Azure OpenAI key (your fastest endpoint)&lt;/li&gt;
&lt;li&gt;Claude Code → Claude account (your Pro subscription)&lt;/li&gt;
&lt;li&gt;Gemini CLI → Gemini API key (your free tier)&lt;/li&gt;
&lt;li&gt;OpenClaw → Whatever's available&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each app can have multiple fallback bindings. If binding #1 is rate-limited, it tries #2. If all fail and you've enabled fallback, it drops back to automatic rotation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No more "wrong key for wrong tool" accidents.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Model Mapping That Actually Makes Sense
&lt;/h3&gt;

&lt;p&gt;Instead of memorizing that &lt;code&gt;gpt-4o&lt;/code&gt; should map to &lt;code&gt;gemini-2.5-pro&lt;/code&gt; on Google or &lt;code&gt;claude-sonnet-4-20250514&lt;/code&gt; on Anthropic, ProxyPool Hub introduces &lt;strong&gt;tier-based mapping&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Four tiers: &lt;code&gt;flagship&lt;/code&gt;, &lt;code&gt;standard&lt;/code&gt;, &lt;code&gt;fast&lt;/code&gt;, &lt;code&gt;reasoning&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;When Codex asks for &lt;code&gt;gpt-4o&lt;/code&gt;, the proxy recognizes it as a "standard" tier model and maps it to whatever you've configured as your standard model on the target provider. New models auto-classify based on their names — no manual updates needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Codex Can See Images Now
&lt;/h3&gt;

&lt;p&gt;This one's subtle but important. Codex CLI can read image files as part of its tool workflow. But Azure OpenAI uses a different image format (&lt;code&gt;image_url&lt;/code&gt;) than what Codex sends (&lt;code&gt;input_image&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;ProxyPool Hub now transparently converts between all image formats — base64, URLs, data URIs — across all providers. &lt;strong&gt;Codex vision tasks just work&lt;/strong&gt;, regardless of which backend you're routing through.&lt;/p&gt;

&lt;h3&gt;
  
  
  Free Model Toggle
&lt;/h3&gt;

&lt;p&gt;Not every request needs GPT-4. The new &lt;strong&gt;Free Models&lt;/strong&gt; switch routes lightweight requests (Haiku-tier) to free providers automatically. Turn it off when you need guaranteed quality. Turn it on to save money on code completions and quick lookups.&lt;/p&gt;

&lt;h3&gt;
  
  
  Built-in Chat
&lt;/h3&gt;

&lt;p&gt;Sometimes you just want to test if your credentials work. The new dashboard chat lets you pick any credential source and start a streaming conversation — right in the browser. No CLI needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Architecture (It's Simpler Than You Think)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Your AI Tools (Codex, Claude Code, Gemini CLI, OpenClaw)
                    |
            localhost:8081
                    |
         +----------+----------+
         |          |          |
    App Router   Model Map   Free Model
         |          |        Routing
         +----------+----------+
                    |
    +--------+------+------+--------+
    |        |      |      |        |
  ChatGPT  Claude  Azure  Gemini  Vertex
  Accounts Accounts OpenAI  API    AI
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every request gets:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Detected&lt;/strong&gt; — which app sent it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Routed&lt;/strong&gt; — to the assigned credential (or the pool)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mapped&lt;/strong&gt; — model name translated to the target provider&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Translated&lt;/strong&gt; — protocol converted (OpenAI ↔ Anthropic ↔ Gemini)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delivered&lt;/strong&gt; — with automatic retry on rate limits&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  It's 100% Local
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Runs on &lt;code&gt;localhost&lt;/code&gt; — nothing leaves your machine&lt;/li&gt;
&lt;li&gt;Direct connections to official APIs — no relay servers&lt;/li&gt;
&lt;li&gt;Zero telemetry, zero tracking&lt;/li&gt;
&lt;li&gt;Credentials stored locally with restricted permissions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Get Started in 30 Seconds
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# No install needed&lt;/span&gt;
npx proxypool-hub@latest start

&lt;span class="c"&gt;# Or install globally&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; proxypool-hub
proxypool-hub start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;http://localhost:8081&lt;/code&gt;. Add your accounts or API keys. Click "Configure" next to your favorite CLI tool. Start coding.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/yiyao-ai/proxypool-hub" rel="noopener noreferrer"&gt;github.com/yiyao-ai/proxypool-hub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;npm&lt;/strong&gt;: &lt;a href="https://www.npmjs.com/package/proxypool-hub" rel="noopener noreferrer"&gt;npmjs.com/package/proxypool-hub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discord&lt;/strong&gt;: &lt;a href="https://discord.gg/GgxZSehxqG" rel="noopener noreferrer"&gt;Join the community&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If this saves you even one "wrong API key" headache, drop a star on GitHub. It helps other developers find the project.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;ProxyPool Hub is open-source under AGPL-3.0. Not affiliated with Anthropic, OpenAI, or Google.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>devtools</category>
    </item>
    <item>
      <title>I Built a Dashboard That Installs Claude Code, Codex &amp; Gemini CLI in One Click</title>
      <dc:creator>CodeKing</dc:creator>
      <pubDate>Fri, 27 Mar 2026 02:38:39 +0000</pubDate>
      <link>https://dev.to/codekingai/i-built-a-dashboard-that-installs-claude-code-codex-gemini-cli-in-one-click-35kc</link>
      <guid>https://dev.to/codekingai/i-built-a-dashboard-that-installs-claude-code-codex-gemini-cli-in-one-click-35kc</guid>
      <description>&lt;p&gt;You know the drill. You want to try Claude Code. Then someone tells you about Codex CLI. Then Gemini CLI drops. Then there's OpenClaw.&lt;/p&gt;

&lt;p&gt;Before you know it, you're juggling 4 different terminals, 4 different configs, and 4 different API keys — just to write code with AI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if you could manage all of them from one place?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Meet ProxyPool Hub
&lt;/h2&gt;

&lt;p&gt;ProxyPool Hub is an open-source local proxy that sits between your AI coding tools and their APIs. It gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A beautiful web dashboard at &lt;code&gt;localhost:8081&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Multi-account rotation (yes, you can use multiple accounts)&lt;/li&gt;
&lt;li&gt;API key pooling with automatic failover&lt;/li&gt;
&lt;li&gt;Free model routing (use Haiku-tier models for free via Kilo AI)&lt;/li&gt;
&lt;li&gt;One-click configuration for every CLI tool&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And in v1.0.6, it just got a lot more powerful.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's New in v1.0.6
&lt;/h2&gt;

&lt;h3&gt;
  
  
  One-Click Tool Installer
&lt;/h3&gt;

&lt;p&gt;Don't have Claude Code installed? Don't have Codex CLI? No problem.&lt;/p&gt;

&lt;p&gt;The new &lt;strong&gt;Tool Installer&lt;/strong&gt; tab detects your OS, checks what's installed, and lets you install everything with a single click:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Node.js&lt;/strong&gt; — auto-detected, with platform-specific install guidance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; (&lt;code&gt;@anthropic-ai/claude-code&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Codex CLI&lt;/strong&gt; (&lt;code&gt;@openai/codex&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini CLI&lt;/strong&gt; (&lt;code&gt;@google/gemini-cli&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenClaw&lt;/strong&gt; (&lt;code&gt;openclaw&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hit "Install All" and grab a coffee. Come back to a fully configured AI development environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  API Key Test &amp;amp; Edit
&lt;/h3&gt;

&lt;p&gt;Added an API key but not sure if it works? Now you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Test&lt;/strong&gt; any key with one click — it hits the provider's API and tells you if it's valid&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Edit&lt;/strong&gt; key details inline — including Azure OpenAI deployment names, API versions, Vertex AI project IDs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No more deleting and re-adding keys just to fix a typo.&lt;/p&gt;

&lt;h3&gt;
  
  
  8 Provider Support
&lt;/h3&gt;

&lt;p&gt;We now support API keys from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenAI&lt;/li&gt;
&lt;li&gt;Anthropic&lt;/li&gt;
&lt;li&gt;Google Gemini&lt;/li&gt;
&lt;li&gt;Azure OpenAI&lt;/li&gt;
&lt;li&gt;Vertex AI&lt;/li&gt;
&lt;li&gt;MiniMax&lt;/li&gt;
&lt;li&gt;Moonshot (Kimi)&lt;/li&gt;
&lt;li&gt;ZhipuAI (GLM)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All with automatic load balancing and failover. If one key hits a rate limit, the next one picks up seamlessly.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works (30 Seconds)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx proxypool-hub@latest start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Open &lt;code&gt;http://localhost:8081&lt;/code&gt;. You'll see a dashboard where you can:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add your accounts or API keys&lt;/li&gt;
&lt;li&gt;Click "Configure" next to any CLI tool&lt;/li&gt;
&lt;li&gt;Start coding&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Every tool talks to ProxyPool Hub at &lt;code&gt;localhost:8081&lt;/code&gt;, and it routes requests to the right provider with the right credentials.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Developers Love It
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"I have 3 ChatGPT accounts and 2 API keys. ProxyPool Hub rotates between them automatically."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"I was paying for Claude API just to use Claude Code. Now I route haiku requests to free models and save $50/month."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Setting up Codex CLI took me 20 minutes of config file editing. With ProxyPool Hub it was one button."&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  It's 100% Local
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Runs entirely on &lt;code&gt;localhost&lt;/code&gt; — nothing leaves your machine&lt;/li&gt;
&lt;li&gt;Connects directly to official APIs — no third-party relay&lt;/li&gt;
&lt;li&gt;Zero telemetry, zero data collection&lt;/li&gt;
&lt;li&gt;Credentials stored locally with restricted file permissions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Get Started
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Quick start (no install needed)&lt;/span&gt;
npx proxypool-hub@latest start

&lt;span class="c"&gt;# Or install globally&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; proxypool-hub
proxypool-hub start

&lt;span class="c"&gt;# Or download the desktop app&lt;/span&gt;
&lt;span class="c"&gt;# https://github.com/yiyao-ai/proxypool-hub/releases&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/yiyao-ai/proxypool-hub" rel="noopener noreferrer"&gt;github.com/yiyao-ai/proxypool-hub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;npm&lt;/strong&gt;: &lt;a href="https://www.npmjs.com/package/proxypool-hub" rel="noopener noreferrer"&gt;npmjs.com/package/proxypool-hub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discord&lt;/strong&gt;: &lt;a href="https://discord.gg/GgxZSehxqG" rel="noopener noreferrer"&gt;Join the community&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If this saves you time, drop a star on GitHub. It helps more developers discover the project.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;ProxyPool Hub is open-source under AGPL-3.0. Not affiliated with Anthropic, OpenAI, or Google.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>tooling</category>
      <category>productivity</category>
    </item>
    <item>
      <title>ProxyPool Hub: Use Claude Code, Codex CLI, Gemini CLI for Free with Multi-Account Pooling</title>
      <dc:creator>CodeKing</dc:creator>
      <pubDate>Thu, 26 Mar 2026 02:31:24 +0000</pubDate>
      <link>https://dev.to/codekingai/proxypool-hub-use-claude-code-codex-cli-gemini-cli-for-free-with-multi-account-pooling-43eo</link>
      <guid>https://dev.to/codekingai/proxypool-hub-use-claude-code-codex-cli-gemini-cli-for-free-with-multi-account-pooling-43eo</guid>
      <description>&lt;h2&gt;
  
  
  What is ProxyPool Hub?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/yiyao-ai/proxypool-hub" rel="noopener noreferrer"&gt;ProxyPool Hub&lt;/a&gt; is an open-source, multi-protocol AI API proxy server that lets you &lt;strong&gt;pool multiple free accounts&lt;/strong&gt; to use popular AI coding assistants — without paying for API keys.&lt;/p&gt;

&lt;p&gt;It supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; (Anthropic format)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Codex CLI&lt;/strong&gt; (OpenAI Responses API)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini CLI&lt;/strong&gt; (Google Gemini API)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenClaw&lt;/strong&gt; (Multi-provider)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why?
&lt;/h2&gt;

&lt;p&gt;Free-tier AI accounts have usage limits. When one account hits its limit, you have to wait. ProxyPool Hub solves this by &lt;strong&gt;rotating across multiple accounts automatically&lt;/strong&gt; — when one is rate-limited, it seamlessly switches to the next.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-account pooling&lt;/strong&gt; — Add multiple ChatGPT / Claude accounts, auto-rotate on rate limits&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API key management&lt;/strong&gt; — Bring your own API keys (OpenAI, Anthropic, Gemini, etc.) as fallback&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart routing&lt;/strong&gt; — Account-first or API-key-first priority, sticky or round-robin rotation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protocol translation&lt;/strong&gt; — Anthropic to OpenAI format conversion, so any client works with any backend&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual dashboard&lt;/strong&gt; — Web UI for account management, usage analytics, request logs, and model mapping&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One-click setup&lt;/strong&gt; — Configure Claude Code, Codex CLI, Gemini CLI, or OpenClaw with a single button&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free model access&lt;/strong&gt; — Route haiku/small models to free providers (no account needed)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; proxypool-hub
proxypool-hub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then open &lt;a href="http://localhost:8081" rel="noopener noreferrer"&gt;http://localhost:8081&lt;/a&gt; to access the dashboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;The proxy receives requests in any supported format, translates them to the appropriate upstream API, and streams responses back — all transparently.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Claude Code / Codex CLI / Gemini CLI / OpenClaw
              |
       ProxyPool Hub (localhost:8081)
              |
    +---------+---------+
    |         |         |
 ChatGPT   Claude    API Keys
 Accounts  Accounts  (fallback)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Dashboard
&lt;/h2&gt;

&lt;p&gt;The web dashboard provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-time account status and token expiry tracking&lt;/li&gt;
&lt;li&gt;Usage analytics (per account, per model, daily/monthly)&lt;/li&gt;
&lt;li&gt;Request logs with full request/response inspection&lt;/li&gt;
&lt;li&gt;Model mapping configuration&lt;/li&gt;
&lt;li&gt;One-click CLI configuration for all supported tools&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Get Started
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/yiyao-ai/proxypool-hub" rel="noopener noreferrer"&gt;github.com/yiyao-ai/proxypool-hub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;npm&lt;/strong&gt;: &lt;code&gt;npm install -g proxypool-hub&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Desktop&lt;/strong&gt;: Download from &lt;a href="https://github.com/yiyao-ai/proxypool-hub/releases" rel="noopener noreferrer"&gt;GitHub Releases&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feedback, issues, and PRs are welcome!&lt;/p&gt;




&lt;p&gt;&lt;em&gt;ProxyPool Hub is licensed under AGPL-3.0.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>devtools</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
