{"id":29482851,"url":"https://github.com/guitaripod/omnichat","last_synced_at":"2025-07-15T02:02:26.645Z","repository":{"id":297930972,"uuid":"998260133","full_name":"guitaripod/omnichat","owner":"guitaripod","description":"3rd place T3 Cloneathon Champion","archived":false,"fork":false,"pushed_at":"2025-07-11T07:55:21.000Z","size":5823,"stargazers_count":36,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-12T14:57:49.891Z","etag":null,"topics":["ai","clerk","go","nextjs","ollama","stripe","typescript"],"latest_commit_sha":null,"homepage":"https://omnichat-7pu.pages.dev/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/guitaripod.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-08T08:09:24.000Z","updated_at":"2025-07-12T11:01:14.000Z","dependencies_parsed_at":"2025-06-23T19:20:19.579Z","dependency_job_id":"69ebc269-638f-4f10-bd1b-3914b35792be","html_url":"https://github.com/guitaripod/omnichat","commit_stats":null,"previous_names":["marcusziade/omnichat","guitaripod/omnichat"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/guitaripod/omnichat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guitaripod%2Fomnichat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guitaripod%2Fomnichat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guitaripod%2Fomnichat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guitaripod%2Fomnichat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guitaripod","download_url":"https://codeload.github.com/guitaripod/omnichat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guitaripod%2Fomnichat/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265386079,"owners_count":23756747,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","clerk","go","nextjs","ollama","stripe","typescript"],"created_at":"2025-07-15T02:01:54.617Z","updated_at":"2025-07-15T02:02:26.636Z","avatar_url":"https://github.com/guitaripod.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 OmniChat - The Ultimate AI Conversation Platform\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"docs/images/omnichat-architecture.png\" alt=\"OmniChat Architecture\" width=\"100%\" /\u003e\n  \n  \u003ch3\u003eOne Platform. All AI Models. Unlimited Possibilities.\u003c/h3\u003e\n  \n  [![Deploy with Cloudflare](https://img.shields.io/badge/Deploy%20with-Cloudflare-F38020?style=for-the-badge\u0026logo=cloudflare\u0026logoColor=white)](https://developers.cloudflare.com/pages)\n  [![Next.js 15](https://img.shields.io/badge/Next.js-15-000000?style=for-the-badge\u0026logo=next.js\u0026logoColor=white)](https://nextjs.org)\n  [![TypeScript](https://img.shields.io/badge/TypeScript-5.0-3178C6?style=for-the-badge\u0026logo=typescript\u0026logoColor=white)](https://www.typescriptlang.org)\n  [![License](https://img.shields.io/badge/License-MIT-green?style=for-the-badge)](LICENSE)\n  \n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"#-why-omnichat\"\u003eWhy OmniChat\u003c/a\u003e •\n    \u003ca href=\"#-features\"\u003eFeatures\u003c/a\u003e •\n    \u003ca href=\"#-live-demo\"\u003eDemo\u003c/a\u003e •\n    \u003ca href=\"#-quick-start\"\u003eQuick Start\u003c/a\u003e •\n    \u003ca href=\"#-pricing\"\u003ePricing\u003c/a\u003e •\n    \u003ca href=\"#-tech-stack\"\u003eTech Stack\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n---\n\n## 🌟 Why OmniChat?\n\nIn a world of fragmented AI services, **OmniChat** stands as the unified solution. No more juggling multiple subscriptions, managing different interfaces, or losing conversation history across platforms.\n\n### 🎯 The Problem OmniChat Solves\n\n- **AI Fatigue**: Too many AI platforms, each with their own subscription\n- **Context Loss**: Switching between models means losing your conversation flow\n- **Hidden Costs**: Surprise bills from unclear pricing models\n- **Feature Gaps**: Each platform has strengths, but you need them all\n\n### 💡 Our Solution\n\n**One platform that speaks to all AIs** - with transparent pay-per-use pricing, seamless model switching, and powerful features that amplify your productivity.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"docs/images/feature-overview.png\" alt=\"OmniChat Features\" width=\"100%\" /\u003e\n\u003c/div\u003e\n\n---\n\n## ✨ Features\n\n### 🤖 **Multi-LLM Support**\n\nAccess the world's most powerful AI models in one place:\n\n- **OpenAI**: GPT-4, DALL-E 2/3\n- **Anthropic**: Claude Opus, Sonnet, Haiku\n- **Google**: Gemini Pro, Gemini Flash\n- **xAI**: Grok models\n- **DeepSeek**: Advanced reasoning models\n- **Local AI**: Ollama integration for privacy-first users\n\n### 🔄 **Seamless Model Switching**\n\nSwitch between AI models mid-conversation without losing context. Compare responses from different models side-by-side.\n\n### 📎 **Advanced File Support**\n\n- Upload PDFs, images, documents, and code files\n- AI analyzes and references your files in context\n- Support for multiple file types in a single conversation\n\n### 🌿 **Conversation Branching**\n\nCreate alternate conversation paths to explore different approaches without losing your original thread.\n\n### 📚 **Smart Templates**\n\n15+ pre-built conversation templates for:\n\n- Code generation and debugging\n- Content writing and editing\n- Data analysis and visualization\n- Creative brainstorming\n- Business planning\n\n### 💰 **Transparent Battery System**\n\nOur revolutionary pricing model: **1 Battery = $0.001**\n\n- See exactly what each message costs\n- No hidden fees or surprise charges\n- Pay only for what you use\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"docs/images/pricing-ideology.png\" alt=\"OmniChat Pricing\" width=\"100%\" /\u003e\n\u003c/div\u003e\n\n### 🔌 **Comprehensive API**\n\nBuild on top of OmniChat with our fully documented REST API:\n\n- **20+ Endpoints** covering auth, chat, files, and more\n- **OpenAPI 3.0 Specification** at `/api/openapi.json`\n- **Interactive Documentation** at `/api/v1/docs`\n- **JWT \u0026 OAuth Support** for secure authentication\n- **Streaming Responses** for real-time AI interactions\n- **Go CLI Validator** for testing and development\n\nPerfect for building mobile apps, integrations, or custom clients.\n\n---\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- Node.js 18+ and npm\n- Cloudflare account (free tier works)\n- Stripe account for payments\n- Clerk account for authentication\n\n### 1. Clone and Install\n\n```bash\ngit clone https://github.com/yourusername/omnichat.git\ncd omnichat\nnpm install\n```\n\n### 2. Set Up Cloudflare\n\n```bash\n# Install Wrangler CLI\nnpm install -g wrangler\n\n# Login to Cloudflare\nwrangler login\n\n# Create D1 Database\nwrangler d1 create omnichat-db\n\n# Create R2 Bucket\nwrangler r2 bucket create omnichat-uploads\n```\n\n### 3. Configure Environment\n\n```bash\n# Set up secrets\nwrangler secret put CLERK_SECRET_KEY\nwrangler secret put STRIPE_SECRET_KEY\nwrangler secret put STRIPE_WEBHOOK_SECRET\n\n# Optional: Add your own API keys\nwrangler secret put OPENAI_API_KEY\nwrangler secret put ANTHROPIC_API_KEY\n```\n\n### 4. Initialize Database\n\n```bash\n# Set your D1 database ID\nexport D1_DATABASE_ID=your-database-id-here\n\n# Run migrations\nnpm run db:migrate:prod\n```\n\n### 5. Deploy\n\n```bash\n# Deploy to Cloudflare Pages\nwrangler pages deploy\n```\n\n### 6. Local Development\n\n```bash\n# Start development server\nnpm run dev\n\n# Open http://localhost:3000\n```\n\n---\n\n## 💳 Pricing\n\n\u003cdiv align=\"center\"\u003e\n  \n| Plan | Monthly Price | Batteries | Daily Limit | Best For |\n|------|--------------|-----------|-------------|----------|\n| **Starter** | $4.99 | 6,000 | 200 | Personal use, trying out AI |\n| **Daily** ⭐ | $12.99 | 18,000 | 600 | Regular users, students |\n| **Power** | $29.99 | 45,000 | 1,500 | Professionals, teams |\n| **Ultimate** | $79.99 | 150,000 | 5,000 | Enterprises, heavy users |\n\n\u003c/div\u003e\n\n### Why Batteries?\n\n- **Transparent**: Know exactly what each query costs\n- **Flexible**: Use any model without separate subscriptions\n- **Fair**: Only pay for actual usage, not idle time\n- **Simple**: One currency across all AI models\n\n---\n\n## 🛠 Tech Stack\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"docs/images/user-flow.png\" alt=\"OmniChat User Flow\" width=\"100%\" /\u003e\n\u003c/div\u003e\n\n### Frontend\n\n- **Next.js 15**: React framework with App Router\n- **React 19**: Latest React features\n- **TypeScript 5**: Type-safe development\n- **Tailwind CSS 4**: Utility-first styling\n- **shadcn/ui**: Beautiful, accessible components\n- **Zustand**: Lightweight state management\n\n### Backend \u0026 Infrastructure\n\n- **Cloudflare Workers**: Edge computing runtime\n- **Cloudflare D1**: Serverless SQL database\n- **Cloudflare R2**: Object storage for files\n- **Drizzle ORM**: Type-safe database queries\n- **Clerk**: Authentication and user management\n- **Stripe**: Payment processing\n\n### AI Integrations\n\n- OpenAI SDK\n- Anthropic SDK\n- Google Generative AI\n- xAI SDK\n- DeepSeek SDK\n- Ollama for local models\n\n### Developer Tools\n\n- **OpenAPI Specification**: Complete API documentation\n- **Go CLI Validator**: API testing and validation tool\n- **TypeScript Types**: Full type safety across the stack\n\n---\n\n## 📁 Project Structure\n\n```\nomnichat/\n├── src/\n│   ├── app/              # Next.js App Router pages\n│   ├── components/       # React components\n│   │   ├── chat/        # Chat-specific components\n│   │   ├── layout/      # Layout components\n│   │   └── ui/          # Reusable UI components\n│   ├── hooks/           # Custom React hooks\n│   ├── lib/             # Utilities and configs\n│   ├── services/        # External service integrations\n│   ├── store/           # Zustand state management\n│   └── types/           # TypeScript type definitions\n├── openapi/             # OpenAPI specification and docs\n├── go-cli/              # Go-based API validator CLI\n│   ├── cmd/             # CLI commands\n│   ├── internal/        # Internal packages\n│   └── pkg/             # Reusable packages\n├── docs/                # Documentation and images\n├── scripts/             # Build and deployment scripts\n└── tests/               # Test suites\n```\n\n---\n\n## 🔒 Security \u0026 Privacy\n\n### Local AI Option\n\nRun models locally with Ollama integration for complete privacy and data control.\n\n---\n\n## 🌍 Performance\n\n### Global Edge Network\n\n- **300+ Points of Presence** worldwide\n- **\u003c50ms latency** for 99% of users\n- **99.99% uptime** SLA\n- **Auto-scaling** for demand spikes\n\n### Optimizations\n\n- Server-side rendering for instant loads\n- Streaming responses for real-time feel\n- Intelligent caching strategies\n- Progressive enhancement\n\n---\n\n## 🤝 Contributing\n\nSee the [Contributing Guide](CONTRIBUTING.md) for details.\n\n### Development Workflow\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n---\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguitaripod%2Fomnichat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguitaripod%2Fomnichat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguitaripod%2Fomnichat/lists"}