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

# Install from PyPI (recommended)
pip install abstractassistant

For detailed installation instructions including prerequisites and voice setup, see ๐Ÿ“– Installation Guide.

2. First Launch

# Launch the assistant
assistant

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.1.1.tar.gz (102.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.1.1-py3-none-any.whl (70.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for abstractassistant-0.1.1.tar.gz
Algorithm Hash digest
SHA256 007a6776582d43ba4f2531e379523605df225a75551330ce585d617a9b1817ef
MD5 74d07caaea11e801770049ed805afce1
BLAKE2b-256 f6711da7cd2553e7ee94684460113ef62debf940c3effcf1e6cf495b81dc5d84

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for abstractassistant-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6948320a6224f443c4b024c778f107e924baa64a6333067d3f71ee658c2588fa
MD5 40c03f8b4d2e1b4808edb7f937f77b29
BLAKE2b-256 1cd5c0a4ad70c4c370917727601c7ff5c7c3ed1e9739d0801c9d3c19871919ec

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