Control your system without touching a mouse or keyboard. Project_AURA turns your webcam and microphone into a highβprecision, handsβfree humanβcomputer interface.
Project_AURA is a high-performance, Python-based HCI that replaces traditional peripherals with computer vision and voice recognition. By combining real-time hand tracking with speech commands, it enables a "Minority Report" style interaction model suitable for accessibility, clean-room environments, and futuristic productivity workflows.
- Demo
- Key Features
- Tech Stack
- System Architecture
- Jarvis AI Subsystem β Deep Dive
- Installation & Setup
- How to Run
- Usage Guide
- Project Structure
- Configuration
- Performance & Optimization
- Known Limitations
- Roadmap
- Contribution Guidelines
- License
- Author
Jarvis.Demo.Video.mp4
Examples:
- Real-time gesture tracking with visual feedback bars and status indicators.
- Voice-triggered application launch and text dictation while cursor control remains active.
- Seamless conversational AI with procedural UI waveform animations.
-
Physics-Based Air Mouse β Advanced cursor control with acceleration curves, configurable deadzones, and "sticky" friction logic for pixelβlevel precision.
-
Jarvis AI Subsystem β A highly advanced, context-aware AI agent powered by Groq. It utilizes a Fast Router to bypass LLMs for simple commands (<1ms response) and streams complex LLM responses chunk-by-chunk for sub-300ms latency.
-
Floating Orb UI (Glassmorphism) β A beautiful, borderless Electron/React desktop overlay. Features a draggable, interactive Orb with procedural Framer Motion physics that react and "squeeze" in sync with voice activity and system states.
-
Full-Duplex Audio & Local TTS β Features Acoustic Echo Cancellation (AEC) and barge-in support (saying "stop" interrupts the AI). Voice responses are powered locally by Kokoro TTS for a deep, crisp, zero-cost AI voice.
-
Smart Gesture Recognition
- Clicking: Thumbβindex pinch with hysteresis to avoid accidental double-clicks.
- Scrolling: Two-finger navigation mode.
- Auxiliary Actions: Right-click (pinky) and double-click (ring finger) pinch triggers.
-
High-Performance Architecture β Threaded camera capture and nonβblocking loops keep the UI responsive and capable of 60 FPS on typical hardware.
-
Robust Smoothing β Butterworth and One Euro filters reduce hand jitter while preserving low-latency, natural movement.
-
Visual HUD & Dashboard β On-screen overlay shows pinch distance, while clicking the UI Orb expands a modern dashboard showing recent commands, system memory, and audio settings.
Core
- Language: Python 3.10+ & TypeScript/JavaScript
- Computer Vision: OpenCV, MediaPipe
- Math & Physics: NumPy
- Automation: PyAutoGUI, AppOpener
Frontend UI
- Framework: React, Electron, Vite
- Styling: TailwindCSS, Lucide React Icons
- Animation: Framer Motion (Procedural Audio Waveforms & Drag Physics)
Audio & AI Agent
- LLM Engine: AsyncGroq API (Llama-3)
- TTS (Text-to-Speech): Kokoro (Local) & PyGame
- Online Voice Recognition:
SpeechRecognition(Google API) + PyAudio - Offline Voice Recognition (optional): Vosk models under
models/ - Concurrency:
threading,queue, and WebSockets for nonβblocking I/O.
Project_AURA uses a non-blocking, multi-threaded architecture to maintain responsiveness under continuous CV and audio workloads.
-
Vision Thread β Captures webcam frames asynchronously to maximize throughput and decouple I/O from processing.
-
Voice Thread & Agent Core β Listens continuously in the background, processes wake words instantly, and manages the State Machine (Idle, Listening, Thinking, Speaking).
-
UI WebSocket Bridge β A full-duplex WebSocket server (
ui_bridge.py) that syncs the Python backend state to the React frontend at 60Hz. -
Main Loop (Physics Engine)
- Processes MediaPipe hand landmarks.
- Applies smoothing filters (Butterworth / One Euro) to reduce jitter.
- Computes vector distances for gesture triggers.
- Updates cursor position with a variable friction model (cursor slows as you approach a pinch).
- Consumes and executes queued voice commands.
The Jarvis AI Subsystem referenced above is not a simple voice assistant β it's a goal-driven, autonomous desktop agent that understands complex commands, decomposes them into multi-step plans, executes them with real desktop control (apps, browser, WhatsApp, clicks), verifies results, and recovers from failures. This section documents its internal architecture in full.
User speaks β Wake Word (Vosk) β STT (Whisper) β Semantic Correction (Groq LLM)
β
Fast Router (3-tier local classifier: exact β keyword β regex β LLM fallback)
β
Intent Engine β Decision Engine β Planner β Task Graph β Executor
β
Tools: App Launcher, Browser, Keyboard, Media, WhatsApp, Click Simulator
β
Verification + Reflection β TTS Response
Voice Pipeline (voice/service.py)
- Wake word detection using Vosk ("Jarvis")
- Audio recording with silence detection, pre-roll buffer, AGC
- STT via faster-whisper (small.en model, CUDA-accelerated)
- Semantic correction via Groq LLM for post-STT fixes
- Full-duplex barge-in (user can interrupt Jarvis while speaking)
- Follow-up microphone auto-trigger for multi-turn conversations
Intent System
- Fast Router (
fast_router.py): 3-tier local classifier handling ~80% of commands in <1ms without LLM calls - Intent Engine (
voice/intent_engine.py): LLM-based intent classification for complex commands - Dynamic Intent Registry (
core/intent_registry.py): Priority-based pattern matching with 36 patterns across 27 intents
Planning & Execution
- Planner (
planner/engine.py): Converts intents to executable step sequences with memory-aware preferences - Task Graph (
core/task_graph.py): Dependency-aware parallel execution with retry logic - Execution Runner (
executor/runner.py): Step-by-step execution with verification, retry, and fallback chains - Goal Manager (
core/goal_manager.py): Persistent goal tracking with disk-based state
Tool Ecosystem (all dynamic via CapabilityRegistry)
- AppLauncherTool β Open/close/focus any Windows application
- BrowserTool β URL navigation, search, tab management
- MediaControllerTool β Spotify/YouTube playback control
- KeyboardTool β Text typing, file saving, scrolling
- WebNavigatorTool β Multi-site web research with content extraction
- AIBrainTool β Groq-powered Q&A and research synthesis
- CommunicatorTool β Discord calling
- SystemTool β Screenshot, shutdown, restart, lock, volume control
- ClickSimulatorTool β UI element tagging + click simulation
- UnifiedCommunicationTool β WhatsApp messaging and calling with contact search + confirmation flow
- PageContextTool β Screen content extraction and summarization
Autonomous Task Pipeline
- Pattern-based planning for common tasks (search+summarize, standalone summarize)
- LLM-based planning for novel tasks
- Multi-step execution with dependency tracking
- Streaming sentence-by-sentence TTS for real-time feedback
- Contact alias resolution (64 aliases for family relationships)
- WhatsApp confirmation flow: search β highlight β ask user β execute
Desktop Automation
- Screen Awareness (
screen_awareness.py): UIA-based window content extraction - App Locator (
utils/app_locator.py): Multi-strategy app discovery (PATH, Registry, Start Menu, disk index) - Web Navigation (
src/web_navigation.py): Autonomous multi-site research with DuckDuckGo - Click Simulation (
executor/tools/click_simulator.py): UI element tagging with coordinate-based clicking
State Management
- Capability Registry (
core/capability_registry.py): Dynamic tool registration (no hardcoded if/elif chains) - Intent Registry (
core/intent_registry.py): Dynamic pattern registration with priority system - World Model (
agent/world_model.py): Thread-safe shared runtime state - Context Tracker (
context/tracker.py): Rolling context with implicit reference resolution - Memory Store (
memory/store.py): Persistent fact/preference storage - Event Bus (
jarvis_patch/core_patch.py): Decoupled publish/subscribe system
Electron Main Process β Transparent frameless always-on-top window
β
React App β WebSocket connection to Python backend
β
Framer Motion β Physics-based animations at 60fps
The Orb UI (src/components/Orb.tsx)
- Idle State: Slow floating animation with soft blue glow
- Listening State: Squeeze/pulse animation when wake word detected
- Thinking State: Rotating animation with purple glow
- Speaking State: Lub-dub heartbeat pattern synchronized with TTS output
- Draggable: Physics-based drag with momentum and position persistence
- Transcript Bubble: Glassmorphism overlay showing Jarvis's spoken response
Dashboard Panel
- Main Menu: Voice Settings, Recent Commands, Memory & Preferences, Settings
- Recent Commands: Last 10 commands with timestamps and intent tags
- Memory View: Facts, aliases, and preferences from the backend
- Settings Panel: API key status, startup toggle, about section
- Voice Settings: Microphone selection, wake word sensitivity, language
- Glassmorphism Design: Blur backgrounds, translucent borders, dark theme
Window Management (electron/main.js)
- Full-screen transparent overlay
- Click-through for non-interactive areas
- IPC-based mouse event passthrough toggling
- System tray integration with show/hide/quit
- Position persistence via localStorage
Voice Commands
- "Open Chrome/Notepad/Spotify"
- "Search for weather in Delhi"
- "Play Believer on Spotify"
- "Take a screenshot"
- "Lock the screen"
- "Shut down the PC"
- "What time is it?"
- "Close VS Code" (with known process name mapping)
Autonomous Multi-Step Tasks
- "Search for AI news and summarize it" β 3-step plan (search β fetch β synthesize)
- "Summarize this page" β Screen content extraction + LLM summary
- Streaming sentence-by-sentence TTS for real-time feedback
WhatsApp Automation
- "Call/Message [contact] on WhatsApp"
- Contact alias resolution (mummyβMom, daddyβDad, bhaiβBrother, etc.)
- Search β highlight β confirmation β execute flow
- User can navigate results ("No, the one below", "Two down")
- Known process name mapping for reliable app closing
System Control
- Brightness, volume, resolution changes (WMI/PowerShell APIs)
- Process management (psutil + taskkill with known process map)
- Screenshot with OneDrive-aware desktop path resolution
UI/UX
- Floating draggable orb with state-based animations
- Heartbeat animation synchronized with TTS speaking
- Glassmorphism dashboard with sliding sub-views
- Click-outside-to-close and Escape key handling
- System tray with show/hide/quit
- Position persistence across restarts
E:\Jarvis\
βββ main.py # Entry point, voice process, JarvisSystem
βββ ui_bridge.py # WebSocket server for frontend state
βββ voice/
β βββ service.py # Voice pipeline, wake word, recording, STT
β βββ intent_engine.py # Intent classification + dynamic registry
βββ planner/
β βββ engine.py # Plan generation, memory-aware preferences
βββ executor/
β βββ runner.py # Tool implementations, execution engine
β βββ runner_patch.py # Execution patches (interrupt, retry)
β βββ validator.py # URL validation, fallback URLs
β βββ tools/
β βββ click_simulator.py # UI element clicking
β βββ communication_tool.py # WhatsApp automation
βββ core/
β βββ capability_registry.py # Dynamic tool registry
β βββ intent_registry.py # Dynamic intent pattern registry
β βββ task_graph.py # Dependency-aware execution graph
β βββ goal_manager.py # Persistent goal tracking
β βββ contract.py # Verification contracts
β βββ autonomous_loop.py # ObserveβReasonβActβVerify loop
βββ agent/
β βββ core.py # JarvisAgentCore orchestrator
β βββ decision.py # Decision engine (EXECUTE/CLARIFY/ANSWER/IGNORE)
β βββ world_model.py # Shared runtime state
β βββ intent_registry.py # Intent metadata (slots, context-free)
βββ jarvis_patch/
β βββ core_patch.py # Main process patched, SystemActionTool, EventBus
β βββ stt_patch.py # Enhanced STT pipeline
β βββ semantic_corrector.py # LLM-based post-STT correction
β βββ tool_builder.py # LLM-based dynamic tool generation
β βββ safety_validator.py # AST-based code safety validation
βββ ui/ # Electron + React frontend
β βββ electron/
β β βββ main.js # Electron main process
β β βββ preload.js # IPC bridge
β β βββ tray.js # System tray
β βββ src/
β β βββ App.tsx # Root component, WebSocket connection
β β βββ components/
β β β βββ Orb.tsx # Floating orb + dashboard
β β βββ styles/
β β βββ globals.css # Tailwind + transparent background
β βββ package.json
β βββ vite.config.ts
β βββ index.html
βββ data/
β βββ aliases.json # 64 family contact aliases
βββ fast_router.py # 3-tier local intent classifier
βββ screen_awareness.py # UIA-based screen content extraction
βββ session_memory.py # Session-level page context
βββ agent_state.py # CentralAgentState, CommandRouter, TTSQueue
What's Solid
- Dynamic tool/intent registration (no hardcoded chains)
- Verification contracts for critical actions
- Retry with fallback chains
- Process name mapping for reliable app closing
- Multi-turn conversation with follow-up microphone
- Full-duplex barge-in
- Streaming TTS for real-time feedback
- WhatsApp confirmation flow prevents wrong contacts
- Position persistence across restarts
- System tray integration
Known Limitations (Jarvis subsystem)
pyautoguifallback disabled (hard-stop on UI automation failure)- WebSearchTool capture patch fails (non-fatal)
- No streaming STT (uses segment-based approach)
- TTS phonemizer warnings on certain texts
- 0 contacts synced from Outlook (data sync functional but empty)
# Terminal 1: Python Backend
cd E:\Jarvis
venv\Scripts\activate
python main.py
# Terminal 2: Vite Dev Server
cd E:\Jarvis\ui
npx vite
# Terminal 3: Electron
cd E:\Jarvis\ui
npx electron .Wake word: "Jarvis"
- Python 3.10+ (recommended)
- Node.js & npm (for the UI)
- Webcam
- Microphone
git clone https://github.com/technospes/Project_AURA_Project.git
cd Project_AURA-projectWindows
python -m venv venv
venv\Scripts\activateLinux / macOS
python3 -m venv venv
source venv/bin/activate# Install Python backend dependencies
pip install -r requirements.txt
# Install Frontend UI dependencies
cd ui
npm install
cd ..On Linux you may also need: python3-tk and python3-dev.
Create a .env file in the root directory and add your Groq API key:
GROQ_API_KEY=your_api_key_here
- Ensure your webcam and microphone are connected.
- Activate your virtual environment (see above).
- Build the UI and start the main entry point:
python main.pyThe "Jarvis Vision" window will appear, and the borderless Floating Orb UI will launch on your desktop. Hold your hand up to the camera to engage.
| Gesture | Action | Visual Cue |
|---|---|---|
| Index finger point | Move cursor | Green cursor HUD |
| Index + thumb pinch | Left click | Red HUD bar |
| Index + middle up | Scroll mode | Text: SCROLL |
| Pinky + thumb pinch | Right click | Yellow flash |
| Ring + thumb pinch | Double click | Magenta flash |
| Index + thumb pinch | Hold object | Red HUD bar |
By default, the voice engine listens continuously and triggers high-performance procedural animations on the Orb when the wake-word "Jarvis" is detected.
Examples:
- Open [App Name] β Launches applications (e.g., "Open Notepad").
- Close [App Name] β Terminates applications.
- Type [Text] β Dictates text into the active field.
- Search for [Topic] β Autonomously searches the web and synthesizes research.
- Summarize this page β Context-aware reading of the active screen/browser tab.
- Stop β Safely terminates the current command sequence via barge-in.
Project_AURA_project/
βββ models/ # Offline speech models (Vosk)
βββ ui/ # Electron + React Frontend
β βββ src/components/ # Framer Motion Orb & Dashboards
β βββ main.js # Electron transparent window shell
β βββ package.json
βββ src/
β βββ config.py # Central configuration (sensitivity, thresholds)
β βββ context.py # Context awareness logic
β βββ control.py # Mouse physics and gesture state machine
β βββ smoothing.py # Jitter reduction filters
β βββ tracking.py # MediaPipe & camera threading
β βββ audio_config_optimized.py # Optimized microphone/audio capture configuration
β βββ brain.py # Core AI reasoning / decision module
β βββ click_drag_system.py # Click-and-drag gesture handling
β βββ diagnose_voice.py # Voice pipeline diagnostics utility
β βββ gesture_math.py # Vector/geometry math for gesture recognition
β βββ intent_parser.py # Parses voice/text input into structured intents
β βββ memory_system.py # Fact/preference memory storage
β βββ native_opener.py # Native OS app/file opening utility
β βββ precision_cursor.py # High-precision cursor positioning logic
β βββ shared.py # Shared constants/helpers across src modules
β βββ task_planner.py # Task decomposition & planning
β βββ vision_service.py # Computer vision service wrapper
β βββ voice_io.py # Voice input/output handling
β βββ voice_service.py # Voice pipeline service
β βββ web_navigation.py # Autonomous multi-site web research
βββ utils/
β βββ app_locator.py # Multi-strategy app discovery (PATH, Registry, Start Menu, disk index)
βββ agent/
β βββ advisor.py # Suggests next actions / recommendations
β βββ background.py # Background task/process management
β βββ core.py # JarvisAgentCore orchestrator
β βββ conversation.py # Multi-turn conversation handling
β βββ tool_selector.py # Selects the appropriate tool for a given intent
β βββ page_context.py # Screen/page content extraction
β βββ decision.py # Decision engine (EXECUTE/CLARIFY/ANSWER/IGNORE)
β βββ goal_manager.py # Persistent goal tracking
β βββ intent_registry.py # Intent metadata (slots, context-free)
βββ executor/
β βββ runner.py # Task execution and async LLM streaming
β βββ validator.py # URL/action validation, fallback logic
β βββ researcher.py # Web research execution
β βββ parallel.py # Parallel task execution
β βββ click_simulator.py # UI element tagging + click simulation
β βββ communication_tool.py # WhatsApp automation
β βββ tools/ # Dynamic capabilities (App Launcher, Browser, etc.)
βββ planner/
β βββ engine.py # Plan generation, memory-aware preferences
βββ security/
β βββ validator.py # AST-based code/action safety validation
βββ voice/
β βββ wake_confidence.py # Wake-word confidence scoring
β βββ service.py # Voice pipeline, wake word, recording, STT
β βββ cleaner.py # Audio/text cleanup post-processing
β βββ intent_engine.py # Intent classification + dynamic registry
βββ main.py # Main application entry point & process manager
βββ task_orchestrator.py # High-level task orchestration
βββ task_planner.py # Root-level task planning (top-level entry)
βββ tts_engine.py # Kokoro Local TTS engine
βββ screen_awareness.py # UIA-based window content extraction
βββ reliability_layer.py # Retry / fallback / error-recovery layer
βββ agent_state.py # CentralAgentState, CommandRouter, TTSQueue
βββ fast_router.py # 3-tier local intent classifier
βββ ui_bridge.py # Full-duplex WebSocket server
βββ requirements.txt # Dependencies
βββ README.md # Documentation
All runtime parameters can be tuned to match your hardware and environment:
- Vision:
CAM_WIDTH/CAM_HEIGHTβ Camera resolution (default: 640Γ480 for speed). - Physics:
SMOOTHING_BETAβ Trade-off between jitter reduction and latency. - Audio: Adjust
min_speech_energyinmain.pyto calibrate microphone sensitivity for background noise.
- Threaded I/O β Camera capture runs in a dedicated daemon thread, preventing frame drops during heavy CV inference.
- Async LLM Streaming β Generative AI responses are chunked by sentence boundaries via RegEx and piped instantly into the TTS audio buffer, dropping response latency to ~300ms.
- Variable Friction Physics β Cursor velocity is scaled by a dynamic friction model. As your fingers approach a pinch, speed is dampened (e.g., ~0.3Γ), making it easier to click small UI elements without drifting.
- Lighting β Requires decent ambient lighting for stable hand tracking.
- Occlusion β Tracking may fail if the hand crosses the face or moves out of frame.
- Audio Noise β Voice commands can degrade in very noisy environments; adjusting Windows Mic Gain and
min_speech_energyis recommended.
- Integration of fast LLMs (Groq) for context-aware, semantic commands.
- Beautiful Desktop Overlay UI.
- Custom offline wake word engine (Porcupine / OpenWakeWord).
- 3D gesture support with depth-aware interaction.
- Cross-platform packaging and performance tuning for macOS / Linux.
Contributions and experiments are welcome.
- Fork the repository.
- Create a feature branch:
git checkout -b feature/AmazingFeature
- Commit your changes:
git commit -m "Add AmazingFeature" - Push to the branch:
git push origin feature/AmazingFeature
- Open a Pull Request.
Distributed under the MIT License. See LICENSE for details.
Technospes
- GitHub: https://github.com/technospes
- LinkedIn (Ayush Shukla): https://www.linkedin.com/in/ayushshukla-ar/