JARVIS (Just A Rather Very Intelligent System) is a voice-first AI assistant for macOS. It runs locally on your machine, connecting to your Apple Calendar, Mail, Notes, and can spawn Claude Code sessions for development tasks.
When a user clones this repo and starts Claude Code, help them:
- Copy .env.example to .env
- Get an Anthropic API key from console.anthropic.com
- Get a Fish Audio API key from fish.audio
- Install Python dependencies: pip install -r requirements.txt
- Install frontend dependencies: cd frontend && npm install
- Generate SSL certs: openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes -subj '/CN=localhost'
- Run the backend: python server.py
- Run the frontend: cd frontend && npm run dev
- Open Chrome to http://localhost:5173
- Click to enable audio, speak to JARVIS
- Backend: FastAPI + Python (server.py, ~2300 lines)
- Frontend: Vite + TypeScript + Three.js (audio-reactive orb)
- Communication: WebSocket (JSON messages + binary audio)
- AI: Claude Haiku for fast responses, Claude Opus for research
- TTS: Fish Audio with JARVIS voice model
- System: AppleScript for Calendar, Mail, Notes, Terminal integration
server.py— Main server, WebSocket handler, LLM integration, action systemfrontend/src/orb.ts— Three.js particle orb visualizationfrontend/src/voice.ts— Web Speech API + audio playbackfrontend/src/main.ts— Frontend state machinememory.py— SQLite memory system with FTS5 searchcalendar_access.py— Apple Calendar integration via AppleScriptmail_access.py— Apple Mail integration (READ-ONLY)notes_access.py— Apple Notes integrationactions.py— System actions (Terminal, Chrome, Claude Code)browser.py— Playwright web automationwork_mode.py— Persistent Claude Code sessions
ANTHROPIC_API_KEY(required) — Claude API accessFISH_API_KEY(required) — Fish Audio TTSFISH_VOICE_ID(optional) — Voice model IDUSER_NAME(optional) — Your name for JARVIS to useCALENDAR_ACCOUNTS(optional) — Comma-separated calendar emails
- JARVIS personality: British butler, dry wit, economy of language
- Max 1-2 sentences per voice response
- Action tags: [ACTION:BUILD], [ACTION:BROWSE], [ACTION:RESEARCH], etc.
- AppleScript for all macOS integrations (no OAuth needed)
- Read-only for Mail (safety by design)
- SQLite for all local data storage