{"id":45410259,"url":"https://github.com/cameronking4/better-chatbot","last_synced_at":"2026-02-21T22:33:47.289Z","repository":{"id":326337533,"uuid":"1104431975","full_name":"cameronking4/better-chatbot","owner":"cameronking4","description":"Fork of better-chatbot with features like scheduled tasks, remote stdio transport via AKS, generate agents and workflows with AI \u0026 more","archived":false,"fork":false,"pushed_at":"2025-11-27T07:19:50.000Z","size":2471,"stargazers_count":1,"open_issues_count":11,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-29T23:46:13.150Z","etag":null,"topics":["azure","bullmq","drizzle","nextjs","postgresql","redis","vercel-ai-sdk"],"latest_commit_sha":null,"homepage":"http://135.234.147.179","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/cameronking4.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","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,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":"cgoinglove"}},"created_at":"2025-11-26T07:53:15.000Z","updated_at":"2025-11-28T09:24:32.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cameronking4/better-chatbot","commit_stats":null,"previous_names":["cameronking4/better-chatbot"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/cameronking4/better-chatbot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cameronking4%2Fbetter-chatbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cameronking4%2Fbetter-chatbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cameronking4%2Fbetter-chatbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cameronking4%2Fbetter-chatbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cameronking4","download_url":"https://codeload.github.com/cameronking4/better-chatbot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cameronking4%2Fbetter-chatbot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29695781,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T18:18:25.093Z","status":"ssl_error","status_checked_at":"2026-02-21T18:18:22.435Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["azure","bullmq","drizzle","nextjs","postgresql","redis","vercel-ai-sdk"],"created_at":"2026-02-21T22:33:46.572Z","updated_at":"2026-02-21T22:33:47.280Z","avatar_url":"https://github.com/cameronking4.png","language":"TypeScript","funding_links":["https://github.com/sponsors/cgoinglove"],"categories":[],"sub_categories":[],"readme":"\u003cimg width=\"1184\" height=\"576\" alt=\"thumbnail\" loading=\"lazy\" src=\"https://github.com/user-attachments/assets/d6ba80ff-a62a-4920-b266-85c4a89d6076\" /\u003e\n\n[![MCP Supported](https://img.shields.io/badge/MCP-Supported-00c853)](https://modelcontextprotocol.io/introduction)\n[![Local First](https://img.shields.io/badge/Local-First-blue)](https://localfirstweb.dev/)\n[![Discord](https://img.shields.io/discord/1374047276074537103?label=Discord\u0026logo=discord\u0026color=5865F2)](https://discord.gg/gCRu69Upnp)\n\n[![Deploy with Vercel](https://vercel.com/button)](\u003chttps://vercel.com/new/clone?repository-url=https://github.com/cgoinglove/better-chatbot\u0026env=BETTER_AUTH_SECRET\u0026env=OPENAI_API_KEY\u0026env=GOOGLE_GENERATIVE_AI_API_KEY\u0026env=ANTHROPIC_API_KEY\u0026envDescription=BETTER_AUTH_SECRET+is+required+(enter+any+secret+value).+At+least+one+LLM+provider+API+key+(OpenAI,+Claude,+or+Google)+is+required,+but+you+can+add+all+of+them.+See+the+link+below+for+details.\u0026envLink=https://github.com/cgoinglove/better-chatbot/blob/main/.env.example\u0026demo-title=better-chatbot\u0026demo-description=An+Open-Source+Chatbot+Template+Built+With+Next.js+and+the+AI+SDK+by+Vercel.\u0026products=[{\"type\":\"integration\",\"protocol\":\"storage\",\"productSlug\":\"neon\",\"integrationSlug\":\"neon\"},{\"type\":\"integration\",\"protocol\":\"storage\",\"productSlug\":\"upstash-kv\",\"integrationSlug\":\"upstash\"},{\"type\":\"blob\"}]\u003e)\n\n🚀 **[Live Demo](https://better-chatbot-demo.vercel.app/)** | See the experience in action in the [preview](#preview) below!\n\n#### Demo Chats\n\n- **MCP Tools Demo:** [Chat with Tools](https://better-chatbot-demo.vercel.app/export/a4820921-8012-496b-8a5d-13757050bafe)\n- **Image Generation Demo:** [Chat with Image Generation](https://better-chatbot-demo.vercel.app/export/452ad745-9efb-49ae-9114-10db15f1b827)\n\n## Quick Start 🚀\n\n\u003e **Get your app running in minutes! No installation or payment required.**\n\nYou only need **one AI Provider API Key** (OpenAI, Claude, Gemini, etc.). Everything else runs on free tiers - database, file storage, and hosting.\n\n👉 **[Click this guide to deploy your site with just a few clicks](docs/tips-guides/vercel.md)**\n\n---\n\n**Better Chatbot** - A better open-source AI chatbot for individuals and teams, inspired by ChatGPT, Claude, Grok, and Gemini.\n\n• **Multi-AI Support** - Integrates all major LLMs: OpenAI, Anthropic, Google, xAI, Ollama, and more  \n• **Powerful Tools** - MCP protocol, web search, JS/Python code execution, data visualization  \n• **Image Generation** - Create and edit images with AI models (OpenAI, Google Gemini, xAI)  \n• **Automation** - Custom agents, visual workflows, artifact generation  \n• **Collaboration** - Share agents, workflows, and MCP configurations with your team  \n• **Voice Assistant** - Realtime voice chat with full MCP tool integration  \n• **Intuitive UX** - Instantly invoke any feature with `@mention`  \n• **Quick Start** - Deploy free with Vercel Deploy button\n\nBuilt with Vercel AI SDK and Next.js, combining the best features of leading AI services into one platform.\n\n## Table of Contents\n\n- [Table of Contents](#table-of-contents)\n- [Preview](#preview)\n  - [🧩 Browser Automation with Playwright MCP](#-browser-automation-with-playwright-mcp)\n  - [🔗 Visual Workflows as Custom Tools](#-visual-workflows-as-custom-tools)\n  - [🤖 Custom Agents](#-custom-agents)\n  - [🎙️ Realtime Voice Assistant + MCP Tools](#️-realtime-voice-assistant--mcp-tools)\n  - [⚡️ Quick Tool Mentions (`@`) \\\u0026 Presets](#️-quick-tool-mentions---presets)\n  - [🧭 Tool Choice Mode](#-tool-choice-mode)\n  - [🛠️ Default Tools](#️-default-tools)\n    - [🌐 Web Search](#-web-search)\n    - [⚡️ JS,PYTHON Executor](#️-jspython-executor)\n    - [📊 Data Visualization Tools](#-data-visualization-tools)\n- [Getting Started](#getting-started)\n  - [Quick Start (Docker Compose Version) 🐳](#quick-start-docker-compose-version-)\n  - [Quick Start (Local Version) 🚀](#quick-start-local-version-)\n  - [Environment Variables](#environment-variables)\n- [📘 Guides](#-guides)\n  - [🔌 MCP Server Setup \\\u0026 Tool Testing](#-mcp-server-setup--tool-testing)\n  - [🐳 Docker Hosting Guide](#-docker-hosting-guide)\n  - [▲ Vercel Hosting Guide](#-vercel-hosting-guide)\n  - [🗂️ File Storage Drivers](#️-file-storage-drivers)\n  - [🎯 System Prompts \\\u0026 Chat Customization](#-system-prompts--chat-customization)\n  - [🔐 OAuth Sign-In Setup](#-oauth-sign-in-setup)\n  - [🕵🏿 Adding openAI like providers](#-adding-openai-like-providers)\n  - [🧪 E2E Testing Guide](#-e2e-testing-guide)\n- [💡 Tips](#-tips)\n  - [💬 Temporary Chat Windows](#-temporary-chat-windows)\n- [🗺️ Roadmap](#️-roadmap)\n- [🙌 Contributing](#-contributing)\n- [💬 Join Our Discord](#-join-our-discord)\n\n\u003e This project is evolving at lightning speed! ⚡️ We're constantly shipping new features and smashing bugs. **Star this repo** to join the ride and stay in the loop with the latest updates!\n\n## Preview\n\nGet a feel for the UX — here's a quick look at what's possible.\n\n### 🧩 Browser Automation with Playwright MCP\n\n![preview](https://github.com/user-attachments/assets/e4febb04-26d5-45da-a7bb-f7d452d333c2)\n\n**Example:** Control a web browser using Microsoft's [playwright-mcp](https://github.com/microsoft/playwright-mcp) tool.\n\n- The LLM autonomously decides how to use tools from the MCP server, calling them multiple times to complete a multi-step task and return a final message.\n\nSample prompt:\n\n```prompt\n1. Use the @tool('web-search') to look up information about “modelcontetprotocol.”\n\n2. Then, using : @mcp(\"playwright\")\n   - navigate Google (https://www.google.com)\n   - Click the “Login” button\n   - Enter my email address (neo.cgoing@gmail.com)\n   - Clock the \"Next\"  button\n   - Close the browser\n```\n\n\u003cbr/\u003e\n\n### 🔗 Visual Workflows as Custom Tools\n\n\u003cimg width=\"1912\" height=\"953\" alt=\"workflow\" loading=\"lazy\" src=\"https://github.com/user-attachments/assets/e69e72e8-595c-480e-b519-4531f4c6331f\" /\u003e\n\n\u003cimg width=\"1567\" alt=\"workflow-mention\" loading=\"lazy\" src=\"https://github.com/user-attachments/assets/cf3e1339-ee44-4615-a71d-f6b46833e41f\" /\u003e\n\n**Example:** Create custom workflows that become callable tools in your chat conversations.\n\n- Build visual workflows by connecting LLM nodes (for AI reasoning) and Tool nodes (for MCP tool execution)\n- Publish workflows to make them available as `@workflow_name` tools in chat\n- Chain complex multi-step processes into reusable, automated sequences\n\n\u003cbr/\u003e\n\n### 🤖 Custom Agents\n\n\u003cimg width=\"1567\" alt=\"agent-example\" loading=\"lazy\" src=\"https://github.com/user-attachments/assets/d0a325c0-ff1e-4038-b6bf-fcf57659a5c1\" /\u003e\n\n**Example:** Create specialized AI agents with custom instructions and tool access.\n\n- Define custom agents with specific system prompts and available tools\n- Easily invoke agents in chat using `@agent_name`\n- Build task-specific assistants like a GitHub Manager agent with issue/PR tools and project context\n\nFor instance, create a GitHub Manager agent by:\n\n- Providing GitHub tools (issue/PR creation, comments, queries)\n- Adding project details to the system prompt\n- Calling it with `@github_manager` to manage your repository\n\n\u003cbr/\u003e\n\n### 🎙️ Realtime Voice Assistant + MCP Tools\n\n\u003cp align=\"center\"\u003e\n  \u003cvideo src=\"https://github.com/user-attachments/assets/e2657b8c-ce0b-40dd-80b6-755324024973\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\nThis demo showcases a **realtime voice-based chatbot assistant** built with OpenAI's new Realtime API — now extended with full **MCP tool integration**.\nTalk to the assistant naturally, and watch it execute tools in real time.\n\n### ⚡️ Quick Tool Mentions (`@`) \u0026 Presets\n\n\u003cimg width=\"1225\" alt=\"image\" src=\"https://github.com/user-attachments/assets/dfe76b3b-c3d8-436e-8a7c-7b23292e234c\" loading=\"lazy\"/\u003e\n\nQuickly call tool during chat by typing `@toolname`.\nNo need to memorize — just type `@` and pick from the list!\n\n**Tool Selection vs. Mentions (`@`) — When to Use What:**\n\n- **Tool Selection**: Make frequently used tools always available to the LLM across all chats. Great for convenience and maintaining consistent context over time.\n- **Mentions (`@`)**: Temporarily bind only the mentioned tools for that specific response. Since only the mentioned tools are sent to the LLM, this saves tokens and can improve speed and accuracy.\n\nEach method has its own strengths — use them together to balance efficiency and performance.\n\nYou can also create **tool presets** by selecting only the MCP servers or tools you need.\nSwitch between presets instantly with a click — perfect for organizing tools by task or workflow.\n\n### 🧭 Tool Choice Mode\n\n\u003cimg width=\"1225\" alt=\"image\" src=\"https://github.com/user-attachments/assets/8fc64c6a-30c9-41a4-a5e5-4e8804f73473\" loading=\"lazy\"/\u003e\n\nControl how tools are used in each chat with **Tool Choice Mode** — switch anytime with `⌘P`.\n\n- **Auto:** The model automatically calls tools when needed.\n- **Manual:** The model will ask for your permission before calling a tool.\n- **None:** Tool usage is disabled completely.\n\nThis lets you flexibly choose between autonomous, guided, or tool-free interaction depending on the situation.\n\n### 🛠️ Default Tools\n\n#### 🌐 Web Search\n\n\u003cimg width=\"1034\" height=\"940\" alt=\"web-search\" src=\"https://github.com/user-attachments/assets/261037d9-e1a7-44ad-b45e-43780390a94e\" /\u003e\n\nBuilt-in web search powered by [Exa AI](https://exa.ai). Search the web with semantic AI and extract content from URLs directly in your chats.\n\n- **Optional:** Add `EXA_API_KEY` to `.env` to enable web search\n- **Free Tier:** 1,000 requests/month at no cost, no credit card required\n- **Easy Setup:** Get your API key instantly at [dashboard.exa.ai](https://dashboard.exa.ai)\n\n#### 🎨 Image Generation\n\n\u003cimg width=\"1034\" height=\"940\" loading=\"lazy\" alt=\"image-generation\" src=\"https://github.com/user-attachments/assets/b081c837-8948-4f4d-a2f4-c8630cf0eaa2\" /\u003e\n\nBuilt-in image generation and editing capabilities powered by AI models. Create, edit, and modify images directly in your chats.\n\n- **Supported Operations:** Image generation, editing, and composition\n- **Current Models:** Gemini Nano Banana, OpenAI\n\n#### ⚡️ JS,PYTHON Executor\n\n\u003cimg width=\"1225\" alt=\"js-executor-preview\" src=\"https://github.com/user-attachments/assets/7deed824-e70b-46d4-a294-de20ed4dc869\" loading=\"lazy\"/\u003e\n\nIt is a simple JS execution tool.\n\n#### 📊 Data Visualization Tools\n\n**Interactive Tables**: Create feature-rich data tables with advanced functionality:\n\n- **Sorting \u0026 Filtering**: Sort by any column, filter data in real-time\n- **Search \u0026 Highlighting**: Global search with automatic text highlighting\n- **Export Options**: Export to CSV or Excel format with lazy-loaded libraries\n- **Column Management**: Show/hide columns with visibility controls\n- **Pagination**: Handle large datasets with built-in pagination\n- **Data Type Support**: Proper formatting for strings, numbers, dates, and booleans\n\n**Chart Generation**: Visualize data with various chart types (bar, line, pie charts)\n\n\u003e Additionally, many other tools are provided, such as an HTTP client for API requests and more.\n\n\u003cbr/\u003e\n\n…and there's even more waiting for you.\nTry it out and see what else it can do!\n\n\u003cbr/\u003e\n\n## Getting Started\n\n\u003e This project uses [pnpm](https://pnpm.io/) as the recommended package manager.\n\n```bash\n# If you don't have pnpm:\nnpm install -g pnpm\n```\n\n### Quick Start (Docker Compose Version) 🐳\n\n```bash\n# 1. Install dependencies\npnpm i\n\n# 2. Enter only the LLM PROVIDER API key(s) you want to use in the .env file at the project root.\n# Example: The app works with just OPENAI_API_KEY filled in.\n# (The .env file is automatically created when you run pnpm i.)\n\n# 3. Build and start all services (including PostgreSQL) with Docker Compose\npnpm docker-compose:up\n\n```\n\n### Quick Start (Local Version) 🚀\n\n```bash\npnpm i\n\n#(Optional) Start a local PostgreSQL instance\n# If you already have your own PostgreSQL running, you can skip this step.\n# In that case, make sure to update the PostgreSQL URL in your .env file.\npnpm docker:pg\n\n# Enter required information in the .env file\n# The .env file is created automatically. Just fill in the required values.\n# For the fastest setup, provide at least one LLM provider's API key (e.g., OPENAI_API_KEY, CLAUDE_API_KEY, GEMINI_API_KEY, etc.) and the PostgreSQL URL you want to use.\n\npnpm build:local \u0026\u0026 pnpm start\n\n# (Recommended for most cases. Ensures correct cookie settings.)\n# For development mode with hot-reloading and debugging, you can use:\n# pnpm dev\n```\n\nAlternative: Use Docker Compose for DB only (run app via pnpm)\n\n```bash\n# Start Postgres only via compose\n# Ensure your .env includes: POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB matching POSTGRES_URL\ndocker compose -f docker/compose.yml up -d postgres\n\n# Apply migrations\npnpm db:migrate\n\n\n# Run app locally\npnpm dev   # or: pnpm build \u0026\u0026 pnpm start\n```\n\nOpen [http://localhost:3000](http://localhost:3000) in your browser to get started.\n\n### Environment Variables\n\nThe `pnpm i` command generates a `.env` file. Add your API keys there.\n\n```dotenv\n# === LLM Provider API Keys ===\n# You only need to enter the keys for the providers you plan to use\nGOOGLE_GENERATIVE_AI_API_KEY=****\nOPENAI_API_KEY=****\nXAI_API_KEY=****\nANTHROPIC_API_KEY=****\nOPENROUTER_API_KEY=****\nOLLAMA_BASE_URL=http://localhost:11434/api\n\n\n\n# Secret for Better Auth (generate with: npx @better-auth/cli@latest secret)\nBETTER_AUTH_SECRET=****\n\n# (Optional)\n# URL for Better Auth (the URL you access the app from)\nBETTER_AUTH_URL=\n\n# === Database ===\n# If you don't have PostgreSQL running locally, start it with: pnpm docker:pg\nPOSTGRES_URL=postgres://your_username:your_password@localhost:5432/your_database_name\n\n# (Optional)\n# === Tools ===\n# Exa AI for web search and content extraction (optional, but recommended for @web and research features)\nEXA_API_KEY=your_exa_api_key_here\n\n\n# Whether to use file-based MCP config (default: false)\nFILE_BASED_MCP_CONFIG=false\n\n# === File Storage ===\n# Vercel Blob is the default storage driver (works in both local dev and production)\n# Pull the token locally with `vercel env pull`\nFILE_STORAGE_TYPE=vercel-blob\nFILE_STORAGE_PREFIX=uploads\nBLOB_READ_WRITE_TOKEN=\n\n# -- S3 (coming soon) --\n# FILE_STORAGE_TYPE=s3\n# FILE_STORAGE_PREFIX=uploads\n# FILE_STORAGE_S3_BUCKET=\n# FILE_STORAGE_S3_REGION=\n\n# (Optional)\n# === OAuth Settings ===\n# Fill in these values only if you want to enable Google/GitHub/Microsoft login\n\n#GitHub\nGITHUB_CLIENT_ID=\nGITHUB_CLIENT_SECRET=\n\n#Google\nGOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n# Set to 1 to force account selection\nGOOGLE_FORCE_ACCOUNT_SELECTION=\n\n\n# Microsoft\nMICROSOFT_CLIENT_ID=\nMICROSOFT_CLIENT_SECRET=\n# Optional Tenant Id\nMICROSOFT_TENANT_ID=\n# Set to 1 to force account selection\nMICROSOFT_FORCE_ACCOUNT_SELECTION=\n\n# Set this to 1 to disable user sign-ups.\nDISABLE_SIGN_UP=\n\n# Set this to 1 to disallow adding MCP servers.\nNOT_ALLOW_ADD_MCP_SERVERS=\n```\n\n\u003cbr/\u003e\n\n## 📘 Guides\n\nStep-by-step setup guides for running and configuring better-chatbot.\n\n#### [🔌 MCP Server Setup \u0026 Tool Testing](./docs/tips-guides/mcp-server-setup-and-tool-testing.md)\n\n- How to add and configure MCP servers in your environment\n\n#### [🐳 Docker Hosting Guide](./docs/tips-guides/docker.md)\n\n- How to self-host the chatbot using Docker, including environment configuration.\n\n#### [▲ Vercel Hosting Guide](./docs/tips-guides/vercel.md)\n\n- Deploy the chatbot to Vercel with simple setup steps for production use.\n\n#### [🗂️ File Storage Drivers](./docs/tips-guides/file-storage.md)\n\n- Cloud-based file storage with Vercel Blob (default) for seamless uploads in both development and production. S3 support coming soon.\n\n#### [🎯 System Prompts \u0026 Chat Customization](./docs/tips-guides/system-prompts-and-customization.md)\n\n- Personalize your chatbot experience with custom system prompts, user preferences, and MCP tool instructions\n\n#### [🔐 OAuth Sign-In Setup](./docs/tips-guides/oauth.md)\n\n- Configure Google, GitHub, and Microsoft OAuth for secure user login support.\n\n#### [🕵🏿 Adding openAI like providers](docs/tips-guides/adding-openAI-like-providers.md)\n\n- Adding openAI like ai providers\n\n#### [🧪 E2E Testing Guide](./docs/tips-guides/e2e-testing-guide.md)\n\n- Comprehensive end-to-end testing with Playwright including multi-user scenarios, agent visibility testing, and CI/CD integration\n  \u003cbr/\u003e\n\n## 💡 Tips\n\n#### [💬 Temporary Chat Windows](./docs/tips-guides/temporary_chat.md)\n\n- Open lightweight popup chats for quick side questions or testing — separate from your main thread.\n\n## 🗺️ Roadmap\n\nPlanned features coming soon to better-chatbot:\n\n- [x] **File Upload \u0026 Storage** (Vercel Blob integration)\n- [x] **Image Generation**\n- [ ] **Collaborative Document Editing** (like OpenAI Canvas: user \u0026 assistant co-editing)\n- [ ] **RAG (Retrieval-Augmented Generation)**\n- [ ] **Web-based Compute** (with [WebContainers](https://webcontainers.io) integration)\n\n💡 If you have suggestions or need specific features, please create an [issue](https://github.com/cgoinglove/better-chatbot/issues)!\n\n## 💖 Support\n\nIf this project has been helpful to you, please consider supporting its development:\n\n- ⭐ **Star** this repository\n- 🐛 **Report** bugs and suggest features\n- 💰 **[Become a sponsor](https://github.com/sponsors/cgoinglove)** to support ongoing development\n\nYour support helps maintain and improve this project. Thank you! 🙏\n\n## 🙌 Contributing\n\nWe welcome all contributions! Bug reports, feature ideas, code improvements — everything helps us build the best local AI assistant.\n\n\u003e **⚠️ Please read our [Contributing Guide](./CONTRIBUTING.md) before submitting any Pull Requests or Issues.** This helps us work together more effectively and saves time for everyone.\n\n**For detailed contribution guidelines**, please see our [Contributing Guide](./CONTRIBUTING.md).\n\n**Language Translations:** Help us make the chatbot accessible to more users by adding new language translations. See [language.md](./messages/language.md) for instructions on how to contribute translations.\n\nLet's build it together 🚀\n\n## 💬 Join Our Discord\n\n[![Discord](https://img.shields.io/discord/1374047276074537103?label=Discord\u0026logo=discord\u0026color=5865F2)](https://discord.gg/gCRu69Upnp)\n\nConnect with the community, ask questions, and get support on our official Discord server!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcameronking4%2Fbetter-chatbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcameronking4%2Fbetter-chatbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcameronking4%2Fbetter-chatbot/lists"}