openElara is a desktop AI assistant built with Electron, Python, and advanced RAG (Retrieval-Augmented Generation) capabilities. Chat with multi-modal AI companions, generate images and videos, perform web research, and manage your personal knowledge base - all from a single application.
- Node.js 16+ and npm
- Python 3.11+ (recommend using venv)
- Free API Key from Together.ai (required for basic functionality)
See INSTALLATION_GUIDE.md for complete setup instructions.
Essential Steps:
- Install Node.js dependencies:
npm install - Set up Python environment:
cd backend && python -m venv venv311 && venv311\Scripts\activate - Install Python packages:
pip install -r requirements.txt - Add Together.ai API key in Account Settings
- Launch app:
npm start
Core ML Stack (see backend/requirements.txt for full list):
numpy>=2.0.0- NumPy 2.x with modern dtype handlingtorch>=2.5.0- PyTorch for embeddings and ML modelstransformers>=4.40.0- Hugging Face transformers librarysentence-transformers>=3.0.0- Semantic embeddings (device-aware)faiss-cpu>=1.8.0- REQUIRED for RAG and emotional intelligence featureschromadb~=0.5.0- Vector database for knowledge managementtogether>=1.2.0- Together.ai SDK for LLM/embedding API accessexa-py>=1.0.0- REQUIRED for Power Knowledge (Exa.ai) searchlangchain>=0.2.0- LLM orchestration framework
devdocs/10_DEPENDENCY_STRATEGY.md for breaking change guidance (NumPy 2.0, Together 1.x SDK, sentence-transformers 3.x).
Four unique AI personalities with distinct voices, visual descriptions, and conversation styles:
- Elara (Default) - Playful, adventurous, creative problem-solver
- Aeron - Strategic guardian, protective wisdom
- Aelira - Philosophical muse, intellectual challenger
- Andros - Pragmatic business/tech advisor
3-Layer Context Injection:
- Recent Turns - Guaranteed n most recent conversations (chronological)
- Semantic History - Relevant past conversations (similarity search)
- Knowledge Base - Content from ingested documents (PDF, DOCX, TXT, MD)
Emotional Intelligence (Optional):
- Populate emotional context database with
collect_emotions.py - Uses Exa.ai search to gather emotional understanding
- Enhances empathy and contextual awareness in responses
- Images: Flux.1, FLUX 1.1 Pro, Stable Diffusion models via Together.ai/FAL.ai
- Videos: Minimax, Luma, Kling, Runway Gen-3 via FAL.ai/Replicate
- Theme System: AI-generated Tailwind CSS themes (light/dark modes)
Semantic web search with AI-curated results. Automatically formats research into structured Markdown files saved to Output/exa/.
Supported Formats: PDF (with OCR), DOCX, TXT, MD, HTML
Capabilities: Table extraction, image OCR, recursive folder ingestion
Output: Markdown conversion for RAG ingestion
Scrapy integration for structured web data extraction. Results saved to Output/scrapy/.
- Digital Signing: Cryptographic signatures for generated content
- Watermarking: C2PA metadata embedding for provenance tracking
- Viewer Tool: Inspect signatures and watermarks on files
- Frontend: Electron (Chromium + Node.js), Tailwind CSS (migrating from Bootstrap)
- Backend: Python 3.11+, ChromaDB vector database
- LLM Providers: Ollama (local), Together.ai, OpenRouter, OpenAI-compatible APIs
- Storage: electron-store (settings), safeStorage (encrypted API keys)
- RAG Backend (
backend/rag_backend.py) - ChromaDB operations, context injection - Emotional RAG (
backend/collect_emotions.py) - Emotional database population via Exa.ai - Embedding Service (
backend/embedding_service.py) - Together.ai/Local embeddings - Ingestion Pipeline (
backend/ingestion_orchestrator.py) - Document processing - IPC Handlers (
src/main/handlers/) - Main process operations - Character System (
src/main/characters/) - AI companion definitions
User Input β Renderer (renderer.js, appHandlers.js)
β
Token Budget Calculation (tokenManager.js)
β
RAG Context Injection (apiHandlers.js β rag_backend.py)
- get_recent_turns() β Recent conversations
- search() β Semantic history + knowledge base
β
API Routing β Provider handlers (Ollama/Together/OpenRouter)
β
Response Streaming β UI Update β Save to RAG
- Together.ai - Free tier available, required for embeddings and LLM access
- OpenRouter - Access to 100+ LLM models
- Exa.ai - Power Knowledge semantic web search (required for
collect_emotions.py) - FAL.ai - Advanced image/video generation models
- Replicate - Video generation (Runway, Kling)
- Anthropic/OpenAI - Direct API access (if not using Together/OpenRouter)
All keys stored encrypted via Electron's safeStorage. Add keys in Account Settings.
- Config:
%AppData%\Roaming\openelara\config.json - Database:
%AppData%\Roaming\openelara\db\(ChromaDB collections) - Outputs:
%AppData%\Roaming\openelara\Output\exa/- Research resultsscrapy/- Web scraping dataimages/- Generated imagesvideos/- Generated videos
See docs/PROJECT_STRUCTURE.md for complete directory map.
- Installation Guide - Complete setup instructions
- User Manual - Feature documentation
- API Quick Reference - IPC handlers and Python scripts
- Custom Model Payloads - Advanced API configuration
- Digital Signing Setup - Content authentication
- Tailwind Migration Plan - Bootstrap β Tailwind CSS roadmap
- Dependency Strategy - Python package modernization plan
See devdocs/ folder for architecture details, implementation specs, and migration guides.
Solution: Install missing package in Python environment:
cd backend
venv311\Scripts\activate
pip install faiss-cpu exa-pyCauses: Missing faiss-cpu or exa-py packages
Solution: Install as above, restart app
venv311is the active Python environment (use this)venv(if exists) is likely a duplicate - safe to delete
If upgrading to latest requirements.txt versions (NumPy 2.0, Together 1.x, sentence-transformers 3.x):
- See
devdocs/10_DEPENDENCY_STRATEGY.mdfor breaking change analysis - Code refactoring required in:
together_provider.py,local_embedding_model.py,chromadb_faiss.py
- Fork the repository
- Create feature branch:
git checkout -b feature/your-feature - Follow existing code style (see
.github/instructions/COPILOT_INSTRUCTIONS.md) - Test thoroughly (especially RAG ingestion and character switching)
- Submit pull request
See LICENSE file for details.
For issues, feature requests, or questions:
- Review documentation in
docs/folder - Check
devdocs/for technical architecture details - Ingest documentation into RAG knowledge base for in-app help