<?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: Arpan Shah</title>
    <description>The latest articles on DEV Community by Arpan Shah (@arpanvgm).</description>
    <link>https://dev.to/arpanvgm</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%2F4039376%2F852d75c4-c78b-481e-80e8-b5f3a967a444.png</url>
      <title>DEV Community: Arpan Shah</title>
      <link>https://dev.to/arpanvgm</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arpanvgm"/>
    <language>en</language>
    <item>
      <title>I Built a CLI to Use Free Web-Based AI Chatbots for Real Development Work — No API Keys, No Extensions</title>
      <dc:creator>Arpan Shah</dc:creator>
      <pubDate>Wed, 22 Jul 2026 18:42:09 +0000</pubDate>
      <link>https://dev.to/arpanvgm/i-built-a-cli-to-use-free-web-based-ai-chatbots-for-real-development-work-no-api-keys-no-jlf</link>
      <guid>https://dev.to/arpanvgm/i-built-a-cli-to-use-free-web-based-ai-chatbots-for-real-development-work-no-api-keys-no-jlf</guid>
      <description>&lt;p&gt;I wanted to use web-based AI chatbots — Claude, Gemini, ChatGPT, Qwen — for actual development work, not just Q&amp;amp;A. The free tiers are generous, and I didn't want to be locked into a single coding agent or pay for API access just to get an assistant to touch my code. But the moment you try to actually use a web chat for real dev work, you hit the same wall every time: you either paste in your whole codebase manually every session, or you give up and reach for a paid extension with an API key behind it.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;&lt;a href="https://github.com/arpanvgm/ai-bridge" rel="noopener noreferrer"&gt;AI Bridge&lt;/a&gt;&lt;/strong&gt; — a CLI tool that bridges a local codebase and any browser-based AI chatbot. No API keys, no extensions running in the background, no vendor lock-in. You pack your code, paste it into whichever AI chat you're using, and apply the changes back with a command.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why not just use Copilot, Cursor, or an API key?
&lt;/h2&gt;

&lt;p&gt;Coding agent apps and API-based tools work, but they come with tradeoffs I wanted to avoid:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web-based AI chat plans are usually more generous on the free tier than API usage&lt;/li&gt;
&lt;li&gt;I'm not locked into one provider — I can switch models mid-project depending on which one is handling a task better&lt;/li&gt;
&lt;li&gt;There's no background agent or extension — it's just a CLI and whatever chat tab I already have open&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tradeoff is that browser chats don't have direct filesystem access. AI Bridge closes that gap without turning it into full manual copy-pasting.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;There are two modes, depending on project size.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Simple Mode&lt;/strong&gt; is for projects small enough to fit in a single prompt. You pack the codebase, upload it along with a couple of prompt templates, and apply the AI's response back to your files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dotnet tool &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--global&lt;/span&gt; Tools.AIBridge
&lt;span class="nb"&gt;cd&lt;/span&gt; /path/to/your-project
ai-bridge init
ai-bridge pack
&lt;span class="c"&gt;# Upload ai-bridge/1-SimpleMode/*.md + the generated context files to your AI&lt;/span&gt;
&lt;span class="c"&gt;# Copy the AI's response, then:&lt;/span&gt;
ai-bridge apply &lt;span class="nt"&gt;--paste&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Advanced Mode&lt;/strong&gt; is for larger codebases, where uploading everything every time burns tokens and adds noise. Instead, you generate a one-time &lt;code&gt;index.xml&lt;/code&gt; map of the project. From then on, the AI requests only the specific files it needs for a given task, and AI Bridge gathers and bundles just those into context — so you're not re-uploading the whole repo on every prompt.&lt;/p&gt;

&lt;p&gt;It respects &lt;code&gt;.gitignore&lt;/code&gt; automatically (via &lt;code&gt;git ls-files&lt;/code&gt;), and there's an &lt;code&gt;.aiignore&lt;/code&gt; file for excluding things like test fixtures or generated code that the AI doesn't need to see.&lt;/p&gt;

&lt;p&gt;It's also not tied to .NET specifically — it detects your ecosystem (&lt;code&gt;.csproj&lt;/code&gt;, &lt;code&gt;package.json&lt;/code&gt;, &lt;code&gt;pyproject.toml&lt;/code&gt;, &lt;code&gt;go.mod&lt;/code&gt;, &lt;code&gt;Cargo.toml&lt;/code&gt;) and groups context files accordingly, so it works with Node.js, Python, Go, and Rust projects too.&lt;/p&gt;

&lt;p&gt;Applying changes back works the same way regardless of mode — copy the AI's XML response and run &lt;code&gt;ai-bridge apply --paste&lt;/code&gt;, which reads straight from your clipboard on Windows, macOS, and Linux (X11/Wayland), with a stdin fallback for headless/SSH setups.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://youtu.be/9u7JEi7WwUg" rel="noopener noreferrer"&gt;Here's a short demo of Simple Mode in action&lt;/a&gt;.&lt;/p&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;dotnet tool &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--global&lt;/span&gt; Tools.AIBridge
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Requires the &lt;a href="https://dotnet.microsoft.com/download" rel="noopener noreferrer"&gt;.NET 10 SDK&lt;/a&gt; and Git on your PATH. Full setup and command reference are in the &lt;a href="https://github.com/arpanvgm/ai-bridge" rel="noopener noreferrer"&gt;repo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I built this mainly to solve my own workflow friction, but I'm curious whether it's useful outside that — if you try it, I'd genuinely like to know whether it fits how you work, or where it breaks down. It's MIT licensed, so issues and PRs are welcome too.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>dotnet</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
