Skip to main content

A sleek (macOS) system tray application providing instant access to LLMs

Project description

AbstractAssistant

One-click, tray-accessible agent host for AbstractFramework.

AbstractAssistant runs agentic loops (ReAct/CodeAct/MemAct) on top of:

  • AbstractAgent (agent patterns)
  • AbstractRuntime (durable runs, waits, ledgers)
  • AbstractCore (provider/tool normalization)
  • Optional: AbstractVoice (STT/TTS)

Docs:

  • docs/getting-started.md
  • docs/architecture.md

Install profiles

  • abstractassistant (default) == lite: tray UI + agent backend (no voice)
  • abstractassistant[full]: voice (STT/TTS) + broader provider/media extras
pip install "abstractassistant"
# or
pip install "abstractassistant[full]"

Quick start

Tray (macOS):

assistant tray

Alias:

abstractassistant tray

Terminal (one turn):

assistant run --prompt "What is in this repo and where do I start?"

Provider/model override:

assistant run --provider ollama --model qwen3:4b-instruct --prompt "Summarize my changes"

Tool approvals (important)

AbstractAssistant enforces a durable tool boundary:

  • read-only / known-safe tools can auto-run
  • anything else pauses and requires approval (tray dialog or terminal prompt)

This aligns with the framework’s durability + safety model: tools are executed by the host, not persisted as callables inside run state.

Data & durability

By default, assistant state is stored in ~/.abstractassistant/ (configurable via --data-dir):

  • session.json: fast UI snapshot (transcript + last run id)
  • runtime/: run store + ledger + artifacts (source of truth)

Development

pip install -e ".[dev,lite]"
python -m pytest -q
assistant tray --debug
  • 📱 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:

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.4.0.tar.gz (124.4 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.4.0-py3-none-any.whl (121.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for abstractassistant-0.4.0.tar.gz
Algorithm Hash digest
SHA256 617e98ebd13d1080e8f8e5992b315675dacacb8c034cf0413a6bf65d6c7589d9
MD5 95f9c5b251b0f93b5fdb6c2d79f5a884
BLAKE2b-256 766f7e4e562752d7f9bd59b43b699bd7c1ac63cd692e1c2dedfbc9511d97334b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for abstractassistant-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4bb8268bade52955de6ccfcf9a264de992a0ace901c1b24729e43393bab8fe19
MD5 1bf79fcbb9e5a4f48c62b715652f1feb
BLAKE2b-256 8de77b51ae8e4b1c952af5717481b5aab432c65b903e095418ad0f4a50d527ef

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