Build applications with AI-powered code generation. Describe what you want, and VibeCoder writes the code.
Demo Β· Report Bug Β· Request Feature
VibeCoder is an open-source AI coding agent that transforms natural language descriptions into production-ready code. Similar to platforms like Bolt.new, Lovable, and v0.dev, VibeCoder provides a complete in-browser development environment where you can:
- π¬ Chat with AI to describe what you want to build
- π Generate complete file structures automatically
- βοΈ Edit code with a Monaco-powered editor
- π Iterate quickly with AI-assisted modifications
- π¦ Export projects as ZIP files
- Two-Phase Processing: Thinking phase for understanding, then coding phase for execution
- Agentic Loop: Separate LLM calls for each tool execution (read, create, update, delete)
- Context-Aware: AI understands your entire project structure
- Tool Execution: AI can read existing files before modifying them
- Monaco Editor: VS Code-like editing experience
- Syntax Highlighting: Support for 20+ languages
- Multi-Tab Support: Work on multiple files simultaneously
- Real-Time Updates: See AI changes as they happen
- In-Browser Storage: No server needed for file management
- Folder Structure: Organize files in directories
- File Operations: Create, read, update operations (delete by AI only)
- Export to ZIP: Download your entire project
Connect to 12+ AI providers with your own API keys:
| Provider | Models |
|---|---|
| OpenRouter | Access to 100+ models |
| OpenAI | GPT-4, GPT-4o, GPT-3.5 |
| Anthropic | Claude 3.5, Claude 3 |
| Gemini Pro, Gemini Flash | |
| Groq | Llama 3, Mixtral (fast inference) |
| Mistral | Mistral Large, Medium, Small |
| DeepSeek | DeepSeek Coder, Chat |
| Cohere | Command R+, Command R |
| Fireworks | Various open models |
| Cerebras | Fast inference models |
| Hugging Face | Open source models |
| Together AI | Open source models |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β VIBECODER ARCHITECTURE β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββββββββββ β
β β AI Panel β β Explorer β β Code Editor β β
β β β β β β (Monaco) β β
β β - Chat UI β β - File Tree β β β β
β β - Thinking β β - Folders β β - Syntax Highlight β β
β β - Status β β - Files β β - Multi-tab β β
β ββββββββ¬ββββββββ ββββββββ¬ββββββββ ββββββββββββ¬ββββββββββββ β
β β β β β
β βββββββββββββββββββββΌββββββββββββββββββββββββ β
β β β
β ββββββββββΌβββββββββ β
β β Zustand Store β β
β β β β
β β - chatStore β β
β β - fileSystem β β
β β - editorStore β β
β β - agentStore β β
β β - settings β β
β ββββββββββ¬βββββββββ β
β β β
β βββββββββββββββββββββΌββββββββββββββββββββ β
β β β β β
β ββββββββΌβββββββ βββββββββΌββββββββ ββββββββΌβββββββ β
β β /api/think β β /api/agent β β /api/chat β β
β β β β β β β β
β β Reasoning β β Agent Loop β β Streaming β β
β β Phase β β + Tools β β Response β β
β βββββββββββββββ βββββββββββββββββ βββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
User Message
β
βΌ
βββββββββββββββ
β LLM Call #1 β βββΊ Contains tool calls?
βββββββββββββββ
β
βββ NO βββΊ Done (final response)
β
βββ YES βββΊ Execute tools (read_file, create, update, delete)
β β
β βΌ
β Tool Results
β β
β βΌ
β βββββββββββββββ
ββΊ β LLM Call #2 β βββΊ More tool calls? (loop continues)
βββββββββββββββ
β
βββ Until no more tool calls (max 10 iterations)
- Node.js 18+ or Bun
- API key from any supported provider
-
Clone the repository
git clone https://github.com/beeweed/vibecoder.git cd vibecoder -
Install dependencies
npm install # or bun install -
Start the development server
npm run dev # or bun dev -
Open your browser
http://localhost:3000 -
Add your API key
- Click the βοΈ settings icon
- Select your preferred provider
- Enter your API key
- Start coding!
vibecoder/
βββ src/
β βββ app/ # Next.js App Router
β β βββ api/
β β β βββ agent/ # Agentic loop endpoint
β β β βββ chat/ # Streaming chat endpoint
β β β βββ think/ # Reasoning phase endpoint
β β β βββ models/ # Provider-specific endpoints
β β β βββ tools/ # Tool execution endpoints
β β βββ layout.tsx
β β βββ page.tsx
β β βββ globals.css
β β
β βββ components/
β β βββ ai-panel/ # Chat interface
β β β βββ AIPanel.tsx
β β β βββ ToolCallIndicator.tsx
β β βββ editor/ # Monaco code editor
β β β βββ EditorPanel.tsx
β β βββ file-explorer/ # File tree
β β β βββ FileExplorer.tsx
β β βββ layout/ # Header, navigation
β β β βββ Header.tsx
β β β βββ MobileNav.tsx
β β β βββ ModelSelector.tsx
β β βββ modals/ # Settings modal
β β β βββ SettingsModal.tsx
β β βββ ui/ # shadcn/ui components
β β
β βββ stores/ # Zustand state management
β β βββ agentStore.ts # Agent status, activity log
β β βββ chatStore.ts # Messages, generation state
β β βββ editorStore.ts # Tabs, cursor position
β β βββ fileSystemStore.ts # Virtual file system
β β βββ settingsStore.ts # API keys, preferences
β β
β βββ lib/
β β βββ fileIcons.ts # File type icons
β β βββ parser.ts # AI response parser
β β βββ systemPrompt.ts # AI system prompts
β β βββ utils.ts # Utility functions
β β
β βββ types/
β βββ agent.ts # Agent types
β βββ chat.ts # Chat types
β βββ files.ts # File system types
β βββ openrouter.ts # API types
β βββ tools.ts # Tool types
β
βββ public/
βββ package.json
βββ tailwind.config.ts
βββ tsconfig.json
βββ README.md
| Category | Technology |
|---|---|
| Framework | Next.js 15 (App Router) |
| Language | TypeScript 5 |
| Styling | TailwindCSS 3.4 |
| UI Components | Radix UI (shadcn/ui) |
| State Management | Zustand |
| Code Editor | Monaco Editor |
| Animations | Framer Motion |
| Icons | Lucide React |
| Notifications | Sonner |
| Linting | Biome |
Create a .env.local file for default settings:
# App URL (for OpenRouter referrer)
NEXT_PUBLIC_APP_URL=http://localhost:3000VibeCoder supports syntax highlighting for:
- Web:
.js,.jsx,.ts,.tsx,.html,.css,.scss - Data:
.json,.yaml,.yml,.xml,.toml - Docs:
.md,.mdx,.txt - Backend:
.py,.go,.rs,.java,.rb,.php - Database:
.sql,.prisma,.graphql - Config:
.env,.gitignore,Dockerfile - And many more...
VibeCoder uses special markers to parse AI responses:
<<<FILE_CREATE: src/components/Button.tsx>>>
// Your code here
<<<FILE_END>>>
<<<FILE_UPDATE: src/components/Button.tsx>>>
// Updated code here
<<<FILE_END>>>
<<<FILE_DELETE: src/old-file.tsx>>>
<<<TOOL_CALL: read_file>>>
{"path": "src/components/Button.tsx"}
<<<TOOL_END>>>
- E2B Sandbox - Live code preview in sandboxed environment
- Web Search - AI can search the web for documentation
- Git Integration - Push/pull from GitHub repositories
- Deploy - One-click deploy to Vercel/Netlify
- File Upload - Upload images and files with prompts
- Project Templates - Start with Next.js, Python, etc.
- Sub-Agents - Specialized agents for different tasks
- Collaboration - Real-time multiplayer editing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with ii-agent assistance
- Inspired by Bolt.new, v0.dev, and Lovable
- UI components from shadcn/ui
β Star this repo if you find it useful!
Made with β€οΈ by beeweed