Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

27 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Screencast_20260515_144732.webm

๐Ÿค– JARVIS PRO โ€” Local AI Assistant

A powerful, feature-rich local AI assistant powered by Ollama with advanced CLI, voice support, REST API, plugin system, and more.

Python License Docker Status


โญ Features

  • ๐Ÿ—ฃ๏ธ 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

๐Ÿš€ Quick Start

Prerequisites

  • Python 3.8+
  • Ollama installed and running

Installation

# 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 en

๐ŸŽฎ Launch Options

python 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 exit

๐Ÿณ Docker Setup

Option 1: Complete Setup (JARVIS + Ollama)

docker-compose up -d

Option 2: JARVIS Only (Ollama running separately)

docker build -t jarvis-pro .
docker run -it --rm \
  -e OLLAMA_URL=http://host.docker.internal:11434/api/chat \
  jarvis-pro

๐Ÿ’ฌ CLI Commands Reference

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

๐ŸŒ REST API

Start the API with python main.py --api (or /api on in CLI).

Interactive Documentation

Visit: http://localhost:8000/docs

API Endpoints

Chat

curl -X POST http://localhost:8000/chat \
  -H "Content-Type: application/json" \
  -d '{"message": "hello", "session": "default"}'

System Status

curl http://localhost:8000/status

Session Management

curl http://localhost:8000/sessions

Chat History

curl http://localhost:8000/history/default

Search History

curl "http://localhost:8000/search?q=weather"

With API Key (if configured)

curl -H "X-API-Key: your-api-key" http://localhost:8000/status

๐Ÿ”Œ Plugin System

Create custom plugins to extend JARVIS capabilities!

Creating a Plugin

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!


๐Ÿ” Memory Encryption

Enable AES encryption to protect sensitive conversation data.

# Install cryptography (if not already installed)
pip install cryptography

# Enable encryption in CLI
/encrypt on

Your encryption key is stored in .jarvis_key โ€” Never commit this file to version control!


๐Ÿงช Testing

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-missing

๐Ÿ“ Project Structure

Jarvis-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

โš™๏ธ Configuration

Environment Variables

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=false

All settings can be configured via:

  • Environment variables
  • .jarvis_config.json (JSON format)
  • Command-line arguments
  • Interactive CLI commands

๐Ÿค Contributing

Contributions are welcome! Feel free to:

  • Report bugs via Issues
  • Suggest features
  • Submit Pull Requests
  • Create plugins

๐Ÿ“„ License

This project is licensed under the MIT License โ€” see the LICENSE file for details.


๐Ÿ“ž Support


๐Ÿ™ Acknowledgments


โญ If you find this project helpful, please consider starring it! โญ

Made with โค๏ธ by PIXELQUADRO07

About

Local jarvis AI

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages