How I Built Vibe: A Free, Privacy-First AI Coding Suite to Ditch Paid Tools Forever
Vibe Terminal Demo
(Attach your terminal GIF here β vibe agent command running)
Hey devs! π I'm Musharraf Khan, a solo indie hacker from India grinding on side projects between my day job. If you're like me β tired of shelling out $20/month for Copilot or Cursor, frustrated with API rate limits on free tiers, or just paranoid about code leaking to big tech β then buckle up. Today, I'm sharing the story behind Vibe, my open-source AI coding suite that's 100% free, privacy-obsessed, and packs more punch than most paid alternatives.
Launched just yesterday (November 20, 2025), Vibe has already hit 800+ installs across npm and VS Code Marketplace. No marketing budget, just pure grind and a Twitter thread. In this post, I'll walk you through:
Why I built it (spoiler: free tools for Indian devs like us)
The tech stack and key decisions
Core features with code snippets
How to install and try it yourself
Lessons learned (and what's next)
Let's dive in!
The "Why" β From Frustration to Free Forever
Picture this: Late 2024, I'm knee-deep in a freelance React gig. Copilot suggests code, but every third prompt hits a paywall. Claude's free tier? Token limits after 5 chats. And don't get me started on privacy β do I really want OpenAI slurping my proprietary code?
As an Indian dev (shoutout to Bangalore's startup scene), I know the pain: Premium tools eat into our already tight budgets. We need speed without subscriptions. Inspired by tools like Continue.dev, Cline, and Cursor's CLI vibes, I decided to build something better: Vibe β a dual-threat suite (CLI + VS Code extension) powered by OpenRouter's free tier, with easy upgrades to pro models via Mega LLM.
Goal? Ship fast, stay private, cost zero. Built solo over 4 months, 200+ hours, fueled by chai and Grok chats. Result: v2.1.5 live, MIT-licensed, and already getting love like this testimonial:
"I ship PRs faster without leaving my shell. Vibe changed my workflow!" β Lena Ortiz, Staff Engineer
Tech Stack: Simple, Scalable, Secret Sauce
Vibe is lightweight and extensible β no bloat, just results. Here's the breakdown:
CLI (Node.js/TypeScript): Core engine using OpenRouter SDK for API calls. Added Mega LLM as a secondary provider for flexibility.
VS Code Extension (TypeScript): Leverages VS Code's Webview API for a clean sidebar UI, with dropdown mode selector.
Providers:
Primary: OpenRouter (free models like glm-4.5-air, DeepSeek-Coder-V2 β no signup, anonymous keys).
Secondary: Mega LLM (plug in your API for Claude-3.5-Sonnet, GPT-4o, Gemini-1.5 β seamless toggle).
Other Libs: Chalk for colored output, Commander.js for CLI parsing, Zod for schema validation.
Deployment: npm for CLI, VS Code Marketplace for extension. Website on Vercel for docs.
No databases, no auth servers β everything local. Total bundle size? CLI: 5MB, Extension: 2MB. Runs on anything with Node 18+.
Key decision: Dual-provider abstraction. Users start free, upgrade without rewriting code. Here's a peek at the config logic (simplified from src/providers/index.ts):
TypeScript// providers/index.ts
import { OpenRouter } from './openrouter';
import { MegaLLM } from './megallm';
export type Provider = 'openrouter' | 'megallm';
export class ProviderManager {
private current: Provider = 'openrouter';
private openRouter = new OpenRouter(process.env.OPENROUTER_KEY || '');
private megaLLM = new MegaLLM(process.env.MEGA_KEY || '');
async generate(prompt: string, options: GenerateOptions) {
if (this.current === 'megallm' && this.megaLLM.hasKey()) {
return this.megaLLM.generate(prompt, options);
}
return this.openRouter.generate(prompt, options);
}
switchTo(provider: Provider) {
this.current = provider;
}
}
This lets you do vibe config --provider megallm --key YOUR_KEY and boom β pro models unlocked!
Core Features: CLI and Extension Breakdown
Vibe isn't just another autocomplete β it's agentic. Think: Tell it a goal, get a workflow.
Vibe CLI: Terminal Beast Mode
Your shell's new best friend. Install once, command away.
Key commands:
vibe agent : Full agentic flow β plans, codes, iterates.
vibe debug : Analyzes bugs, suggests fixes.
vibe refactor : Cleans and optimizes code.
vibe git : Automates commits, PRs.
vibe chat : Casual Q&A.
Example: Building a todo app:
Bash# Install
npm i -g vibe-ai-cli
Run agent
vibe agent "Create a React todo app with localStorage, styled in Tailwind"
Output (excerpt β it scaffolds files!):
text[Agent Planning] Goal: React Todo with localStorage & Tailwind.
Step 1: Init project structure.
Step 2: Core components: TodoList, TodoItem.
Step 3: Storage hook.
Step 4: Styling.
Generating src/App.tsx...
import React, { useState, useEffect } from 'react';
import { useLocalStorage } from './hooks/useLocalStorage'; // Auto-generated hook
function App() {
const [todos, setTodos] = useLocalStorage('todos', []);
// ... full component code here
}
export default App;
It even runs npm init under the hood if needed. Free tier handles 80% cases; Mega LLM crushes complex ones.
Vibe Code: VS Code Sidebar Magic
No more tab-switching. Install the extension, sidebar pops up with a dropdown for 6 modes:
ModeWhat It DoesUse CaseArchitectPlans project structure"Outline a full-stack MERN app"CodeGenerates/edits codeInline suggestions like CopilotDebugFinds & fixes errors"Why is this async loop hanging?"AskQuick queries/explainers"Refactor this to hooks"OrchestratorChains tasks (e.g., code + test + deploy)Multi-step workflowsProject-ResearchAnalyzes repos/docs"Summarize this codebase"
UI is Kilo Code-inspired: Minimal, dark-mode native. Memory persists across sessions (local storage only β privacy win).
Snippet from extension's activation (extension.ts):
TypeScriptimport * as vscode from 'vscode';
import { SidebarProvider } from './SidebarProvider';
export function activate(context: vscode.ExtensionContext) {
const sidebarProvider = new SidebarProvider(context.extensionUri);
context.subscriptions.push(
vscode.window.registerWebviewViewProvider('vibe-sidebar', sidebarProvider)
);
// Mode dropdown handler
sidebarProvider.onDidReceiveMessage((message) => {
if (message.command === 'switchMode') {
// Call ProviderManager.switchTo(message.mode)
sidebarProvider.updateWebview(message.mode);
}
});
}
Installation: 30 Seconds to Magic
CLI:
Bashnpm i -g vibe-ai-cli
vibe --help # Test it!
VS Code:
Open Extensions (Ctrl+Shift+X).
Search "Vibe VS Code".
Install β Reload β Sidebar appears (View > Vibe).
Config for Mega LLM (optional):
Bashvibe config --provider megallm --key sk-your-mega-key
Full docs: vibe-cli.vercel.app
Lessons Learned: Grinding Solo Ain't Easy
MVP First: Shipped v1 with just CLI basics. Iterated based on test runs (thanks, Grok for debugging chats!).
Free Tier Traps: OpenRouter's limits? Handled with fallbacks to lighter models.
Privacy Paranoia: Audited every API call β no logs, no phoning home.
Launch Hype: Twitter thread + Product Hunt = 800 installs Day 1. Reddit's r/vscode was gold for feedback.
Burnout Hack: 1-hour daily sprints. Tools like this? They're my therapy.
Challenges ahead: Scaling to mobile? Voice mode? Hit 10K users by year-end?
Try Vibe Today β And Tell Me What You Think
Vibe isn't perfect (yet), but it's yours. Free forever, open-source, and built for us bootstrappers.
CLI Repo: github.com/mk-knight23/vibe-cli β
Extension Repo: github.com/mk-knight23/vibe-vscode β
npm: vibe-ai-cli
Marketplace: Vibe VS Code
Installed it? Reply below with your first "vibe agent" story. Bug? Feature request? DM on X (@mk_knight23). Let's make coding fun again β no strings attached.
Cheers to shipping! π
Musharraf Khan | Building free tools for devs | Follow for more launches
Top comments (0)