A sleek macOS system tray application providing instant access to Large Language Models with a modern Qt-based interface. Built with Python and powered by AbstractCore and AbstractVoice.
- ๐ GitHub Repository: https://github.com/lpalbou/abstractassistant
- ๐ PyPI Package: https://pypi.org/project/abstractassistant/
- ๐ Documentation: See docs/ folder for detailed guides
- ๐ฏ System Tray Integration: Quick access from macOS menu bar - always at your fingertips
- ๐ฌ Modern Qt Interface: Clean, iPhone Messages-style chat bubble with dark theme
- ๐ Voice Support: Text-to-Speech integration with AbstractVoice for conversational AI
- ๐ Multi-Provider Support: Seamlessly switch between LMStudio, Ollama, OpenAI, Anthropic, MLX, HuggingFace via AbstractCore
- ๐ Real-time Status: Live token counting, provider/model selection, and animated status indicators
- ๐พ Session Management: Save, load, and view conversation history with markdown rendering
- โ๏ธ Smart Controls: Provider/model dropdowns, TTS toggle, and session buttons
- ๐จ Professional Design: Rounded corners, smooth animations, and native macOS feel
# Install from PyPI (recommended)
pip install abstractassistantFor detailed installation instructions including prerequisites and voice setup, see ๐ Installation Guide.
# Launch the assistant
assistant- Find the Icon: Look for AbstractAssistant in your macOS menu bar (top-right)
- Click to Open: Click the icon to open the chat bubble
- Start Chatting: Type your message and send!
For a complete walkthrough of all features, see ๐ฏ Getting Started Guide.
- macOS: 10.14+ (Mojave or later)
- Python: 3.9+
- Models: Local (LMStudio/Ollama) or API keys (OpenAI/Anthropic)
See โ๏ธ Installation Guide for detailed setup instructions.
AbstractAssistant provides a clean, intuitive interface for AI conversations:
- Chat Bubble: Modern iPhone Messages-style interface
- Provider/Model Selection: Easy switching between AI providers
- Voice Support: Optional text-to-speech for responses
- Session Management: Save, load, and view conversation history
- Text-to-Speech: Powered by AbstractVoice
- High-Quality Speech: Natural-sounding voice synthesis
- Simple Controls: One-click enable/disable
- System Tray: Always accessible from macOS menu bar
- Native Feel: Designed for macOS with smooth animations
- Lightweight: Minimal resource usage when idle
๐ For detailed usage instructions, see ๐ฏ Getting Started Guide
Create a config.toml file to customize settings:
[ui]
theme = "dark"
always_on_top = true
[llm]
default_provider = "lmstudio"
default_model = "qwen/qwen3-next-80b"
max_tokens = 128000
temperature = 0.7
[system_tray]
icon_size = 64Set your API keys as environment variables:
# For OpenAI
export OPENAI_API_KEY="your_openai_key_here"
# For Anthropic
export ANTHROPIC_API_KEY="your_anthropic_key_here"
# For local models (LMStudio, Ollama), no API key neededAbstractAssistant is built on a modern, modular architecture:
- AbstractCore: Universal LLM provider interface
- AbstractVoice: High-quality text-to-speech engine
- Qt Interface: Cross-platform GUI (PyQt5/PySide2/PyQt6 support)
- System Integration: Native macOS system tray with
pystray - Session Management: Persistent conversation history and settings
๐ For technical details, see ๐๏ธ Architecture Guide
# Clone the repository
git clone https://github.com/lpalbou/abstractassistant.git
cd abstractassistant
# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Install in development mode
pip install -e .
# Run with debug mode
assistant --debugabstractassistant/
โโโ pyproject.toml # Package configuration
โโโ requirements.txt # Dependencies
โโโ config.toml # Default configuration
โโโ abstractassistant/ # Main package
โ โโโ cli.py # CLI entry point
โ โโโ app.py # Main application
โ โโโ config.py # Configuration management
โ โโโ core/ # Business logic
โ โ โโโ llm_manager.py # LLM provider management
โ โ โโโ tts_manager.py # Voice/TTS integration
โ โโโ ui/ # User interface
โ โ โโโ qt_bubble.py # Main Qt chat interface
โ โ โโโ toast_window.py # Notification system
โ โโโ utils/ # Utilities
โ โโโ icon_generator.py # Dynamic icon creation
โ โโโ markdown_renderer.py # Markdown processing
โโโ docs/ # Documentation
โโโ ARCHITECTURE.md # Technical documentation
โโโ INSTALLATION.md # Installation guide
โโโ USAGE.md # Usage guide
- ๐ฏ Focused: Designed specifically for quick AI interactions
- ๐จ Beautiful: Modern Qt interface with native macOS feel
- โก Fast: Instant access without opening heavy applications
- ๐ Flexible: Support for multiple AI providers in one interface
- ๐ก๏ธ Robust: Built with error handling and graceful fallbacks
- ๐ฑ Unobtrusive: Lives quietly in your menu bar until needed
- ๐ Conversational: Optional voice mode for natural AI interactions
| Guide | Description |
|---|---|
| ๐ Installation Guide | Complete setup instructions, prerequisites, and troubleshooting |
| ๐ฏ Getting Started Guide | Step-by-step usage guide with all features explained |
| ๐๏ธ Architecture Guide | Technical documentation and development information |
- macOS: 10.14+ (Mojave or later)
- Python: 3.9+
- Qt Framework: PyQt5, PySide2, or PyQt6 (automatically detected)
- Dependencies: AbstractCore and AbstractVoice (automatically installed)
Contributions welcome! Please read the architecture documentation and follow the established patterns:
- Clean Code: Follow PEP 8 and use type hints
- Modular Design: Keep components focused and reusable
- Modern UI/UX: Maintain the sleek, native feel
- Error Handling: Always include graceful fallbacks
- Documentation: Update docs for any new features
MIT License - see LICENSE file for details.
AbstractAssistant is built on excellent open-source projects:
- AbstractCore: Universal LLM interface - enables seamless multi-provider support
- AbstractVoice: High-quality text-to-speech engine with natural voice synthesis
- PyQt5/PySide2/PyQt6: Cross-platform GUI framework for the modern interface
- pystray: Cross-platform system tray integration
- Pillow: Image processing for dynamic icon generation
AbstractAssistant integrates seamlessly with other AbstractX projects:
- ๐ง AbstractCore: Universal LLM provider interface
- ๐ฃ๏ธ AbstractVoice: Advanced text-to-speech capabilities
See ACKNOWLEDGMENTS.md for complete attribution.
Built with โค๏ธ for macOS users who want AI at their fingertips