The Ultimate macOS AI Assistant β Combining the best of ChatGPT, Siri, Claude, Cursor & Cluely
β Voice Conversation | β Screen Understanding | β Mac Control | β Memory System | β Planning | β Native macOS UI
Jarvis is a cutting-edge AI assistant that combines voice conversation, computer vision, screen understanding, and deep Mac automation capabilities. Built with Swift 6/SwiftUI for the frontend and FastAPI/LangGraph for the backend.
- π§ Dual Modes: Reasoning (detailed planning) or Fast (quick responses)
- π Step-by-Step Planning: Visual plan display with real-time status updates
- ποΈ Memory System: Knowledge graph + vector search for context retention
- ποΈ Voice Pipeline: Pipecat-inspired real-time voice with interruption handling
- π¨ Liquid Glass UI: Modern iOS/macOS 26 design language
What makes Jarvis unique:
- π₯οΈ Deep macOS Integration β 100+ AppleScripts + 43 AI Tools + Accessibility APIs
- ποΈ Screen Understanding β Capture & analyze any screen, window, or selection
- π― Always-on-Top Focus Mode β Like Cluely, but with full AI capabilities
- π Privacy-First β Local LLM support, no cloud dependency required
- Natural voice interaction with interruption handling
- Wake word detection β "Hey Jarvis" always listening
- Streaming TTS with premium voices
- Hands-free and push-to-talk modes
- Context-aware conversations with memory
- Full screen capture β Analyze entire display
- Window capture β Screenshot active window
- Selection capture β Capture specific regions
- Multi-display support β Handle multiple monitors
- Accessibility inspection β Read UI elements, buttons, text fields
- Document processing β PDF, images, text with OCR
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Mac Automation Categories β
ββββββββββββββββ¬βββββββββββββββ¬βββββββββββββββ¬ββββββββββββββββββββ€
β SYSTEM β APPS β BROWSER β PRODUCTIVITY β
β β’ Battery β β’ Open/Quit β β’ Safari β β’ Calendar β
β β’ Volume β β’ List Apps β β’ Chrome β β’ Reminders β
β β’ Dark Mode β β’ Frontmost β β’ URLs/Tabs β β’ Notes β
β β’ WiFi Info β β’ Hide/Show β β’ Navigation β β’ Mail β
β β’ Brightness β β’ Switch β β β’ Messages β
ββββββββββββββββΌβββββββββββββββΌβββββββββββββββΌββββββββββββββββββββ€
β FINDER β MEDIA β UTILITIES β ACCESSIBILITY β
β β’ Navigate β β’ Play/Pause β β’ Clipboard β β’ UI Elements β
β β’ Create β β’ Next/Prev β β’ Terminal β β’ Window Info β
β β’ Open Files β β’ Track Info β β’ Spotlight β β’ Click Buttons β
β β’ Selection β β’ Playlists β β’ Spaces β β’ Type Text β
β β β β β’ Menu Bars β
ββββββββββββββββ΄βββββββββββββββ΄βββββββββββββββ΄ββββββββββββββββββββ€
β SCREEN CAPTURE & VISION β
β β’ Full Screen β’ Window β’ Selection β’ Multi-Display β’ OCR β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Mode | Description | Use Case |
|---|---|---|
| Focus Mode | Always-on-top floating panel | Quick access while working |
| Chat Mode | Full-window conversational UI | Deep conversations |
| Conversation Mode | Voice-first interface | Hands-free interaction |
- On-device processing with Ollama
- Blocked destructive operations β Cannot delete files
- No password/keychain access
- Local data storage option
- Transparent data usage
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Jarvis AI Architecture β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Swift 6 / SwiftUI Frontend β β
β β ββββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββββββββ β β
β β β Chat β Focus β Voice β Settings β β β
β β β Mode β Panel β Conv. β Panel β β β
β β ββββββββββββ΄βββββββββββ΄βββββββββββ΄βββββββββββββββββ β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β Services: Audio | Speech | Streaming | API β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββ β
β β HTTP/SSE/WebSocket β
β βββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββ β
β β FastAPI Backend β β
β β ββββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββββββββ β β
β β β Chat API βVoice API βFiles API β WebSocket β β β
β β ββββββββββββ΄βββββββββββ΄βββββββββββ΄βββββββββββββββββ β β
β βββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββ β
β β β
β βββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββ β
β β LangGraph Agent Orchestrator β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β Tool Router / Planner β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β ββββββββββ¬βββββββββ¬βββββββββ¬βββββββββ¬βββββββββββββ β β
β β β OpenAI β Ollama βChromaDBβ Web β Mac β β β
β β β API β Local β RAG β Search β Automation β β β
β β ββββββββββ΄βββββββββ΄βββββββββ΄βββββββββ΄βββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Mac Automation Layer (100+ Scripts) β β
β β ββββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββββββββ β β
β β β System β Apps β Screen β Accessibility β β β
β β β Control β Control β Capture β UI Control β β β
β β ββββββββββββ΄βββββββββββ΄βββββββββββ΄βββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- macOS 13.0+ (Ventura or later)
- Python 3.11+
- Xcode 15.0+
- OpenAI API Key (for GPT models)
- Ollama (optional, for local LLMs)
cd backend
# Create virtual environment
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Configure environment
cp .env.example .env
# Edit .env with your OPENAI_API_KEY
# Start server
python main.pyBackend runs on http://localhost:8000
cd frontend/JarvisAI
# Open in Xcode
open JarvisAI.xcodeproj
# Build and Run (βR)# Install Ollama
curl -fsSL https://ollama.ai/install.sh | sh
# Pull models
ollama pull llama3.2
ollama pull llava
# Start Ollama
ollama serveBy default, the app connects to http://localhost:8000. To change this (e.g., for deployment):
- Environment Variable: Set
JARVIS_API_URLin your scheme or environment. - Info.plist: Add a key
JarvisAPIURLwith your backend URL.
Jarvis/
βββ backend/ # FastAPI Python Backend
β βββ main.py # Application entry
β βββ api/
β β βββ routes/ # REST endpoints
β β βββ chat.py # Chat streaming
β β βββ files.py # File uploads
β β βββ conversation.py # Voice handling
β βββ agents/
β β βββ graph.py # LangGraph workflow
β β βββ tools.py # AI tool definitions
β β βββ state.py # Agent state
β βββ services/
β β βββ mac_automation/ # AppleScript engine
β β β βββ executor.py # Safe script execution
β β β βββ scripts.py # 100+ pre-built scripts
β β βββ file_processor/ # Document processing
β β βββ search_service.py # Web search
β βββ core/
β βββ config.py # Settings
β βββ openai_client.py # OpenAI integration
β βββ chroma_client.py # Vector DB
β
βββ frontend/ # Swift/SwiftUI Frontend
β βββ JarvisAI/
β βββ JarvisAIApp.swift # App entry + Focus Panel
β βββ Views/
β β βββ ChatView.swift
β β βββ FocusPanelView.swift
β β βββ UnifiedPanelView.swift
β β βββ ConversationModeView.swift
β βββ ViewModels/
β β βββ ChatViewModel.swift
β β βββ ConversationViewModel.swift
β βββ Services/
β βββ APIService.swift
β βββ StreamingService.swift
β βββ AudioPipeline.swift
β βββ SpeechRecognitionService.swift
β βββ SpeechSynthesisService.swift
β
βββ MAC_CONTROL.md # Mac automation documentation
βββ README.md # This file
"Hey Jarvis, what's my battery level?"
"Hey Jarvis, open Safari and go to github.com"
"Hey Jarvis, set volume to 50%"
"Hey Jarvis, what apps are running?"
"Hey Jarvis, toggle dark mode"
"Take a screenshot and tell me what you see"
"What's the title of my current window?"
"What buttons are visible on screen?"
"Read the text in the focused field"
"Create a folder called 'Projects' on my desktop"
"Play the next song"
"What's on my calendar today?"
"Send a notification saying 'Meeting in 5 minutes'"
"Open Terminal and run ls"
OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-4o
OLLAMA_BASE_URL=http://localhost:11434
CHROMA_DB_PATH=./chroma_db
MAX_FILE_SIZE=10485760The AI has access to these tool categories:
| Category | Tools | Description |
|---|---|---|
| Knowledge | 3 | search_knowledge_base, web_search, process_uploaded_file |
| Mac Basic | 4 | run_mac_script, execute_applescript, execute_shell_command, get_available_mac_scripts |
| App Control | 5 | launch_app, quit_app, hide_app, get_running_apps, get_frontmost_app |
| Browser | 9 | Navigate, focus, scroll, click, search, get page info |
| Web Page | 5 | Get elements, click, fill inputs, execute actions |
| Input | 3 | click_at_position, type_text, press_keyboard_shortcut |
| UI Access | 2 | get_ui_elements, click_ui_element |
| Screen | 4 | capture_screen_for_analysis, wait_seconds, get_screen_text_content, verify_app_is_frontmost |
| System | 6 | get_system_state, open_file_or_url, reveal_in_finder, get_current_media_info, send_system_notification, manage_window |
| Shortcuts | 2 | run_shortcut, list_shortcuts |
See MAC_CONTROL.md for complete documentation.
Jarvis blocks all destructive operations:
- β Delete/remove/trash files
- β Empty trash
- β Format/erase disks
- β Shutdown/restart system
- β Access keychain/passwords
- β Modify security settings
| Issue | Solution |
|---|---|
| Microphone not working | System Preferences β Privacy β Microphone |
| Screen capture fails | Grant screen recording permission |
| Ollama not connecting | Run ollama serve |
| Backend won't start | Check port 8000 is free |
MIT License - see LICENSE for details.
Jarvis β Your AI-powered Mac companion
Built with Swift, Python, LangGraph & β€οΈ