<?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: ujjwal Chaudhary</title>
    <description>The latest articles on DEV Community by ujjwal Chaudhary (@ujjwal_chaudhary_cd4925b0).</description>
    <link>https://dev.to/ujjwal_chaudhary_cd4925b0</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4033628%2Fafd25734-31ec-4864-be02-64476ddfb4c1.jpg</url>
      <title>DEV Community: ujjwal Chaudhary</title>
      <link>https://dev.to/ujjwal_chaudhary_cd4925b0</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ujjwal_chaudhary_cd4925b0"/>
    <language>en</language>
    <item>
      <title>I Built a Free OpenRouter Alternative — Here's How</title>
      <dc:creator>ujjwal Chaudhary</dc:creator>
      <pubDate>Fri, 17 Jul 2026 10:25:43 +0000</pubDate>
      <link>https://dev.to/ujjwal_chaudhary_cd4925b0/i-built-a-free-openrouter-alternative-heres-how-4j4a</link>
      <guid>https://dev.to/ujjwal_chaudhary_cd4925b0/i-built-a-free-openrouter-alternative-heres-how-4j4a</guid>
      <description>&lt;p&gt;I Built a Free OpenRouter Alternative — Here's How&lt;/p&gt;

&lt;p&gt;The Problem&lt;/p&gt;

&lt;p&gt;I was paying $50+/month for AI APIs. OpenRouter, OpenAI, Anthropic — it adds up fast.&lt;/p&gt;

&lt;p&gt;As a developer, I needed a better solution. Something free, self-hosted, and with no vendor lock-in.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution: MiniRouter
&lt;/h2&gt;

&lt;p&gt;I built &lt;a href="https://github.com/ujjwalchaudhary/mini-router" rel="noopener noreferrer"&gt;MiniRouter&lt;/a&gt; — a self-hosted LLM gateway that aggregates 16+ free cloud AI providers into one OpenAI-compatible API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost: $0 forever.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;MiniRouter sits between your app and AI providers. Instead of calling OpenAI directly, you call MiniRouter. It then routes your request to the best available free provider.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Your App → MiniRouter → Gemini (free)
                     → Groq (free)
                     → Mistral (free)
                     → ... 13 more
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;16+ Free Providers&lt;/strong&gt;: Gemini, Groq, Mistral, Cerebras, SambaNova, Together, HuggingFace, OpenRouter, Cloudflare, DeepSeek, xAI, Cohere, Moonshot, Zhipu, Baidu, Alibaba&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI Compatible&lt;/strong&gt;: Works with any OpenAI library (Python, JavaScript, Go, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User Management&lt;/strong&gt;: Create accounts, set daily limits, track usage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart Failover&lt;/strong&gt;: If one provider is down, automatically switches to the next&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Health Dashboard&lt;/strong&gt;: See provider status, usage analytics, cost savings&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker Support&lt;/strong&gt;: One command to deploy&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h3&gt;
  
  
  1. Clone and Run
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/ujjwalchaudhary/mini-router.git
&lt;span class="nb"&gt;cd &lt;/span&gt;mini-router
python &lt;span class="nt"&gt;-m&lt;/span&gt; src
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Get Free API Keys
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Gemini: &lt;a href="https://aistudio.google.com/apikey" rel="noopener noreferrer"&gt;https://aistudio.google.com/apikey&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Groq: &lt;a href="https://console.groq.com" rel="noopener noreferrer"&gt;https://console.groq.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Mistral: &lt;a href="https://console.mistral.ai" rel="noopener noreferrer"&gt;https://console.mistral.ai&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Add Keys to config.json
&lt;/h3&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;"providers"&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="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"gemini"&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="nl"&gt;"api_key"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"YOUR_KEY"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"groq"&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="nl"&gt;"api_key"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"YOUR_KEY"&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="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;h3&gt;
  
  
  4. Use It
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http://localhost:8080/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mr-your-api-key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gemini/gemini-2.0-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&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;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why Not Just Use OpenRouter?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;OpenRouter&lt;/th&gt;
&lt;th&gt;MiniRouter&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Monthly cost&lt;/td&gt;
&lt;td&gt;$10+&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Self-hosted&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data privacy&lt;/td&gt;
&lt;td&gt;Shared&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Full control&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;User management&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Full dashboard&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost tracking&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Use Cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Startups&lt;/strong&gt;: Save runway by using free AI infrastructure&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Healthcare&lt;/strong&gt;: Self-hosted means patient data never leaves your server&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Education&lt;/strong&gt;: Give students access to AI without budget approval&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Personal projects&lt;/strong&gt;: Build AI apps without monthly costs&lt;/li&gt;
&lt;/ul&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────┐
│            MiniRouter Server             │
│         (Pure Python, zero deps)        │
├─────────────────────────────────────────┤
│  OpenAI-Compatible API                  │
│  POST /v1/chat/completions              │
├─────────────────────────────────────────┤
│  Smart Router                           │
│  Priority → Provider → Failover → Cache │
├─────────────────────────────────────────┤
│  16 Provider Adapters                   │
│  Gemini, Groq, Mistral, Cerebras, ...   │
└─────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;More providers&lt;/li&gt;
&lt;li&gt;Better analytics&lt;/li&gt;
&lt;li&gt;Web UI for non-technical users&lt;/li&gt;
&lt;li&gt;Agent-specific features (tool caching, memory)&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;GitHub: &lt;a href="https://github.com/ujjwalchaudhary/mini-router" rel="noopener noreferrer"&gt;https://github.com/ujjwalchaudhary/mini-router&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Star it if you find it useful!&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built with ❤️ by a developer tired of expensive AI APIs.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>selfhosted</category>
      <category>python</category>
    </item>
  </channel>
</rss>
