🎨 LLM Slate
Web interface for chatting with 9+ AI providers in one place.
Chat with Claude, GPT-4, Grok, Gemini, and more from a single interface. Generate images with DALL-E or Aurora. Analyze images with Claude Vision or GPT-4 Vision. All with your own API keys, running locally.
Features
- Chat with 9 AI providers: Anthropic (Claude), OpenAI (GPT), xAI (Grok), Cohere, Mistral, Perplexity, Gemini, HuggingFace, Groq
- Image generation (DALL-E 3, Aurora)
- Image analysis (Claude Vision, GPT-4 Vision)
- Conversation history saved locally
- Password protected
- Clean, minimal interface
Quick Start
Installation
pip install llm-slate
Set Up API Keys
Create a .env file with your API keys:
# Add keys for the providers you want to use
ANTHROPIC_API_KEY=your_key_here
OPENAI_API_KEY=your_key_here
XAI_API_KEY=your_key_here
COHERE_API_KEY=your_key_here
MISTRAL_API_KEY=your_key_here
PERPLEXITY_API_KEY=your_key_here
GEMINI_API_KEY=your_key_here
HUGGINGFACE_API_KEY=your_key_here
GROQ_API_KEY=your_key_here
# Flask secret (generate with: python -c "import secrets; print(secrets.token_hex(32))")
FLASK_SECRET_KEY=your_secret_key_here
# Optional: Custom password (default: "friendship")
STUDIO_PASSWORD=your_password_here
# Optional: Custom port (default: 5413)
STUDIO_PORT=5413
Run
llm-slate
Then open http://localhost:5413 in your browser.
Usage
Chat
- Select a provider from the dropdown
- Choose a model
- Start chatting
Your conversation history is saved and persists across sessions.
Image Generation
- Go to the "Images" tab
- Select provider (OpenAI or xAI)
- Enter your prompt
- Click generate
Image Analysis
- Go to the "Vision" tab
- Upload an image
- Select provider (Anthropic or OpenAI)
- Ask questions about the image
Configuration
Environment Variables
STUDIO_PORT- Port to run on (default: 5413)STUDIO_PASSWORD- Login password (default: "friendship")STUDIO_BASE_PATH- Base path for reverse proxy (e.g.,/studio)FLASK_SECRET_KEY- Flask session secret (required)
Provider API Keys
Only include keys for providers you want to use. Multi-Studio detects which providers are available based on your configured API keys.
Development
From Source
git clone https://github.com/lukeslp/llm-slate.git
cd llm-slate
pip install -e .
Project Structure
llm-slate/
├── app.py # Main Flask application
├── config.py # Configuration management
├── database.py # Conversation storage
├── cache_manager.py # Response caching
├── providers/ # Provider adapters
├── core/ # Core utilities
├── templates/ # HTML templates
├── static/ # CSS/JS assets
└── blueprints/ # Flask blueprints
Security
- All API keys are read from environment variables (never hardcoded)
- Conversations stored locally in SQLite database
- Password required to access interface
- No data sent to external services except your chosen AI providers
Supported Providers
| Provider | Chat | Images | Vision |
|---|---|---|---|
| Anthropic (Claude) | ✅ | ❌ | ✅ |
| OpenAI (GPT) | ✅ | ✅ (DALL-E) | ✅ |
| xAI (Grok) | ✅ | ✅ (Aurora) | ❌ |
| Cohere | ✅ | ❌ | ❌ |
| Mistral | ✅ | ❌ | ❌ |
| Perplexity | ✅ | ❌ | ❌ |
| Gemini | ✅ | ❌ | ❌ |
| HuggingFace | ✅ | ❌ | ❌ |
| Groq | ✅ | ❌ | ❌ |
Requirements
- Python 3.10+
- API keys for at least one provider
- Flask 3.0+
Author
Luke Steuber
- Website: lukesteuber.com
- Bluesky: @lukesteuber.com
- Email: luke@lukesteuber.com
- Support: Tip Jar
License
MIT License - see LICENSE for details.
Release files for llm-slate 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| llm_slate-1.0.0.tar.gz | 30.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| llm_slate-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:49.0 kB
Release files / llm_slate-1.0.0.tar.gz
| Download URL | llm_slate-1.0.0.tar.gz |
|---|---|
| Size | 30.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
33be5a2cdba6f606fb9472bb1e9383fc574bbbf429b95c10cd81c456ec864ed9
|
|
BLAKE2b-256 checksum How to use checksums |
bdbc8a637b22cb45475cf162956f19a62dadca4171ad8e31687df85c76468426
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / llm_slate-1.0.0-py3-none-any.whl
| Download URL | llm_slate-1.0.0-py3-none-any.whl |
|---|---|
| Size | 18.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
168458a53f68489a9540ed5623b0b4f4049b9daea02761ac6fd6890fb5928e81
|
|
BLAKE2b-256 checksum How to use checksums |
1304c79a3fc4692f95f6b083f7c5e8d2164a1b2d0ed03e5850d04995e9c7d4d5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|