Built with Python | CustomTkinter | Gemini API | Modern GUI
Welcome to JARVIS Mark 21, a voice-enabled, GUI-based personal AI assistant inspired by Iron Man's JARVIS — reimagined and developed by Devansh. This assistant is smart, stylish, and customizable — perfect for everyday automation, chatting, and cool AI experiments!
- Modern GUI (CustomTkinter) – Beautiful dark-mode interface with customizable themes
- Animated Avatar – Live animated assistant face (supports GIF, PNG, JPG formats)
- Video Intro – Cinematic startup video with fade-out effects
- Productivity Dashboard – Left sidebar with calendar, clock, and uptime timer
- RGB Sidebar Border – Dynamic color-cycling border for a techy look
- Theme System – Multiple pre-built themes to customize your experience
- Custom Backgrounds – Set your own background images
- Loading Animations – Smooth spinner animations during AI processing
- Typing Animation – Cinematic text typing with random speed variations
- Voice Recognition – Speech-to-text using SpeechRecognition library
- Wake Word Detection – "Hey Jarvis" trigger (toggleable via GUI switch)
- Text-to-Speech (TTS) – Voice responses using pyttsx3 (toggleable on/off)
- Multi-language Support – Supports English and Hindi language responses
- Speech Interrupt – Stop Jarvis mid-speech with interrupt button
- Voice Toggle – Enable/disable voice via command or GUI switch
- Gemini API Integration – Powered by Google's Gemini AI for intelligent conversations
- Contextual Memory – Remembers last 20 conversations for context-aware responses
- Persistent Chat History – All conversations saved and loaded automatically
- Smart Memory System – Remembers personal facts about you (name, preferences, etc.)
- Natural Language Processing – Understands commands in natural language
- Notes System – Add, view, and delete notes
- Reminders – Set time-based reminders with natural language support
- Time delay: "remind me to take medicine in 15 minutes"
- Natural language: "remind me to call mom tomorrow at 5PM"
- Custom Commands – Teach Jarvis new commands: "when i say X, do this Y"
- Chat History – View and save conversation history
- Memory Recall – Ask "what is my name?" or "do you remember my birthday?"
- Music Player – Play, pause, resume, stop, skip, and shuffle music
- Auto Music Detection – Automatically loads music from your Music folder
- Background Music – Play music while using other features
- Web Browser Control – Open websites (YouTube, Google, GitHub, LinkedIn)
- System Commands – Control your PC with voice/text:
- Shutdown: "shutdown my pc"
- Restart: "restart my pc"
- Sleep: "sleep my pc"
- Hibernate: "hibernate my pc"
- Lock: "lock my pc"
- Folder Navigation – Open folders by name
- Application Launcher – Launch applications via custom commands
- Weather Updates – Live weather information with auto-location detection
- Current temperature, feels-like, humidity
- Weather description with emoji indicators
- Auto-refreshes every minute
- Tech News – Latest technology news from NewsAPI and HackerNews
- Top 5 tech headlines displayed in sidebar
- Auto-refreshes periodically
- Market Watch – Stock market data display (in right sidebar)
- Calculator Plugin – Advanced math calculations via voice/text
- Supports: addition, subtraction, multiplication, division
- Percentage calculations: "increase 100 by 10%"
- Natural language: "what is 25 plus 17?"
- Plugin System – Modular plugin architecture for easy extensions
- Create custom plugins with simple registration
- Auto-loads all plugins from
plugins/folder
- Auto-Learning Mode – Jarvis learns custom commands from you
- Bold Text Formatting – Text in asterisks automatically becomes bold
- Enter Key Support – Send messages with Enter key
- Unknown Command Logging – Saves unrecognized commands for future learning
- Thread-Safe Operations – All operations run in background threads (no freezing)
- Error Handling – Graceful error handling with user-friendly messages
- Python 3.12+ – Programming language
- CustomTkinter – Modern GUI framework
- Google Gemini API – AI conversation engine
- SpeechRecognition – Voice input processing
- pyttsx3 – Text-to-speech engine
- Pillow (PIL) – Image processing for avatars
- requests – HTTP requests for APIs
- python-dotenv – Environment variable management
- pygame – Music playback
- OpenCV (cv2) – Video intro playback
- BeautifulSoup4 – Web scraping (if needed)
JARVIS_MARK_21_Beta/
├── JarvisMain.py # Main entry point
├── video_intro.py # Startup video handler
├── floating_button.py # Optional floating button
├── .env # API keys (create this file)
├── requirements.txt # Python dependencies
│
├── GUI/ # User Interface
│ ├── __init__.py
│ ├── gui_main.py # Main GUI window
│ ├── avatar.py # Avatar display handler
│ ├── helper.py # GUI helper functions
│ └── themes/
│ └── themes.py # Theme definitions
│
├── core/ # Core Logic
│ ├── commands.py # Command processing
│ ├── utils.py # Utility functions
│ ├── memory.py # Memory management
│ ├── config.py # Configuration settings
│ ├── theme_manager.py # Theme management
│ └── plugin_loader.py # Plugin system loader
│
├── features/ # Feature Modules
│ ├── notes.py # Notes management
│ ├── reminders.py # Reminder system
│ └── music.py # Music player
│
├── voice/ # Speech & Voice
│ ├── tts.py # Text-to-speech
│ └── stt.py # Speech-to-text
│
├── api/ # External API Integrations
│ ├── gemini.py # Gemini AI integration
│ ├── weather.py # Weather API
│ ├── news.py # News API
│ ├── location.py # Location detection
│ └── stock_data.py # Stock market data
│
├── plugins/ # Plugin System
│ ├── __init__.py
│ └── calculator.py # Calculator plugin
│
├── DATA/ # User Data Storage
│ ├── notes.json # Saved notes
│ ├── reminders.json # Saved reminders
│ ├── chat_log.txt # Conversation history
│ ├── memory.json # Persistent memory
│ ├── custom_commands.json # Learned commands
│ └── unknown_commands.txt # Unrecognized commands
│
└── assets/ # Media Assets
├── intro.mp4 # Startup video
├── avatar*.gif # Avatar animations
└── jarvis_bg.* # Background images
- Python 3.12 or higher installed on your system
- Microphone (for voice features)
- Internet connection (for AI and API features)
git clone https://github.com/RootDeveloperDS/J.A.R.V.I.S..git
cd J.A.R.V.I.S.# Install all required packages
pip install -r requirements.txtNote for Windows users: If you encounter issues with PyAudio, try:
pip install pipwin
pipwin install pyaudiorun JarvisMain.py and enter your API key when asked:
# Required API Keys
GEMINI_API_KEY=your_gemini_api_key_here
# Optional API Keys (for additional features)
WEATHER_API_KEY=your_openweathermap_api_key
NEWS_API_KEY=your_newsapi_keyHow to get API keys:
- Gemini API: Visit Google AI Studio to get your free API key
- Weather API (optional): Get from OpenWeatherMap
- News API (optional): Get from NewsAPI
By default, Jarvis looks for music in your system's Music folder. To change this, edit features/music.py and update the path.
python JarvisMain.pyFirst Run:
- You'll see a startup video intro (press ESC to skip)
- The GUI will launch with a welcome message
- Jarvis will check for API keys and create necessary data files
- Enable Wake Word: Toggle the "Wake Word" switch in GUI
- Say "Hey Jarvis" to activate voice mode
- Speak your command after hearing the activation sound
- Jarvis will respond both in text and voice
- Type your message in the input box
- Press Enter or click Send
- Jarvis responds in the chat window
- Ask any question: "What is artificial intelligence?"
- General conversation: "Tell me a joke"
- Language support: Ask in Hindi for Hindi responses
"add note [your note]"– Save a note"show notes"– View all notes"delete note [note text]"– Remove a note"remind me to [task] in [X] minutes"– Set a reminder"remind me to [task] tomorrow at [time]"– Natural language reminder"view reminders"– See all active reminders
"play music"– Start playing music"pause music"– Pause playback"resume music"– Continue playback"stop music"– Stop playback"next song"– Skip to next track"shuffle music"– Shuffle playlist
"shutdown my pc"– Shutdown computer (10 second delay)"restart my pc"– Restart computer"sleep my pc"– Put computer to sleep"hibernate my pc"– Hibernate computer"lock my pc"– Lock screen
"open youtube"– Open YouTube"open google"– Open Google"open my github"– Open GitHub"open my linkedin"– Open LinkedIn"open folder [folder name]"– Open folder from home directory
"remember that my [key] is [value]"– Save personal info- Example: "remember that my name is John"
"what is my [key]"– Recall saved info"what do you remember"– See all saved memories"when i say [phrase], do this [action]"– Teach custom command- Example: "when i say launch mode, do this open Spotify and VS Code"
"calculator [expression]"– Perform calculations- Examples:
- "calculator 25 plus 17"
- "calculator 100 times 5"
- "calculator increase 100 by 10%"
- "calculator 50% of 200"
- Examples:
"enable tts"or"turn on tts"– Enable voice responses"disable tts"or"turn off tts"– Disable voice responses
"show chat history"– Display conversation history"save chat"– Save current chat to file"what can you do"– List all available features
- Click Menu → Themes (or use theme button)
- Select from available themes
- Theme is saved and applied on next restart
- Place your background image in
assets/folder - Name it
jarvis_bg.png(or.jpg) - Restart Jarvis to see the new background
- Replace avatar files in the main directory:
avatar2.gif,avatar4.gif,avatar6.gif,avatar9.gif
- Supported formats: GIF, PNG, JPG
- Restart Jarvis to load new avatar
Edit features/music.py and change the MUSIC_FOLDER path to your preferred music directory.
pip install customtkinter- Check microphone permissions in Windows Settings
- Ensure microphone is not being used by another application
- Try running as administrator
- Verify
.envfile exists in the correct directory - Check that API key is correctly formatted (no extra spaces)
- Ensure you have internet connection
- Verify music files are in supported formats (MP3, WAV)
- Check that music folder path is correct
- Ensure pygame is installed:
pip install pygame
- Check that avatar file exists in the directory
- Supported formats: GIF, PNG, JPG
- Try using a different avatar file
- Check microphone is connected and working
- Install PyAudio:
pip install pyaudioorpipwin install pyaudio - Try speaking more clearly and louder
- Create a new file in
plugins/folder (e.g.,my_plugin.py) - Use this template:
# plugins/my_plugin.py
from voice.tts import speak
def register():
return {
"trigger": "mytrigger", # Word that activates plugin
"description": "My custom plugin",
"run": run_my_plugin
}
def run_my_plugin(command, output_widget):
# Your plugin logic here
response = "Plugin executed!"
output_widget.insert("end", response + "\n")
output_widget.see("end")
speak(response)- Restart Jarvis - plugin will auto-load!
Edit core/commands.py to add new built-in commands. Follow the existing pattern:
elif "my command" in command:
reply = "Command response"
# Your logic here- Main GUI:
GUI/gui_main.py - Themes:
GUI/themes/themes.py - Avatar:
GUI/avatar.py
- GEMINI_API_KEY – Required for AI conversations
- WEATHER_API_KEY – For weather features
- NEWS_API_KEY – For tech news feed
- Never commit your
.envfile to version control - Keep API keys private and secure
- Rotate keys if compromised
- The
.envfile is already in.gitignore
- DevX AI Core Integration – Custom AI framework
- Enhanced GUI Animations – More fluid UI transitions
- Mobile Port – Kivy or BeeWare mobile app
- Web Interface – Browser-based access
- Advanced Plugin System – Plugin marketplace
- Voice Cloning – Custom voice profiles
- Multi-user Support – Multiple user profiles
- Cloud Sync – Sync data across devices
- More Games & Utilities – Built-in games and tools
VISAR EDGE V1.0 is on the horizon — the evolution of JARVIS into a more powerful, context-aware, and visually stunning AI environment ecosystem.
A new chapter of intelligence, design, and autonomy is coming soon...
Get ready — the VISAR EDGE Era is about to begin. 🚀
- ✅ Market Watch in sidebar
- ✅ Enhanced plugin system
- ✅ Improved error handling
- ✅ Better UI responsiveness
See All Version Update Details.md for complete changelog from Mark 6 to Mark 21.
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Bug fixes
- New features
- Documentation improvements
- Plugin development
- UI/UX enhancements
- Performance optimizations
Found a bug? Have a feature request?
- Check existing Issues
- Create a new issue with:
- Clear description
- Steps to reproduce
- Expected vs actual behavior
- System information (OS, Python version)
- Setup Guide: This README
- Version History:
All Version Update Details.md - Code Comments: Inline documentation in source files
Developed by: Devansh Sharma
Inspired by: Iron Man's JARVIS
Built with: Python, CustomTkinter, Gemini API
- GitHub: @RootDeveloperDS
- LinkedIn: devanshsharma987
- Email: developersofroot@gmail.com
MIT License – Feel free to use, modify, and build upon this project. Attribution is appreciated!
Copyright (c) 2024 Devansh Sharma
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
If you find this project helpful, please consider:
- ⭐ Starring the repository
- 🍴 Forking for your own use
- 🐛 Reporting bugs and issues
- 💡 Suggesting new features
- 📢 Sharing with others
Made with ❤️ by Devansh Sharma
"Sometimes you gotta run before you can walk." – Tony Stark