Privacy-first local AI assistant with voice, memory, and Ollama โ JARVIS
Project description
๐พ JARVIS
Just A Rather Very Intelligent System
A privacy-first, fully local AI assistant โ voice, web UI, and CLI in one package.
๐ 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
-
Ollama must be installed and running before starting JARVIS:
# Install Ollama: https://ollama.com/download ollama serve ollama pull llama3.2
-
Configure your environment:
cp .env.example .env # Edit .env and set OLLAMA_MODEL, BACKEND_PORT, etc.
-
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 boots in under a second, detects your hardware, initializes the logger, and serves the UI โ all locally.
โจ Features
๐ค Intelligent ChatConversational 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 MemoryRemembers you across sessions. ChromaDB stores vector embeddings of your conversations, while ๐ค Voice InterfaceSpeak naturally. Faster-Whisper transcribes your voice locally, and Kokoro TTS reads responses back. Fully offline โ no API keys, no latency from the cloud. |
๐ Web UIA polished React + TypeScript interface served at ๐ป CLI ShellPower users can interact via a rich terminal interface โ ideal for scripting, piping, or when you just prefer the keyboard. ๐ REST APIJARVIS exposes a clean ๐ System MonitoringAsk JARVIS "how's my CPU?" โ the built-in |
๐๏ธ 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
- Create a new module in
tools/your_tool.py - Implement the tool interface (see
tools/README.md) - Register it in
brain/tool_registry.py - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a4836b93dc279667278f68b7fae52f1ab5c8342beea9c476ec9b2eba3bea0ea
|
|
| MD5 |
dad2d08ebb923117183756ea086c17b5
|
|
| BLAKE2b-256 |
7ef413dcfa3b32dcae41bd31b699ffabeae8d7a7237b1de97e787bf84dd5662b
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9c7164fda66255aab21def34159904b2133052d22794f67b62936f31d41b33a
|
|
| MD5 |
0f7e5a87d5871f5301dd7685813965e2
|
|
| BLAKE2b-256 |
8d9c7a43197a23a7554b9353d466ae979ecd9530823f57790b4e7f70e1a140be
|