Skip to main content

Privacy-first local AI assistant with voice, memory, and Ollama โ€” JARVIS

Project description

JARVIS v1.0.204

๐Ÿ‘พ JARVIS

Just A Rather Very Intelligent System

A privacy-first, fully local AI assistant โ€” voice, web UI, and CLI in one package.


Python Version FastAPI React Ollama ChromaDB License Platform


๐Ÿ”’ 100% local. No cloud. No telemetry. Your data never leaves your machine.


๐Ÿš€ Quick Start ยท โœจ Features ยท ๐Ÿ—๏ธ Architecture ยท ๐Ÿ“ Project Structure ยท ๐Ÿ› ๏ธ Tech Stack ยท ๐Ÿ“– Docs


Quick Start

New to JARVIS? Follow the setup guide first โ†’ HowToRun.md

Install from PyPI

# Core install (no voice)
pip install jarvise

# With voice support (Whisper STT + Kokoro TTS)
pip install jarvise[voice]

# Everything โ€” voice, Google, Microsoft, browser, CLI
pip install jarvise[all]

Prerequisites

  1. Ollama must be installed and running before starting JARVIS:

    # Install Ollama: https://ollama.com/download
    ollama serve
    ollama pull llama3.2
    
  2. Configure your environment:

    cp .env.example .env
    # Edit .env and set OLLAMA_MODEL, BACKEND_PORT, etc.
    
  3. Run JARVIS:

    jarvis
    

    Or from source: python main.py

Open your browser at http://localhost:8000 and start chatting.


๐Ÿš€ Detailed Setup

New to JARVIS? Follow the setup guide first โ†’ HowToRun.md

# 1. Install from PyPI (recommended)
pip install jarvise

# Or clone and install from source
git clone https://github.com/your-username/JARVISE.git && cd JARVISE
pip install -e .

# 2. Install dependencies (source / dev only)
pip install -r requirements.txt

# 3. Configure your environment
cp .env.example .env

# 4. Launch JARVIS
python main.py

๐Ÿ–ผ๏ธ Preview

Startup โ€” hardware detection & boot sequence

JARVIS startup terminal showing ASCII logo, boot messages and hardware detection

JARVIS boots in under a second, detects your hardware, initializes the logger, and serves the UI โ€” all locally.


โœจ Features

๐Ÿค– Intelligent Chat

Conversational AI powered by a ReAct agent loop โ€” reasons step by step, uses tools, and responds with context awareness. No hallucinated shortcuts; it thinks before it speaks.

๐Ÿง  Persistent Memory

Remembers you across sessions. ChromaDB stores vector embeddings of your conversations, while MEMORY.md holds distilled facts โ€” names, preferences, and key context.

๐ŸŽค Voice Interface

Speak naturally. Faster-Whisper transcribes your voice locally, and Kokoro TTS reads responses back. Fully offline โ€” no API keys, no latency from the cloud.

๐ŸŒ Web UI

A polished React + TypeScript interface served at localhost:8000. Chat, view memory, manage settings โ€” all in your browser.

๐Ÿ’ป CLI Shell

Power users can interact via a rich terminal interface โ€” ideal for scripting, piping, or when you just prefer the keyboard.

๐Ÿ”Œ REST API

