Abbey 📚 Project Description
What is the project about?
Abbey is a self-hostable, private AI interface that acts as a central hub for interacting with various AI models and data sources. It's designed to be highly configurable, allowing users to choose their preferred Large Language Models (LLMs), Text-to-Speech (TTS) models, Optical Character Recognition (OCR) models, and search engines. It supports multiple users with custom authentication or can be used as a personal AI assistant.
What problem does it solve?
Abbey addresses several key problems:
- Fragmentation of AI tools: It consolidates interaction with multiple AI models and services into a single, unified interface. Instead of juggling different platforms for different tasks, users can access everything through Abbey.
- Privacy concerns: By being self-hosted, Abbey allows users to maintain control over their data and interactions with AI, avoiding sending sensitive information to third-party cloud services.
- Lack of customization: Many AI platforms offer limited customization. Abbey provides extensive configuration options, letting users tailor the system to their specific needs and preferences.
- Accessibility to AI: It provides a user-friendly interface for interacting with complex AI models, making them more accessible to a wider range of users, including students and professionals.
What are the features of the project?
- Notebooks: A core feature for organizing thoughts, notes, and AI interactions (likely similar to Jupyter notebooks or collaborative documents).
- Basic Chat: Direct interaction with chosen LLMs.
- Document Handling: Upload and interact with documents, including OCR for scanned PDFs.
- YouTube Video Integration: Likely allows summarizing, querying, or otherwise interacting with YouTube videos.
- Multi-User Support: Can be run as a server with user authentication.
- Highly Configurable: Users can select their preferred AI models and services for various tasks.
- Private and Self-Hosted: Runs locally or on a private server, ensuring data privacy.
- Extensible: Designed to be easily extended with new integrations and interfaces.
- Web Search Integration: Incorporates web search capabilities using Bing and SearXNG.
- File Storage Options: Supports local file storage and Amazon S3.
- Authentication Options: Supports Google, GitHub, Keycloak, and Clerk for user authentication.
- Email Integration: Sends email notifications for shared assets and other events (optional).
- Customizable Branding: Allows changing the application name, logos, and background images.
- Experimental Web Crawling: A new feature for scraping web content (with security caveats).
What are the technologies used in the project?
- Backend:
- Python (Flask framework)
- MySQL (database)
- Celery (task queue, likely for asynchronous AI tasks)
- Docker and Docker Compose (for containerization and deployment)
- Frontend:
- Next.js (React framework)
- AI Integrations:
- LLMs: OpenAI, Anthropic, Ollama, Open Router, and other OpenAI-compatible APIs (e.g., LocalAI, LMStudio).
- TTS: OpenAI, ElevenLabs, OpenAI-compatible APIs.
- OCR: Mathpix.
- Search Engines: Bing, SearXNG.
- Embedding Models: OpenAI, Ollama, OpenAI-compatible APIs.
- Authentication:
- OAuth2 providers (Google, GitHub)
- Keycloak (self-hosted identity and access management)
- Clerk
- File Storage:
- Local file system
- Amazon S3
- Email:
- Sendgrid
- SMTP
- Web Crawler:
- Playwright
What are the benefits of the project?
- Privacy: Data remains under the user's control.
- Customization: Tailor the AI models and services to specific needs.
- Consolidation: Access multiple AI tools in one place.
- Cost Control: Potentially reduce costs by using self-hosted models or choosing cost-effective APIs.
- Extensibility: Adapt and expand the system with new features and integrations.
- Multi-User Collaboration: Share resources and collaborate with others (with authentication setup).
What are the use cases of the project?
- Personal Knowledge Management: Organize notes, documents, and research, leveraging AI for summarization, question answering, and content generation.
- Education: Students can use it for research, studying, and interacting with educational materials.
- Professional Work: Professionals can use it for tasks like document analysis, content creation, and research.
- AI Research and Development: Provides a platform for experimenting with different AI models and building custom AI-powered applications.
- Team Collaboration: Teams can share knowledge, collaborate on projects, and leverage AI for various tasks.
- Creating Custom AI Assistants: The extensible nature of Abbey allows developers to build specialized AI assistants tailored to specific domains or tasks.
