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.
bf551cdc7a63e929a20b71b2c71a3c0afff14911
🔀 Chat Switchboard
A sleek, OpenAI-compatible chat interface with per-conversation model switching, collapsible thinking blocks, and full chat history management.
Features
- Multi-Model Support: Switch models per-chat via quick selector
- Thinking Blocks: Collapsible
<thinking>tags with distinct styling - Streaming Responses: Real-time token streaming with stop button
- Chat History: Persistent storage with export (Markdown/JSON/Text)
- Keyboard Shortcuts:
Entersend,Shift+Enternewline,Escstop,Ctrl+Bsidebar,Ctrl+,settings - Code Highlighting: Syntax-aware code blocks with copy buttons
- Regenerate: Re-run last response with one click
- Dark Theme: Easy on the eyes
Quick Start
Standalone (No Build Required)
# Build the single-file version
./build.sh
# Open in browser
xdg-open standalone/index.html
# or
python3 -m http.server 8080 --directory standalone
Development
# Serve src/ directory for development
python3 -m http.server 8080 --directory src
Project Structure
chat-switchboard/
├── build.sh # Builds standalone HTML
├── standalone/ # Built single-file output
│ └── index.html
├── src/ # Source files
│ ├── index.html
│ ├── css/
│ │ └── styles.css
│ └── js/
│ ├── storage.js # LocalStorage utilities
│ ├── state.js # State management
│ ├── api.js # API calls
│ ├── ui.js # UI rendering
│ └── app.js # Main application
├── server/ # Backend (future)
│ ├── main.go
│ ├── handlers/
│ ├── models/
│ └── middleware/
├── migrations/ # PostgreSQL schemas
│ └── 001_initial.sql
├── docker-compose.yml # Local dev environment
└── docs/ # Documentation
Backend (Planned)
The project is structured to support a full backend with:
- Go server with Gin/Echo
- PostgreSQL for persistent storage
- User authentication (optional)
- API key management per user
- Chat syncing across devices
Database Schema
See migrations/001_initial.sql for the initial PostgreSQL schema.
Running with Docker
docker-compose up -d
Configuration
Settings are stored in localStorage:
| Key | Description |
|---|---|
chatSwitchboard_settings |
API endpoint, model, parameters |
chatSwitchboard_models |
Cached model list |
chatSwitchboard_chats |
Chat history |
API Compatibility
Works with any OpenAI-compatible API:
- OpenAI
- Anthropic (via proxy)
- Ollama (
http://localhost:11434/v1) - LM Studio
- LocalAI
- vLLM
- Together AI
- OpenRouter
- And more...
License
MIT
Credits
Originally inspired by various chat interfaces, enhanced with multi-model switching and thinking block support.
Description