This repository has been archived on 2026-04-03. You can view files and clone it. You cannot open issues or pull requests or push a commit.
2026-02-03 17:20:06 -05:00
2026-02-16 20:30:36 +00:00
2026-02-03 17:20:06 -05:00
2026-02-16 14:15:46 +00:00
2026-02-03 17:20:06 -05:00
2026-02-16 11:30:46 +00:00
2026-02-03 21:28:18 +00:00
2026-02-16 20:30:36 +00:00

🔀 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 Go Version Python Version


🎯 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)

# 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)

# 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 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 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)

// 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)

# 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:

# 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 for complete guide.


📚 Documentation


🏗️ 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

  • 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 for complete timeline.


🤝 Contributing

We welcome contributions! Here's how:

  1. Pick a task from 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)


Ready to build the future of AI interfaces? Star the repo and let's go! 🚀

Description
No description provided
Readme Apache-2.0 23 MiB
v0.9.9 Latest
2026-04-03 20:11:58 +00:00
Languages
Go 52.1%
JavaScript 34.6%
CSS 5.5%
Shell 3.8%
HTML 2%
Other 1.9%