Screencast_20260515_144732.webm
A powerful, feature-rich local AI assistant powered by Ollama with advanced CLI, voice support, REST API, plugin system, and more.
- ๐ฃ๏ธ Voice Support โ Natural text-to-speech and voice input capabilities
- โก Fast & Local โ Runs entirely on your machine using Ollama
- ๐ Plugin System โ Extensible architecture for custom plugins
- ๐ REST API โ Full-featured HTTP API with interactive docs
- ๐พ Memory Management โ SQLite + JSON-based persistent storage
- ๐ Encryption โ Optional AES encryption for sensitive data
- ๐ Multi-Language โ Support for EN, IT, ES, FR, DE
- ๐ Session Management โ Create and manage multiple conversations
- ๐ฏ Advanced CLI โ Powerful command interface with 20+ commands
- ๐ณ Docker Ready โ Pre-configured Docker & Docker Compose setup
- Python 3.8+
- Ollama installed and running
# 1. Clone the repository
git clone https://github.com/PIXELQUADRO07/Jarvis-Core.git
cd Jarvis-Core
# 2. Create and activate virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# 3. Install dependencies
pip install -r requirements.txt
# 4. Start Ollama (in a separate terminal)
ollama serve
ollama pull qwen2.5:7b # or your preferred model
# 5. Launch JARVIS
python main.py --lang enpython main.py --lang en # Start in English
python main.py --silent # Enable short/quiet responses
python main.py --api # Start REST API server (port 8000)
python main.py --no-voice # Disable voice synthesis
python main.py --no-plugins # Disable plugins
python main.py --cleanup # Clean old DB messages and exitdocker-compose up -ddocker build -t jarvis-pro .
docker run -it --rm \
-e OLLAMA_URL=http://host.docker.internal:11434/api/chat \
jarvis-pro| Command | Description |
|---|---|
/help |
Display all available commands |
/status |
Show system and Ollama status |
/config |
Display current configuration |
/lang [it|en|es|fr|de] |
Change interface language |
/silent on|off |
Toggle silent/quiet mode |
/model list |
List available Ollama models |
/model set [name] |
Switch to different model |
/session create [name] |
Create a new conversation session |
/session switch [name] |
Switch to existing session |
/session list |
Display all sessions |
/export |
Export chat history to Markdown |
/search [text] |
Search conversation history |
/cleanup |
Remove old/archived messages |
/voice on|off|status|test |
Voice control & testing |
/encrypt on|off |
Toggle memory encryption |
/api on|off |
Start/stop REST API server |
/plugins |
List loaded plugins |
/clear |
Reset current session |
/history |
Show recent messages |
/exit |
Quit JARVIS |
Start the API with python main.py --api (or /api on in CLI).
Visit: http://localhost:8000/docs
curl -X POST http://localhost:8000/chat \
-H "Content-Type: application/json" \
-d '{"message": "hello", "session": "default"}'curl http://localhost:8000/statuscurl http://localhost:8000/sessionscurl http://localhost:8000/history/defaultcurl "http://localhost:8000/search?q=weather"curl -H "X-API-Key: your-api-key" http://localhost:8000/statusCreate custom plugins to extend JARVIS capabilities!
Create a new file in plugins/my_plugin.py:
from core.plugin_manager import PluginBase
class MyPlugin(PluginBase):
name = "my_plugin"
description = "What your plugin does"
version = "1.0.0"
def can_handle(self, query: str) -> bool:
"""Return True if this plugin should handle the query"""
return "my_keyword" in query.lower()
def handle(self, query: str) -> str:
"""Process the query and return response"""
return "My plugin response!"Plugins load automatically on next startup. No additional configuration needed!
Enable AES encryption to protect sensitive conversation data.
# Install cryptography (if not already installed)
pip install cryptography
# Enable encryption in CLI
/encrypt onYour encryption key is stored in .jarvis_key โ Never commit this file to version control!
Run the test suite to ensure everything works correctly:
# Run all tests with verbose output
pytest tests/ -v
# Run tests with coverage report
pytest tests/ --cov=core --cov-report=term-missingJarvis-Core/
โโโ main.py # Application entry point
โโโ config.py # Configuration manager
โโโ logger.py # Structured logging with rotation
โโโ jarvis_config.json # Default configuration
โโโ requirements.txt # Python dependencies
โโโ Dockerfile
โโโ docker-compose.yml
โ
โโโ core/ # Core functionality
โ โโโ llm.py # LLM streaming (Ollama)
โ โโโ memory.py # Memory management
โ โโโ db.py # SQLite persistence
โ โโโ state.py # Thread-safe state
โ โโโ commands.py # CLI command dispatcher
โ โโโ security.py # Security & encryption
โ โโโ i18n.py # Multi-language support
โ โโโ notifications.py # Desktop notifications
โ โโโ plugin_manager.py # Plugin system
โ โโโ retry_handler.py # Retry logic & circuit breaker
โ โโโ session_manager.py # Session management
โ โโโ token_counter.py # Token counting
โ โโโ voice.py # Voice interface
โ โโโ voice_engine.py # TTS worker
โ โโโ voice_queue.py # Audio queue
โ โโโ audio_fx.py # Audio effects
โ โโโ tts_piper.py # Piper TTS integration
โ โโโ tools/ # Utility tools
โ โโโ router.py # Tool routing
โ โโโ api_weather.py # Weather API
โ โโโ api_wiki.py # Wikipedia integration
โ โโโ web_search.py # Web search
โ โโโ math.py # Math utilities
โ โโโ scraper.py # Web scraping
โ โโโ system.py # System info
โ โโโ cache.py # Response caching
โ
โโโ controller/
โ โโโ jarvis_controller.py # UI-Core bridge
โ
โโโ ui/
โ โโโ cli.py # Advanced CLI interface
โ
โโโ api/
โ โโโ rest_api.py # FastAPI REST server
โ
โโโ plugins/ # User-created plugins
โ โโโ example_hello.py
โ
โโโ tests/ # Unit tests
โ โโโ test_core.py
โ
โโโ logs/ # Application logs
โโโ exports/ # Exported conversations
โโโ db/ # SQLite databases
โโโ memory_sessions/ # Session data
โโโ voices/ # Piper voice models
OLLAMA_URL=http://localhost:11434/api/chat
JARVIS_MODEL=qwen2.5:7b
JARVIS_TEMPERATURE=0.2
JARVIS_LANGUAGE=en
JARVIS_VOICE_ENABLED=false
JARVIS_VOICE_MODEL=en_US-ryan-high.onnx
JARVIS_ENABLE_API=false
JARVIS_API_PORT=8000
JARVIS_API_KEY=your-secret-key
JARVIS_ENCRYPT_MEMORY=false
JARVIS_SILENT_MODE=falseAll settings can be configured via:
- Environment variables
.jarvis_config.json(JSON format)- Command-line arguments
- Interactive CLI commands
Contributions are welcome! Feel free to:
- Report bugs via Issues
- Suggest features
- Submit Pull Requests
- Create plugins
This project is licensed under the MIT License โ see the LICENSE file for details.
- ๐ Check the Documentation
- ๐ Report issues on GitHub Issues
- ๐ฌ Start a discussion
โญ If you find this project helpful, please consider starring it! โญ
Made with โค๏ธ by PIXELQUADRO07