Multi-modal AI assistant with desktop GUI, web interface, and CLI. Runs locally on Ollama.
A powerful AI assistant that runs entirely on your hardware
Desktop GUI, web interface, and command-line — choose your preferred way to interact.
Switch models, adjust settings, and customize behavior with simple config changes.
Native Ollama tool calls for web search, file operations, and more. Multi-step reasoning.
Your data stays on your machine. No cloud dependency. Full privacy with local inference.
Optimized for Pi 4 with small models. Run your own AI assistant on a $35 computer.
MIT licensed. Read, modify, and distribute. Built by the community, for the community.
From full-powered desktop to lightweight Pi, NOVA adapts to your needs
| Feature | V2 Full | V2 Small | V1 |
|---|---|---|---|
| Approach | Native tool_calls | JSON-mode routing | JSON command router |
| Min Model Size | 7B+ | 1B+ | 3B+ |
| Multi-step Reasoning | ✓ 10-turn loop | ✓ 8-turn loop | ✗ Single-turn |
| Web Search | ✓ | ✓ | ✓ |
| File Operations | ✓ | ✓ | ✓ |
| Browser Control | ✗ | ✗ | ✓ |
| Discord | ✗ | ✗ | ✓ |
python ui2.py
V2
Desktop GUI — Animated HUD
python web_v2.py
V2
Web server on :9090
python jarvis_v2.py
V2
CLI — Native tool-calling agent
python ui2_small.py
V2 Small
Desktop GUI — Green theme
python web_v2_small.py
V2 Small
Web server on :9091
python jarvis_v2_small.py
V2 Small
CLI — JSON-mode agent
Up and running in 30 seconds
pip install -r requirements.txt
ollama pull qwen2.5:1.5b
python ui2_small.py
Tune NOVA to your preferences
# Edit jarvis.py constants:
CHAT_MODEL = "llama3.2:latest" # change model here
WEATHER_LOCATION = "Toronto" # your city
WORKSPACE_DIR = "./workspace/" # file storage
Recommended models for 8GB Pi 4
ollama pull qwen2.5:1.5b
ollama pull llama3.2:1b
ollama pull phi3:mini
ollama pull tinylm:1.1b
# Install Ollama
curl -fsSL https://ollama.com/install.sh | sh
# Pull a small model
ollama pull qwen2.5:1.5b
# Use the small-model agent
python jarvis_v2_small.py
# Or the web interface
python web_v2_small.py
jarvis_v2_small.py on Pi — JSON-mode routing works better with small models