🎨 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.
Metadata
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 | Provenance | Actions |
|---|---|---|---|---|
| llm_slate-1.0.0.tar.gz | 30.9 kB | Without provenance | Details for llm_slate-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| llm_slate-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for llm_slate-1.0.0-py3-none-any.whl |
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
|
Security for llm-slate 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.