# πŸ”€ Chat Switchboard **The Plugin-First, Multi-Model AI Platform** Chat Switchboard is a next-generation AI interface that works offline or managed, with a unique plugin architecture and visual workflow builder. [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Go Version](https://img.shields.io/badge/Go-1.21+-00ADD8?logo=go)](https://go.dev/) [![Python Version](https://img.shields.io/badge/Python-3.9+-3776AB?logo=python)](https://python.org/) --- ## 🎯 What Makes Us Different | Feature | Chat Switchboard | Others | |---------|-----------------|--------| | **Works Offline** | βœ… Full-featured unmanaged mode | ❌ Backend required | | **Plugin System** | βœ… Core features ARE plugins | 🟑 Limited or none | | **Visual Workflows** | βœ… Chain multiple AI models | ❌ Single-shot only | | **Multi-Model Routing** | βœ… Auto-select best/cheapest | 🟑 Manual only | | **Channels** | βœ… User + AI collaboration | 🟑 Users only | | **Self-Hosted** | βœ… Easy Docker setup | 🟑 Complex | **Unique Selling Points:** 1. **Workflows** - No competitor has visual AI orchestration (like n8n for LLMs) 2. **Dual-Mode** - Privacy-first offline mode OR full collaboration backend 3. **Plugin-First** - Chat, Channels, Notes are ALL plugins (proves extensibility) 4. **Smart Routing** - Automatic model selection for cost/quality optimization --- ## πŸš€ Quick Start ### Option 1: Offline Mode (No Backend) ```bash # Clone and build git clone https://git.gobha.me/xcaliber/chat-switchboard.git cd chat-switchboard ./build.sh # Open in browser xdg-open standalone/index.html ``` **Configure API:** 1. Click βš™οΈ Settings 2. Enter API endpoint (OpenAI, OpenRouter, Venice.ai, Ollama, etc.) 3. Add your API key 4. Start chatting! ### Option 2: Full Backend (Collaboration + Workflows) ```bash # Clone repo git clone https://git.gobha.me/xcaliber/chat-switchboard.git cd chat-switchboard # Configure cp .env.example .env # Edit .env with your settings # Start with Docker docker-compose up -d # Access at http://localhost:3000 ``` See [GETTING_STARTED.md](docs/GETTING_STARTED.md) for detailed instructions. --- ## ✨ Core Features ### 1. πŸ’¬ Chat (User β†’ AI) - Multi-model support (OpenAI, Anthropic, Ollama, etc.) - Per-conversation model switching - Streaming responses with stop button - Export (Markdown, JSON, Plain Text) - Auto-routing to best/cheapest model (managed mode) ### 2. πŸ‘₯ Channels (User β†’ User + AI) **Managed mode only** Multi-user chat rooms where you can @mention AI models: ``` #general @alice: What do you think about this design? @claude: I'd suggest a darker color scheme for better contrast... @bob: Great idea! @gpt4 can you review the implementation? @gpt4: I found a potential issue in the error handling... ``` - Public/private/DM channels - Real-time updates (WebSocket) - Threaded conversations - Reactions and formatting ### 3. πŸ“ Notes & Knowledge Bases - Markdown notes with folders - Full-text and semantic search - RAG (Retrieval Augmented Generation) in managed mode - Link notes to chats ### 4. πŸ”„ Workflows ⭐ (UNIQUE FEATURE) **Managed mode only** Visual workflow builder for chaining AI models and tools: ``` [User Query] β†’ [Web Search] β†’ [GPT-4 Summarize] β†’ [Claude Verify] β†’ [Save to KB] ``` **Use Cases:** - **Research Assistant:** Search β†’ Summarize β†’ Verify β†’ Save - **Code Review:** Fetch PR β†’ Find Bugs β†’ Security Check β†’ Report - **Multi-Model Consensus:** Run through 3 models β†’ Vote β†’ Best answer - **Content Factory:** Outline β†’ Draft β†’ Edit β†’ SEO β†’ Publish See [WORKFLOWS.md](docs/WORKFLOWS.md) for details. --- ## πŸ”Œ Extension System ### Everything is a Plugin Chat Switchboard proves its extensibility by implementing **core features as plugins**: ``` Core (Minimal) Plugins (Modular) β”œβ”€β”€ HTTP Router β”œβ”€β”€ Chat Engine (Python) β”œβ”€β”€ WebSocket Hub β”œβ”€β”€ Channels (Go) β”œβ”€β”€ Extension Manager β”œβ”€β”€ RAG Engine (Python) β”œβ”€β”€ Auth/Users β”œβ”€β”€ Workflows (Go/Python) └── PostgreSQL └── Your Custom Plugin... ``` ### Frontend Plugins (JavaScript) ```javascript // Simple UI extension window.ChatSwitchboard.registerExtension({ name: 'token-counter', hooks: { onMessageSend: (msg) => { const tokens = estimateTokens(msg); showToast(`~${tokens} tokens`); } } }); ``` ### Backend Plugins (Python, Go, Node.js) ```python # Full-featured extension from fastapi import FastAPI app = FastAPI() @app.post("/tools/web_search") async def search_web(query: str): results = duckduckgo_search(query) return {"results": results} ``` **Create a plugin:** ```bash # Use template cp -r extensions/_template-python extensions/my-plugin cd extensions/my-plugin # Edit extension.json, main.py python main.py ``` See [PLUGIN_SPEC.md](docs/PLUGIN_SPEC.md) for complete guide. --- ## πŸ“š Documentation - **[Getting Started](docs/GETTING_STARTED.md)** - Installation and setup - **[Architecture](docs/ARCHITECTURE.md)** - System design and data flow - **[Workflows](docs/WORKFLOWS.md)** - Visual workflow builder guide - **[Plugin Spec](docs/PLUGIN_SPEC.md)** - Extension development - **[Roadmap](ROADMAP.md)** - Development timeline and features --- ## πŸ—οΈ Architecture ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Frontend (Vanilla JS) β”‚ β”‚ - Works offline (LocalStorage) β”‚ β”‚ - Switches to backend if available β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ [Unmanaged] [Managed Mode] LocalStorage β”‚ β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Go Backend β”‚ β”‚ - Auth/Users β”‚ β”‚ - WebSocket β”‚ β”‚ - Extensions β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ PostgreSQL Extensions - Chats, users - Chat (Python) - Channels - RAG (Python) - Knowledge - Workflows (Go) - pgvector - Custom tools... ``` --- ## πŸ› οΈ Tech Stack ### Frontend - **Vanilla JavaScript** - No framework bloat - **LocalStorage** - Offline-first - **WebSocket** - Real-time updates (managed) ### Backend (Managed Mode) - **Go** - Core API, routing, WebSocket - **PostgreSQL** - Primary storage - **pgvector** - Vector embeddings for RAG - **Redis** - WebSocket pub/sub (optional) - **Python** - AI/ML extensions - **Docker** - Easy deployment --- ## 🎨 Screenshots _(Coming soon - will add workflow builder, channels, chat interface)_ --- ## πŸ—ΊοΈ Roadmap ### Current: Phase 1 - Backend Core βœ… - [x] Frontend (unmanaged mode) - [ ] Go backend with PostgreSQL - [ ] User authentication - [ ] WebSocket server - [ ] Extension manager ### Next: Phase 2 - Core Features as Plugins - [ ] Chat Engine (Python) - [ ] Channels (Go) - [ ] Notes (Go) - [ ] RAG Engine (Python) ### Future: Phase 3+ - [ ] Visual Workflow Builder - [ ] Desktop app (Tauri) - [ ] Extension marketplace - [ ] Mobile PWA See [ROADMAP.md](ROADMAP.md) for complete timeline. --- ## 🀝 Contributing We welcome contributions! Here's how: 1. **Pick a task** from [ROADMAP.md](ROADMAP.md) or GitHub Issues 2. **Fork** the repo 3. **Create** a feature branch 4. **Submit** a PR **Good first issues:** - Frontend UI improvements - Backend handler implementations - Example extensions - Documentation --- ## πŸ“– Example Use Cases ### Personal (Unmanaged) - Privacy-focused AI assistant - Offline research tool - Model comparison testing ### Team (Managed) - Collaborative AI workspace - Shared knowledge bases - Automated workflows - Code review pipelines ### Enterprise - Self-hosted AI platform - Custom model routing - Compliance and audit logs - SSO/SAML integration --- ## πŸ†š Comparison ### vs Open WebUI - βœ… Works offline (unmanaged mode) - βœ… Visual workflows (they don't have) - βœ… Plugin-first architecture - 🟰 Similar RAG features ### vs ChatGPT/Claude Desktop - βœ… Multi-model (not locked to one provider) - βœ… Self-hosted option - βœ… Open source - βœ… Extensible (closed systems) - 🟰 Similar UX quality ### vs LangChain - βœ… Visual workflow builder (no-code) - βœ… Multi-model orchestration - 🟰 Similar capabilities - ❌ Less Python ecosystem (for now) **Unique Position:** LangChain for non-coders + n8n for LLMs + privacy-first design --- ## πŸ“„ License MIT License - build anything, including commercial products. --- ## πŸ™ Credits Built with inspiration from: - Open WebUI (knowledge bases, channels) - Claude Desktop (thinking blocks) - n8n (workflow concepts) - VSCode (plugin architecture) --- ## πŸ”— Links - **Repository:** https://git.gobha.me/xcaliber/chat-switchboard - **Documentation:** [/docs](docs/) - **Issues:** [GitHub Issues](https://git.gobha.me/xcaliber/chat-switchboard/issues) - **Discussions:** (Coming soon) --- **Ready to build the future of AI interfaces? Star the repo and let's go! πŸš€**