👾 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
🏗️ 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
Release files for jarvise 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jarvise-1.0.0.tar.gz | 184.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jarvise-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 338.4 kB
Release files / jarvise-1.0.0.tar.gz
| Download URL | jarvise-1.0.0.tar.gz |
|---|---|
| Size | 184.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8a4836b93dc279667278f68b7fae52f1ab5c8342beea9c476ec9b2eba3bea0ea
|
|
BLAKE2b-256 checksum How to use checksums |
7ef413dcfa3b32dcae41bd31b699ffabeae8d7a7237b1de97e787bf84dd5662b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.0
|
Release files / jarvise-1.0.0-py3-none-any.whl
| Download URL | jarvise-1.0.0-py3-none-any.whl |
|---|---|
| Size | 153.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a9c7164fda66255aab21def34159904b2133052d22794f67b62936f31d41b33a
|
|
BLAKE2b-256 checksum How to use checksums |
8d9c7a43197a23a7554b9353d466ae979ecd9530823f57790b4e7f70e1a140be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.0
|