Omni-Bot is a comprehensive AI companion platform featuring modular, hardware-first AI agents designed for edge devices.
Type: Raspberry Pi Voice Assistant | Status: Active Development
A modular, voice-activated AI Agent for Raspberry Pi Zero 2 W with Whisplay HAT and PiSugar 3.
Features:
- β Interactive First-Boot Wizard (Hardware > Connectivity > Personality > API)
- β 4 Pre-built "Bud" personalities (Tech-Support, Trail-Runner, Hacker, Zen)
- β Dual-Route Intelligence (Local Ollama + Cloud OpenRouter)
- β Terminal-Dark UI with neon accents & 60fps animations
- β Real-time waveform visualization during voice capture
- β Battery management with PiSugar 3 monitoring
- β Physical GPIO buttons for Wake/Control
- β Fully async event loop for responsive UI
Quick Start:
cd Omni-Bot
bash setup.sh
python3 -m jarvis_bud.mainπ Full Jarvis-Bud Documentation β
This branch ships a hardened offline deployment stack with:
- π Tamper-evident audit chain (
logs/audit_chain.jsonl) - π Long-press Button B emergency stop (kills tracked process groups)
β οΈ High-risk action gating (risk >= 6 requires explicit button confirmation)- π§ Offline brain planner + reflection loop with GGUF model fallback chain
- π§΅ Tiny memory layer (FAISS/MiniLM optional, JSONL fallback always available)
- π¦
python main.py exportfor single-file HTML + encrypted USB package export - ποΈ Runtime
config/config.inicontrol forvibe_level+god_mode+dry_run
statusstopexporttarget add <X>crack wififull autogod modemake legendary
Set in config/config.ini:
[runtime]
vibe_level = stealth ; stealth | aggressive | cinematic
god_mode = false
dry_run = truegod mode switches to simulation-first flow for demos:
- fake rapid results
- matrix/glitch OLED visuals
- safety-preserving no-live-aggression defaults
- Raspberry Pi Zero 2 W boots and reaches shell
- Whisplay OLED active + matrix boot animation visible
- Button A triggers listen cycle
- Button B short press cycles Bud personality
- Button B long press performs emergency stop
- PiSugar battery values visible in HUD
-
python main.py exportwrites encrypted package to mounted USB
Built 2026 by madman + Cursor.
Omni-Bot/
βββ README.md # This file
βββ README_JARVIS_BUD.md # Comprehensive Jarvis-Bud guide
βββ LICENSE # MIT License
βββ requirements.txt # Python dependencies
βββ setup.sh # Automated RPi setup script
β
βββ jarvis_bud/ # Main application
β βββ main.py # Entry point with async loop
β βββ config.py # Configuration management
β βββ buds.json # Personality definitions
β β
β βββ hardware/
β β βββ lcd.py # ST7789 display driver
β β βββ audio.py # WM8960 codec driver
β β βββ battery.py # PiSugar 3 battery manager
β β βββ buttons.py # GPIO button handler
β β
β βββ ui/
β β βββ renderer.py # PIL frame renderer
β β βββ animations.py # Waveform animations
β β βββ themes.py # UI color schemes
β β
β βββ ai/
β β βββ ollama_client.py # Local LLM (Ollama)
β β βββ openrouter_client.py # Cloud LLM (OpenRouter)
β β βββ router.py # Intelligent routing
β β
β βββ wizard/
β βββ setup_wizard.py # First-boot setup
β
βββ config/
βββ example_config.json # Config template
ββ Async Main Loop βββββββββββββββββββββββββββββββ
ββ Display Update (60fps) β
ββ Button Event Handler β
ββ AI Response Generation (streaming) β
ββ Battery Monitoring β
ββββββββββββββββββββββββββββββββββββββββββββββββββ
User Input
β
AIRouter decides:
ββ Local Ollama (fast, offline) [home/office]
ββ Cloud OpenRouter (powerful) [mobile/outdoor]
β
AI Response β Waveform Animation β Output
| Component | Driver | Purpose |
|---|---|---|
| RPi Zero 2W | Custom | Main CPU |
| ST7789 LCD | PIL-based | User Interface |
| WM8960 Codec | alsaaudio/pyaudio | Audio I/O |
| PiSugar 3 | Socket IPC | Battery + UPS |
| GPIO Buttons | RPi.GPIO | Physical Input |
- Raspberry Pi Zero 2 W (or any RPi with SPI/I2C support)
- Whisplay HAT with WM8960 codec
- ST7789 LCD display (240x280)
- PiSugar 3 battery management
- Python 3.8+
- WiFi/Ethernet for cloud AI (optional)
-
Clone this repo:
git clone https://github.com/NaustudentX18/Omni-Bot.git cd Omni-Bot -
Run automated setup:
bash setup.sh
This handles: system updates, Python dependencies, SPI/I2C enabling, config directory creation
-
Start Jarvis-Bud:
python3 -m jarvis_bud.main
-
Follow the interactive wizard:
- Step 1: Hardware Check β
- Step 2: WiFi & Ollama auto-detection π‘
- Step 3: Pick your personality π€
- Step 4: Add OpenRouter API (optional) π
-
Done! Your AI companion is ready π
- Button A (GPIO 17): Press to activate Listen mode ποΈ
- Button B (GPIO 27): Press to cycle through Buds π«
1. Press Button A
2. Speak your question
3. Release Button A
4. Watch waveform animate while thinking
5. Hear AI response through speaker
π 85% π β Battery & Connectivity Status
βββββββββββββββββββββββββββββ
π Tech-Support Bud π€
ββββββββββββββββ β Waveform Animation
βββββββββββββββββββββββββββββ
Local Ollama
The wizard creates config/config.json with your preferred settings
Edit config/config.json:
{
"bud": {
"id": "tech-support",
"name": "Tech-Support Bud π€",
"system_prompt": "You are a friendly tech-support assistant...",
"ui_accent_color": "#00FF00"
},
"connectivity": {
"ollama": "http://naspi:11434"
},
"openrouter": {
"api_key": "sk_your_key_here",
"model": "google/gemini-2.0-flash-lite:free"
}
}Local Ollama (Free, Offline):
# On your home server
ollama pull mistral
ollama serve
# Pi will auto-detect at common addressesCloud OpenRouter (Powerful, Mobile):
1. Get free API key: https://openrouter.ai/keys
2. Add to wizard at setup or config.json
3. Enjoy cloud AI models (Gemini, Llama, etc.)
- Tech-Support Bud π€ - Green neon, patient & knowledgeable
- Trail-Runner Bud π - Blue neon, adventurous & motivational
- Snarky Hacker Bud π₯οΈ - Magenta neon, witty & irreverent
- Zen-Guide Bud π§ - Orange neon, calm & philosophical
Edit jarvis_bud/buds.json to add new personalities with custom:
- System prompts (behavior)
- UI accent colors
- Response styles
- Personality traits
Terminal-Dark with Neon Accents:
- Background:
#0A0A0F(deep blue-black) - Text:
#D2DCE6(light gray) - Neon Green:
#00FF64(primary accent) - Neon Blue:
#0096FF(secondary accent)
Local (Ollama) - Zero cost, instant, offline
mistralβ 4.1B params, lightweightneural-chatβ Optimized for conversationstarling-lmβ 7B, highly capable
Cloud (OpenRouter) - Powerful, anywhere, free tier
google/gemini-2.0-flash-lite:freeβ Fast & smartmeta-llama/llama-3.3-70b-instruct:freeβ Most powerfulmistralai/mixtral-8x7b-instruct:freeβ Balanced
from jarvis_bud.hardware import ST7789Display, AudioCodec, Battery, ButtonHandler
lcd = ST7789Display()
audio = AudioCodec()
battery = Battery()
buttons = ButtonHandler()from jarvis_bud.ui import FrameRenderer, WaveformAnimator
renderer = FrameRenderer()
animator = WaveformAnimator()
animator.get_frame("idle") # idle, listening, thinking, loadingfrom jarvis_bud.ai import AIRouter
router = AIRouter(
ollama_url="http://localhost:11434",
openrouter_key="sk_..."
)
response = router.generate("Question?", prefer="auto")from jarvis_bud.config import ConfigManager
config = ConfigManager()
bud_name = config.get("bud.name")
prompt = config.get_bud_system_prompt()
config.set("bud.id", "snarky-hacker")
config.save()π Full API Documentation β
LCD not displaying?
- Check SPI enabled:
sudo raspi-configβ SPI β Enable - Verify backlight GPIO (usually GPIO 12)
Audio not working?
- Check codec:
i2cdetect -y 1(look for WM8960) - Unmute:
alsamixer(space to unmute)
Ollama not found?
- Start Ollama server on your home PC/server
- Verify same WiFi network
- Check custom IP in config.json
Stuck in setup wizard?
- Hold Button A for 10 seconds to force-boot
- Delete config.json to re-run wizard:
rm config/config.json
π Full Troubleshooting Guide β
We'd love your help! Possible contributions:
- π New Bud personalities with unique system prompts
- π¨ UI themes and visual customizations
- π Additional hardware driver support
- π¬ Animation effects and transitions
- π Documentation improvements
- π Bug reports and testing
# Clone and setup
git clone https://github.com/NaustudentX18/Omni-Bot.git
cd Omni-Bot
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
# Code quality
black jarvis_bud/
pylint jarvis_bud/
# Test
python3 -m pytest tests/MIT License - See LICENSE file for details
Jarvis-Bud brings together:
- Raspberry Pi ecosystem & community
- Ollama local LLM technology
- OpenRouter for cloud AI
- PIL/Pillow for UI rendering
- asyncio for responsive design
- Jarvis-Bud Full Guide: README_JARVIS_BUD.md
- GitHub: https://github.com/NaustudentX18/Omni-Bot
- Ollama: https://ollama.ai (Local LLM)
- OpenRouter: https://openrouter.ai (Cloud AI)
- Raspberry Pi Docs: https://www.raspberrypi.com/documentation/
- First-boot wizard
- Dual-route AI (local + cloud)
- 4 built-in personalities
- Waveform animations
- STT (Speech-to-Text)
- TTS (Text-to-Speech)
- Web dashboard for configuration
- OTA updates
- Custom skill/plugin system
- Multi-device sync
Roadmap completion status: β Complete (10/10 implemented)
π Your AI companion awaits. Let's build the future together!
^
/ \__
( @\___
/ O
/ (_____/
/_____/ U
Jarvis-Bud: Edge AI for makers, hikers, and tech-heads