JARVIS exposes a clean /api/* REST interface so you can build integrations, trigger automations, or connect your own tools.

๐Ÿ“Š System Monitoring

Ask JARVIS "how's my CPU?" โ€” the built-in system_monitor tool reports CPU, RAM, and GPU stats in real time.


๐Ÿ—๏ธ Architecture

System Overview

graph TB
    subgraph "๐Ÿ–ฅ๏ธ Interfaces"
        UI[Web UI<br/>localhost:8000]
        CLI[CLI Shell<br/>jarvis shell]
        API[REST API<br/>/api/*]
    end

    subgraph "โš™๏ธ JARVIS Core"
        Backend[FastAPI Backend]
        Agent[ReAct Agent<br/>brain/]
        Memory[ChromaDB<br/>memory/]
        Voice[Voice Pipeline<br/>voice/]
        Tools[Tool Registry<br/>tools/]
    end

    subgraph "๐Ÿค– AI Layer"
        Ollama[Ollama<br/>localhost:11434]
        LLM[Llama 3.2]
    end

    UI -->|WebSocket + HTTP| Backend
    CLI -->|HTTP| Backend
    API -->|HTTP| Backend

    Backend --> Agent
    Agent --> Memory
    Agent --> Voice
    Agent --> Tools
    Agent <-->|inference| Ollama
    Ollama --- LLM

Request Lifecycle

flowchart LR
    subgraph "๐Ÿ“ฅ Input"
        MIC[๐ŸŽ™๏ธ Microphone]
        TXT[โŒจ๏ธ Text / CLI]
        WEB[๐ŸŒ Web UI]
    end

    subgraph "๐Ÿ”„ Processing"
        STT[Whisper STT]
        AGENT[ReAct Agent]
        LLM[Ollama LLM]
    end

    subgraph "๐Ÿ’พ Memory"
        VEC[ChromaDB<br/>Vector Store]
        FILE[MEMORY.md<br/>Key Facts]
    end

    subgraph "๐Ÿ“ค Output"
        TTS[Kokoro TTS ๐Ÿ”Š]
        RESP[Text Response ๐Ÿ“]
        UI2[Web UI Update ๐ŸŒ]
    end

    MIC --> STT --> AGENT
    TXT --> AGENT
    WEB --> AGENT

    AGENT <--> VEC
    AGENT <--> FILE
    AGENT <-->|reason + act| LLM

    AGENT --> TTS
    AGENT --> RESP
    AGENT --> UI2

๐Ÿ“ Project Structure

JARVIS/
โ”‚
โ”œโ”€โ”€ ๐Ÿ–ฅ๏ธ  backend/           # FastAPI server, WebSocket handlers, routes
โ”œโ”€โ”€ ๐Ÿง   brain/             # ReAct agent, LangChain chains, prompt templates
โ”œโ”€โ”€ ๐Ÿ’พ  memory/            # ChromaDB vector store + MEMORY.md fact file
โ”œโ”€โ”€ ๐Ÿ› ๏ธ  tools/             # Tool modules: browser, code_exec, system_monitor, etc.
โ”œโ”€โ”€ ๐ŸŽค  voice/             # STT (Faster-Whisper) + TTS (Kokoro) pipeline
โ”œโ”€โ”€ ๐ŸŒ  ui/                # React 18 + TypeScript + Vite frontend
โ”œโ”€โ”€ ๐Ÿ’ป  cli/               # Python CLI package (argparse-based)
โ”‚
โ”œโ”€โ”€ ๐Ÿ“–  Docs/              # Extended documentation
โ”œโ”€โ”€ ๐Ÿงช  tests/             # Test suites and bug regression tests
โ”‚
โ”œโ”€โ”€ main.py               # ๐Ÿš€ Application entry point
โ”œโ”€โ”€ HowToRun.md           # ๐Ÿ“‹ Step-by-step setup guide
โ”œโ”€โ”€ .env                  # โš™๏ธ  Configuration (API endpoints, model names, etc.)
โ””โ”€โ”€ requirements.txt      # ๐Ÿ“ฆ Python dependencies

๐Ÿ› ๏ธ Tech Stack

Layer Technology Purpose
Backend FastAPI + Python 3.11+ REST API, WebSocket, async server
AI Inference Ollama (Llama 3.2) Local LLM โ€” no cloud needed
Agent Framework LangChain ReAct agent loop, chain orchestration
Memory / RAG ChromaDB Vector embeddings, semantic recall
Speech-to-Text Faster-Whisper Offline voice transcription
Text-to-Speech Kokoro Offline neural TTS
Frontend React 18 + TypeScript + Vite Snappy, modern web interface
CLI Python (argparse) Terminal interface

โš™๏ธ Configuration

JARVIS is configured via a .env file in the project root:

# Ollama
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=llama3.2

# Server
BACKEND_PORT=8000
BACKEND_HOST=0.0.0.0

# Memory
CHROMA_PERSIST_DIR=./memory/chroma
MEMORY_FILE=./memory/MEMORY.md

# Voice (optional)
VOICE_ENABLED=true
WHISPER_MODEL=base

๐Ÿง‘โ€๐Ÿ’ป Development

Running Modes

# Full app โ€” backend + web UI
python main.py

# Backend API only (no UI)
python -m backend.main

# CLI shell
python -m cli shell

# CLI โ€” single query
python -m cli ask "What's the weather like today?"

Running Tests

# Full test suite
pytest tests/

# Specific bug regression test
PYTHONIOENCODING=utf-8 python tests/Bugs_Testing/B1Test.py

# Verbose output
pytest tests/ -v --tb=short

Adding a New Tool

  1. Create a new module in tools/your_tool.py
  2. Implement the tool interface (see tools/README.md)
  3. Register it in brain/tool_registry.py
  4. The ReAct agent will automatically discover and use it

๐Ÿ“– Documentation

Document Description
HowToRun.md Prerequisites, installation, and first-run walkthrough
Docs/ Architecture deep-dives, API reference, tool guides

๐Ÿ—บ๏ธ Roadmap

  • Multi-model support (swap LLMs without restart)
  • Plugin system for third-party tools
  • Mobile-responsive web UI improvements
  • Long-term memory summarization
  • Wake-word detection for hands-free activation

๐Ÿค Contributing

Contributions are welcome! Please open an issue first to discuss what you'd like to change. For bug fixes, feel free to submit a PR directly.


๐Ÿ“„ License

MIT License โ€” see LICENSE for full details.


Built for privacy. Designed for speed. Made to be yours.

๐Ÿค– JARVIS โ€” Your Personal AI Assistant

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

jarvise-1.0.0.tar.gz (184.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jarvise-1.0.0-py3-none-any.whl (153.6 kB view details)

Uploaded Python 3

File details

Details for the file jarvise-1.0.0.tar.gz.

File metadata

  • Download URL: jarvise-1.0.0.tar.gz
  • Upload date:
  • Size: 184.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.0

File hashes

Hashes for jarvise-1.0.0.tar.gz
Algorithm Hash digest
SHA256 8a4836b93dc279667278f68b7fae52f1ab5c8342beea9c476ec9b2eba3bea0ea
MD5 dad2d08ebb923117183756ea086c17b5
BLAKE2b-256 7ef413dcfa3b32dcae41bd31b699ffabeae8d7a7237b1de97e787bf84dd5662b

See more details on using hashes here.

File details

Details for the file jarvise-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: jarvise-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 153.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.0

File hashes

Hashes for jarvise-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a9c7164fda66255aab21def34159904b2133052d22794f67b62936f31d41b33a
MD5 0f7e5a87d5871f5301dd7685813965e2
BLAKE2b-256 8d9c7a43197a23a7554b9353d466ae979ecd9530823f57790b4e7f70e1a140be

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