A full working Jarvis built with a Python backend and a modern HTML/CSS/JS frontend. The UI can be hosted on Vercel while the brain runs locally. Clean architecture, easy to extend, and beginner‑friendly to advanced. Author: Ayush Kumar Rai (aka Future Lelouch)
🔗 Live UI (Vercel) · Features · Quick Start · Structure · Config · Troubleshooting
- About
- Features
- Technology Stack
- Screenshots / Demo
- Quick Start
- Project Structure
- Configuration
- Usage
- Extending Jarvis
- Troubleshooting
- Deployment
- Roadmap
- Contributing
- License
- Acknowledgements
Jarvis is a voice‑driven personal assistant. The Python engine handles speech, intent routing and system actions; the web frontend provides a slick control panel and visual feedback. It’s designed to be:
- Modular — add new commands without touching the core.
- Hackable — swap STT/TTS or plug in APIs you like.
- Deployable — run locally; ship the UI to Vercel for quick sharing.
Tip: This repository includes a sample SQLite database and CSV contacts so you can get productive immediately.
Use the checklist to reflect your current build. Uncheck items you haven’t enabled yet.
- Voice activation (press‑to‑talk or hotkey)
- Text‑to‑speech responses
- Command routing via Python engine
- Local database (SQLite) to store shortcuts/commands
- Modern UI (HTML/CSS/JS + Bootstrap)
- Wake word (e.g., “Jarvis”)
- System controls: open apps, files, websites, volume/brightness
- Search & knowledge: Wikipedia/Google/YouTube helpers
- Productivity: notes, reminders, to‑do
- Media: play/pause, next/prev, local music folder
- Weather/News (requires API keys)
- Smartphone link (ADB/Wi‑Fi; optional) — call, message, clipboard
- Computer vision add‑ons (screenshots, OCR, object detection)
Feel free to add/remove blocks depending on your actual feature set.
Core
- Python 3.x (engine)
- HTML5, CSS3, JavaScript (frontend)
- Bootstrap 5 (UI components)
- SQLite (persistence)
- Eel (Python ↔ Web bridge for a desktop window)
Typical Python libraries (confirm in requirements.txt and adjust)
SpeechRecognition,PyAudio— speech‑to‑textpyttsx3— text‑to‑speechrequests— API callswikipedia,pywhatkit,psutil, etc. — helpers (optional)
Optional integrations
- Weather/News APIs
- OpenAI/LLM APIs
- Android Debug Bridge (ADB) for device actions
|
|
|
|
|
| UI 6
# clone
git clone https://github.com/ayu-yishu13/Jarvis.git
cd Jarvis
# create venv
# Windows
python -m venv .venv
.\.venv\Scripts\activate
# macOS/Linux
# python3 -m venv .venv && source .venv/bin/activate
# install deps
pip install -r requirements.txt# common entrypoints — use whichever your project uses
python run.py # launches the desktop UI bridge
# or
python main.py # starts the Jarvis core/CLIOn first run, your OS may ask to allow microphone access.
jarvis.db— ships with sample data you can modify.contacts.csv— sample contacts for quick demos. Import into your DB or read directly.
Jarvis/
├─ engine/ # Python backend modules (intents, actions, utils)
├─ www/ # Frontend (HTML/CSS/JS, Bootstrap)
├─ main.py # Entrypoint for the Jarvis core
├─ run.py # Launches desktop window / web bridge
├─ requirements.txt # Python dependencies
├─ jarvis.db # SQLite database (sample)
├─ contacts.csv # Sample contacts
├─ device.bat # Helper script for Android (ADB)
├─ .vscode/ # Editor settings
└─ .gitignore
Explore
engine/to learn how commands are mapped to actions, andwww/for the UI.
Create a .env in the project root (optional but recommended):
# Audio
STT_ENGINE=speechrecognition # or vosk, etc.
TTS_ENGINE=pyttsx3
MIC_DEVICE_INDEX=default
# API keys (use only the ones you actually integrate)
OPENAI_API_KEY=
WEATHER_API_KEY=
NEWS_API_KEY=
# System / Device
WAKE_WORD=jarvis
ADB_DEVICE_IP=192.168.0.101 # if you use ADB over Wi‑FiThen load these in Python (e.g.,
python-dotenv) or your own config loader.
Hotkey / PTT: press the configured key or button in the UI to start listening.
Sample commands (adapt to what you’ve implemented):
- “Open Chrome” / “Open VS Code”
- “Search YouTube for lo‑fi beats”
- “What’s the weather in Bangalore today?”
- “Remind me to study at 7 PM”
- “Send WhatsApp to Ayush: I’ll be late”
- “Increase volume to 70%”
Add your own commands by registering a handler in the engine and (optionally) a UI tile.
- Intent: Create a function in
engine/(e.g.,engine/commands/media.py). - Router: Register it in your command router (e.g., a dict or rule list).
- UI (optional): Add a button/tile in
www/that calls the same action. - Persist (optional): Add a row to
jarvis.dbfor quick access.
# example router snippet (pseudo)
ROUTES = {
"open chrome": actions.open_chrome,
"play music": actions.play_music,
}- Swap the adapter class (e.g.,
engine/stt.py,engine/tts.py). - Update
.envto point to the new engine.
- Create
engine/integrations/<service>.py. - Read keys from environment.
- Expose an action and register it.
- Check OS privacy settings.
- On Windows, set the correct input device under Sound Settings.
- Install VS Build Tools (C++) and try again.
- Or use a prebuilt wheel matching your Python version.
adb kill-server
adb start-server
adb devices # authorize on phone (enable USB debugging)
adb tcpip 5555
adb connect <PHONE_IP>- Ensure Android SDK
platform-toolsare on your PATH.
Add vercel.json with a rewrite to index.html:
{
"rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
}- Put the static frontend in
www/(or your chosen folder). - In Vercel, set Framework Preset: “Other”.
- Output Directory:
www. - (Optional) Add the
vercel.jsonabove for SPA routing.
- Use
pyinstallerornuitkato bundle Python + web assets. - Example (adjust paths):
pyinstaller --noconsole --onefile --add-data "www;www" run.py- Wake‑word engine (Porcupine/Vosk)
- Settings page (hotkeys, voice, theme)
- Plugin system for commands
- Cross‑platform packaging
- Test suite + CI
Contributions are welcome!
- Fork the repo & create a feature branch.
- Follow the project structure and keep functions small and testable.
- Open a Pull Request with a clear description and screenshots if UI changes.
Run
ruff/flake8(or your linter) andblackbefore committing, if configured.
Choose a license (MIT recommended for simplicity). Add a LICENSE file in the root.
Until then, all rights reserved by the author.
- Inspiration from community voice assistants and desktop automation tools.
- Thanks to libraries and services used in this project.
#jarvis #python #voice-assistant #eel #bootstrap #sqlite #web-ui #vercel
