Skip to main content

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

โœจ 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

  1. Find the Icon: Look for AbstractAssistant in your macOS menu bar (top-right)
  2. Click to Open: Click the icon to open the chat bubble
  3. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

abstractassistant-0.3.0.tar.gz (113.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

abstractassistant-0.3.0-py3-none-any.whl (81.9 kB view details)

Uploaded Python 3

File details

Details for the file abstractassistant-0.3.0.tar.gz.

File metadata

  • Download URL: abstractassistant-0.3.0.tar.gz
  • Upload date:
  • Size: 113.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for abstractassistant-0.3.0.tar.gz
Algorithm Hash digest
SHA256 2500bd5db1177cf894cc5f3fe26b66e7597ae38b1a68f26944721ad1d2ca08fc
MD5 53ef45418011d6b840d275598072e779
BLAKE2b-256 dd8b00dca49655c263cef474addd1c023bcfb726ff5f886b0032c3e05dae0fe0

See more details on using hashes here.

File details

Details for the file abstractassistant-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for abstractassistant-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 764c11a3c3747abfa7ecaad1f2a455a4ef408bc335935e0c2324629e81831953
MD5 7b7f0497fab1b5239a9fbc3e0edf254c
BLAKE2b-256 457676e37e2cc2aa0e13b6427667ffcc1259fb5a6dfd41579360f6651e8895e4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page