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.
Files
core/docs/GETTING_STARTED.md

470 lines
10 KiB
Markdown

# 🚀 Getting Started with Chat Switchboard
## What is Chat Switchboard?
Chat Switchboard is a **plugin-first, multi-model AI platform** that works in two modes:
- **🏠 Unmanaged Mode:** Runs entirely in your browser (like the current version)
- **🌐 Managed Mode:** Full backend with collaboration, workflows, and advanced features
## Quick Start (Unmanaged Mode)
### 1. Download & Run
```bash
# Clone the repo
git clone https://git.gobha.me/xcaliber/chat-switchboard.git
cd chat-switchboard
# Build standalone version
./build.sh
# Open in browser
xdg-open standalone/index.html
# or serve it
python3 -m http.server 8080 --directory standalone
```
### 2. Configure Your API
1. Click ⚙️ Settings
2. Enter your API details:
- **API Endpoint:** `https://api.openai.com/v1` (or OpenRouter, Venice.ai, etc.)
- **API Key:** Your API key
- **Model:** Select or type model name
3. Click "Save Settings"
### 3. Start Chatting
- Type a message and press Enter
- Switch models per-chat using the dropdown
- Export conversations as Markdown/JSON
**That's it!** No backend needed, all data stays in your browser.
---
## Full Installation (Managed Mode)
For teams, collaboration, and advanced features like Workflows and Channels.
### Prerequisites
- Docker & Docker Compose
- PostgreSQL 15+
- Go 1.21+ (for development)
- Python 3.9+ (for AI extensions)
### 1. Clone & Configure
```bash
git clone https://git.gobha.me/xcaliber/chat-switchboard.git
cd chat-switchboard
# Copy environment template
cp .env.example .env
# Edit configuration
nano .env
```
```bash
# .env
DATABASE_URL=postgres://user:pass@localhost:5432/chatswitch
JWT_SECRET=your-secret-key-here
PORT=8080
FRONTEND_URL=http://localhost:3000
REDIS_URL=redis://localhost:6379
```
### 2. Start Services
```bash
# Start everything with Docker Compose
docker-compose up -d
# Services:
# - PostgreSQL (5432)
# - Backend API (8080)
# - Redis (6379)
# - Frontend (3000)
```
### 3. Run Migrations
```bash
# Apply database schema
docker-compose exec backend ./migrate up
```
### 4. Create Admin User
```bash
curl -X POST http://localhost:8080/api/auth/register \
-H "Content-Type: application/json" \
-d '{
"username": "admin",
"email": "admin@example.com",
"password": "secure-password",
"role": "admin"
}'
```
### 5. Access Frontend
Open http://localhost:3000
1. Click "Connect to Backend"
2. Enter backend URL: `http://localhost:8080`
3. Login with your credentials
---
## Architecture Overview
```
┌─────────────────────────────────────┐
│ Frontend (Vanilla JS) │
│ - Manages UI state │
│ - Switches modes (managed/local) │
└─────────────┬───────────────────────┘
┌─────────┴─────────┐
│ │
[LocalStorage] [Backend API]
│ │
│ ┌─────────▼──────────┐
│ │ Go Core │
│ │ - Auth │
│ │ - WebSocket │
│ │ - Extension Mgr │
│ └─────────┬──────────┘
│ │
│ ┌─────────┴──────────┐
│ │ PostgreSQL │
│ │ - Users, chats │
│ │ - Channels, notes │
│ │ - Vector search │
│ └────────────────────┘
└─── Extensions (Python/Go) ───┐
├─ Chat Engine │
├─ RAG Engine │
├─ Workflows │
└─ Custom Tools │
```
## Core Features
### 1. Chat (User → AI)
**Available in:** Both modes
- Multi-model support (OpenAI, Anthropic, Ollama, etc.)
- Per-conversation model switching
- Streaming responses
- Message history
- Export (Markdown, JSON, Plain Text)
**Managed mode additions:**
- Auto-routing (smart model selection)
- Cost tracking
- Shared conversations
- Server-side tool calling
### 2. Channels (User → User + AI)
**Available in:** Managed mode only
Multi-user chat rooms with AI participants:
```
#general
@alice: What do you think about this design?
@claude: I'd suggest using a darker color scheme...
@bob: Agreed! Also, @gpt4 can you review the code?
@gpt4: I see a potential issue in line 42...
```
- Public/private/DM channels
- @mention users and AI models
- Threaded conversations
- Real-time updates (WebSocket)
- Reactions and formatting
### 3. Notes & Knowledge Bases
**Available in:** Both modes (limited in unmanaged)
- Markdown notes with folders
- Tagging and search
- Linked notes (wiki-style)
**Managed mode additions:**
- Shared notes
- Knowledge base collections
- RAG (vector search)
- Semantic search with embeddings
### 4. Workflows 🌟 (UNIQUE FEATURE)
**Available in:** Managed mode only
Chain multiple AI models and tools into automated pipelines:
```
[User Query] → [Web Search] → [GPT-4 Summarize]
↓ ↓
[Save to KB] [Claude Verify]
[Generate Report]
```
**Use cases:**
- Research assistants
- Code review pipelines
- Content creation factories
- Data processing
- Multi-model consensus
See `docs/WORKFLOWS.md` for details.
## Extension System
### Frontend Extensions (Both Modes)
Simple JavaScript plugins that run in the browser:
```javascript
// extensions/frontend/my-plugin/main.js
window.ChatSwitchboard.registerExtension({
name: 'my-plugin',
hooks: {
onMessageSend: (msg) => {
console.log('Sending:', msg);
return msg; // Can modify
}
}
});
```
### Backend Extensions (Managed Only)
Full-featured plugins in any language:
```python
# extensions/backend/my-tool/main.py
from fastapi import FastAPI
app = FastAPI()
@app.post("/tools/my_tool")
async def my_tool(input: str):
result = process(input)
return {"result": result}
```
See `docs/PLUGIN_SPEC.md` for complete guide.
## Development
### Frontend Development
```bash
# Serve source files
python3 -m http.server 8080 --directory src
# Build standalone
./build.sh
```
### Backend Development
```bash
# Install Go dependencies
go mod download
# Run backend
go run server/main.go
# Or with air (hot reload)
air
```
### Extension Development
```bash
# Create from template
cp -r extensions/_template-python extensions/my-extension
# Edit files
cd extensions/my-extension
nano extension.json
nano main.py
# Test locally
python main.py
```
## Configuration
### Frontend Settings
Stored in localStorage (unmanaged) or user profile (managed):
- API endpoints and keys
- Default model
- Stream responses
- System prompt
- Temperature, max tokens, etc.
### Backend Configuration
```yaml
# config.yaml
server:
port: 8080
host: 0.0.0.0
database:
url: ${DATABASE_URL}
max_connections: 20
redis:
url: ${REDIS_URL}
enabled: true
extensions:
directory: ./extensions/backend
auto_load: true
security:
jwt_secret: ${JWT_SECRET}
jwt_expiry: 24h
rate_limit: 100/minute
```
## Switching Modes
### From Unmanaged → Managed
1. Deploy backend (see Full Installation above)
2. In Settings, enter Backend URL
3. Login/register
4. Your local data will be **uploaded** on first sync
### From Managed → Unmanaged
1. Export your data (Settings → Export)
2. Remove backend URL from settings
3. Continue using locally
**Note:** Managed-only features (Channels, Workflows) won't work in unmanaged mode.
## Common Workflows
### Personal Use (Unmanaged)
```
Open standalone/index.html → Configure API → Chat
```
### Team Collaboration (Managed)
```
Deploy backend → Create team channels → @mention AI models
```
### Development (Contributing)
```
Fork repo → Create extension → Test locally → Submit PR
```
### Self-Hosted (Privacy)
```
Deploy on your server → Configure domains → Invite team
```
## Troubleshooting
### Frontend Issues
**"No settings found"**
- Click Settings ⚙️ and configure API endpoint + key
**"API request failed"**
- Check API endpoint URL (trailing slash?)
- Verify API key is correct
- Check browser console for errors
**"LocalStorage full"**
- Export old chats
- Delete unused chats
- Clear browser data
### Backend Issues
**"Connection refused"**
- Is backend running? `docker-compose ps`
- Check firewall rules
- Verify port 8080 is open
**"Database migration failed"**
- Check PostgreSQL is running
- Verify DATABASE_URL is correct
- Run migrations manually: `./migrate up`
**"Extension not loading"**
- Check extension.json is valid
- Verify runtime is installed (python3, go, node)
- Check logs: `docker-compose logs backend`
### WebSocket Issues
**"Real-time updates not working"**
- Check WebSocket connection in browser console
- Verify Redis is running (for multi-instance setups)
- Check nginx WebSocket proxy config
## Next Steps
1. **Explore Features:** Try Chat, Notes, and (if managed) Channels
2. **Read Docs:**
- `docs/ARCHITECTURE.md` - System design
- `docs/WORKFLOWS.md` - Workflow system
- `docs/PLUGIN_SPEC.md` - Extension development
3. **Build Extensions:** Use templates in `extensions/`
4. **Join Community:** Discord, GitHub Discussions
5. **Contribute:** Submit PRs, report bugs, suggest features
## Resources
- **GitHub:** https://git.gobha.me/xcaliber/chat-switchboard
- **Documentation:** `/docs` directory
- **Examples:** `/examples` directory
- **Extensions:** `/extensions` directory
---
## FAQ
**Q: Is my data private?**
A: In unmanaged mode, everything stays in your browser. In managed mode, you control the backend.
**Q: Can I use my own models?**
A: Yes! Configure any OpenAI-compatible API (Ollama, LM Studio, etc.)
**Q: How do I migrate from ChatGPT/Claude?**
A: Export your conversations, then import via our import tool (coming soon).
**Q: Can I run this offline?**
A: Unmanaged mode works offline if you pre-load the page. For LLM calls, you need internet or local models (Ollama).
**Q: How much does it cost?**
A: Chat Switchboard is free and open-source. You pay for API usage (OpenAI, etc.) or use free models (Ollama).
**Q: Can I sell extensions?**
A: Yes! The marketplace (coming soon) will support paid extensions.
---
**Ready to switch? Start building! 🚀**