A sleek (macOS) system tray application providing instant access to LLMs
Project description
AbstractAssistant ๐ค
Philosophy : your AI assistant, always here and available in one click
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.
๐ฆ Installation & Links
- ๐ GitHub Repository: https://github.com/lpalbou/abstractassistant
- ๐ PyPI Package: https://pypi.org/project/abstractassistant/
- ๐ Documentation: See docs/ folder for detailed guides
โจ Features
- ๐ฏ 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
๐ Quick Start
1. Installation
๐ macOS Users (Recommended)
# Install AbstractAssistant
pip install abstractassistant
# Create native macOS app bundle
create-app-bundle
This will:
- Install AbstractAssistant from PyPI with all dependencies
- Create a native macOS app bundle in
/Applications - Add AbstractAssistant to your Dock with a beautiful neural network icon
- Enable launch from Spotlight, Finder, and Dock
๐ง Standard Installation
# Install from PyPI (terminal access only)
pip install abstractassistant
For detailed installation instructions including prerequisites and voice setup, see ๐ Installation Guide.
2. First Launch
๐ macOS App Bundle Users
- Dock: Click the AbstractAssistant icon in your Dock
- Spotlight: Search for "AbstractAssistant" and press Enter
- Finder: Open
/Applications/AbstractAssistant.app
๐ง Terminal Users
# Launch the assistant
assistant
# Create macOS app bundle after installation
create-app-bundle
3. Start Using
- 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.
๐ Prerequisites
- 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.
๐ฎ Usage Overview
AbstractAssistant provides a clean, intuitive interface for AI conversations:
๐ฑ๏ธ Main Interface
- 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
๐๏ธ Voice Features
- Text-to-Speech: Powered by AbstractVoice
- High-Quality Speech: Natural-sounding voice synthesis
- Simple Controls: One-click enable/disable
๐ง System Integration
- 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
โ๏ธ Configuration
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 = 64
API Keys Setup
Set 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 needed
๐๏ธ Architecture
AbstractAssistant 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
๐ง Development
Running from Source
# 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 --debug
Project Structure
abstractassistant/
โโโ 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
๐ Why AbstractAssistant?
- ๐ฏ 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
๐ Documentation
| 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 |
๐ Requirements
- macOS: 10.14+ (Mojave or later)
- Python: 3.9+
- Qt Framework: PyQt5, PySide2, or PyQt6 (automatically detected)
- Dependencies: AbstractCore and AbstractVoice (automatically installed)
๐ค Contributing
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
๐ License
MIT License - see LICENSE file for details.
๐ Acknowledgments
AbstractAssistant is built on excellent open-source projects:
Core Dependencies
- AbstractCore: Universal LLM interface - enables seamless multi-provider support
- AbstractVoice: High-quality text-to-speech engine with natural voice synthesis
Framework & UI
- PyQt5/PySide2/PyQt6: Cross-platform GUI framework for the modern interface
- pystray: Cross-platform system tray integration
- Pillow: Image processing for dynamic icon generation
Part of the AbstractX Ecosystem
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file abstractassistant-0.3.1.tar.gz.
File metadata
- Download URL: abstractassistant-0.3.1.tar.gz
- Upload date:
- Size: 113.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35d8667ab3ef8f1762b241fc910c7765162bba0dfa7c21a2fbc623da43e512d7
|
|
| MD5 |
5322062eca4b2a4dbf9286935db9f3f9
|
|
| BLAKE2b-256 |
1278d0355bf1f1f99db1f29d2b0d37dc71a34358d7b1eb767c571f3551af295f
|
File details
Details for the file abstractassistant-0.3.1-py3-none-any.whl.
File metadata
- Download URL: abstractassistant-0.3.1-py3-none-any.whl
- Upload date:
- Size: 82.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4bb137b46a10898aff770a862a09d198501893872640037ed26f1de1626c6aa3
|
|
| MD5 |
d330c5c17178dbc9643cef03938ae82a
|
|
| BLAKE2b-256 |
0b8c943f323fae1fa680fea0508407df803147eff26af62daab2a6598ff205f6
|