Initial commit
This commit is contained in:
115
README.md
Normal file
115
README.md
Normal file
@@ -0,0 +1,115 @@
|
||||
# 🔀 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**: `Enter` send, `Shift+Enter` newline, `Esc` stop, `Ctrl+B` sidebar, `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)
|
||||
|
||||
```bash
|
||||
# Build the single-file version
|
||||
./build.sh
|
||||
|
||||
# Open in browser
|
||||
xdg-open standalone/index.html
|
||||
# or
|
||||
python3 -m http.server 8080 --directory standalone
|
||||
```
|
||||
|
||||
### Development
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
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.
|
||||
Reference in New Issue
Block a user