A sophisticated AI assistant mobile app inspired by Iron Man's JARVIS, featuring voice recognition, text-to-speech, and integration with local and cloud AI providers including Ollama, OpenAI, DeepSeek, Google AI, OpenRouter, and NVIDIA NIM.
- Speech Recognition: Tap to speak and interact naturally
- Text-to-Speech: Jarvis responds with a sophisticated British accent
- Auto-send: Voice input automatically processes your requests
- Voice Visualizer: Real-time audio feedback during conversations
- Multiple AI Providers: Choose between Local (Basic), Local (Advance), OpenAI GPT, DeepSeek, Google AI, OpenRouter, or NVIDIA NIM
- Ollama Integration: Connect to a local Ollama instance through
Local (Advance) - Automatic Ollama Detection: Detect local Ollama models from the settings panel
- Test Ollama Connection: Validate the local Ollama endpoint before saving settings
- Provider Model Detection: Detect available models for OpenAI, DeepSeek, Google AI, OpenRouter, and NVIDIA NIM when a valid API key is provided
- Custom API Endpoints: Configure provider-specific API URL endpoints directly in settings
- OpenAI GPT Support: OpenAI-compatible chat completion models
- DeepSeek Integration: DeepSeek chat models
- Google AI Integration: Gemini models supported by the configured endpoint
- OpenRouter Integration: Access to 100+ AI models through one API
- NVIDIA NIM Integration: Access NVIDIA-hosted chat models through an OpenAI-compatible API
- Fallback System: Automatically falls back to local responses if API fails
- Reduced Credential Persistence: API keys are stripped before settings are written back to local storage
- Progressive Web App (PWA): Install as a native app on any device
- Local Fallback Mode:
Local (Basic)works without a cloud provider - iOS Safe Area: Full iPhone/iPad compatibility including notch support
- Haptic Feedback: Tactile responses for better user experience
- Touch Optimized: Large buttons and gesture-friendly interface
- Jarvis-themed Design: Cyan blue accent colors with dark theme
- Smooth Animations: Fluid transitions and micro-interactions
- Responsive Layout: Adapts to all screen sizes
- Status Indicators: Real-time connection and activity status
- Advanced Settings Panel: Comprehensive AI and audio configuration
- Conversational AI: Natural language processing and responses
- Context Awareness: Intelligent replies based on conversation history
- Time & Date: Current time and date information
- Connection Awareness: Local responses can react to online/offline status
- Professional Personality: British assistant personality like the original JARVIS
- Node.js 18+
- npm, pnpm, or yarn
- Ollama (optional, for Local Advance mode)
- API keys for OpenAI, DeepSeek, Google AI, OpenRouter, or NVIDIA NIM (optional)
-
Clone the repository
git clone https://github.com/inertz/jarvis.git cd jarvis -
Install dependencies
npm install
-
Start development server
npm run dev
-
Open in browser
http://localhost:5173
- Install and run Ollama
- Pull at least one model, for example:
ollama pull llama3.2
- Open the app settings (gear icon)
- Select "Local (Advance)" as your AI provider
- Keep the endpoint as
http://localhost:11434 - Click "Test Ollama Connection"
- Choose one of the detected models and save
Notes:
- Only localhost Ollama endpoints are allowed by the app
- If Ollama is running, the settings panel will try to detect models automatically
Local (Basic)is still available as an offline fallback without Ollama
- Get your API key from OpenAI Platform
- Open the app settings (gear icon)
- Select "OpenAI GPT" as your AI provider
- Enter your API key
- Optionally change the
API URL Endpoint - Click "Detect Models" to load available models automatically
- Choose your preferred model and save
- Get your API key from DeepSeek Platform
- Open the app settings (gear icon)
- Select "DeepSeek" as your AI provider
- Enter your API key
- Optionally change the
API URL Endpoint - Click "Detect Models" to load available models automatically
- Choose your preferred model and save
- Get your API key from Google AI Studio
- Open the app settings (gear icon)
- Select "Google AI (Gemini)" as your AI provider
- Enter your API key
- Optionally change the
API URL Endpoint - Click "Detect Models" to load available Gemini models automatically
- Choose your preferred model and save
- Get your API key from OpenRouter
- Open the app settings (gear icon)
- Select "OpenRouter" as your AI provider
- Enter your API key
- Optionally change the
API URL Endpoint - Click "Detect Models" to load available models automatically
- Choose your preferred model and save
- Get your API key from NVIDIA Build / API Catalog
- Open the app settings (gear icon)
- Select "NVIDIA NIM" as your AI provider
- Enter your API key
- Optionally change the
API URL Endpoint - Click "Detect Models" to load available NVIDIA-compatible models automatically
- Choose your preferred model and save
Notes for cloud providers:
- Model detection depends on the provider allowing browser-side access to its model-list endpoint
- If a provider blocks the request with CORS or policy restrictions, the app will show the returned error in the settings panel
- API keys are entered directly in the browser UI, so this setup is best suited to local or personal use unless you add a backend proxy
- Open the app in Safari
- Tap the Share button (square with arrow)
- Select "Add to Home Screen"
- Tap "Add"
- Open the app in Chrome
- Tap the menu (3 dots)
- Select "Add to Home Screen"
- Tap "Add"
- React 18 - Modern React with hooks and TypeScript
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first styling
- Vite - Fast build tool and dev server
- PWA - Progressive Web App capabilities
- Web Speech API - Voice recognition and synthesis
- Lucide React - Beautiful icons
- OpenAI API - GPT models integration
- DeepSeek API - Advanced AI model integration
- Google AI API - Gemini models integration
- OpenRouter API - Access to 100+ AI models
- NVIDIA API - NVIDIA NIM and hosted model access
jarvis-ai-assistant/
โโโ public/
โ โโโ manifest.json # PWA manifest
โ โโโ pwa-*.png # App icons
โ โโโ apple-touch-icon.png # iOS icon
โโโ src/
โ โโโ components/
โ โ โโโ SettingsPanel.tsx # AI configuration panel
โ โโโ services/
โ โ โโโ aiService.ts # AI provider integration
โ โโโ hooks/
โ โ โโโ useLocalStorage.ts # Local storage hook
โ โโโ types.ts # TypeScript definitions
โ โโโ App.tsx # Main application component
โ โโโ main.tsx # Application entry point
โ โโโ index.css # Global styles
โโโ index.html # HTML template
โโโ vite.config.ts # Vite configuration
โโโ tailwind.config.js # Tailwind CSS config
โโโ package.json # Dependencies and scripts
- "Hello Jarvis" - Greeting and introduction
- "What time is it?" - Current time
- "What's the date?" - Current date
- "How are you?" - System status
- "Help" - Available commands
- "Thank you" - Polite acknowledgment
- Local (Basic): Basic built-in responses without a cloud provider
- Local (Advance): Uses a local Ollama model with automatic model detection
- OpenAI GPT: Advanced conversational AI with context awareness and model autodetection
- DeepSeek: Specialized AI with coding and reasoning capabilities and model autodetection
- Google AI: Powerful Gemini models with advanced reasoning and model autodetection
- OpenRouter: Access to Claude, GPT, Llama, Gemini, and 100+ other models with model autodetection
- NVIDIA NIM: Hosted NVIDIA-compatible chat models with model autodetection
Type any message in the input field and press Enter or tap the send button.
- Provider Selection: Choose between Local (Basic), Local (Advance), OpenAI, DeepSeek, Google AI, OpenRouter, or NVIDIA NIM
- Ollama Detection: Automatically discover local Ollama models
- Connection Testing: Test the Ollama endpoint directly from settings
- Cloud Model Detection: Detect supported models for OpenAI, DeepSeek, Google AI, OpenRouter, and NVIDIA NIM
- API URL Endpoints: Override the default provider endpoints when needed
- API Key Management: Show/hide input fields for cloud providers
- Model Selection: Choose specific models for each provider
- Fallback System: Automatic fallback to local responses
- Voice Output Toggle: Enable/disable text-to-speech
- British Accent: Automatic selection of British voice
- Speech Tuning: Speech rate, pitch, and volume are fixed in code
- Installable App Shell: Includes a manifest and PWA build configuration
- Custom App Icons: Professional Jarvis-themed icons
- Standalone Display: Full-screen app experience
- Auto-update: Automatic updates when available
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
# Run linting
npm run lintNo environment variables are required for basic functionality.
Important:
- Cloud API keys are entered directly in the browser UI
- The app strips API keys before saving settings back to local storage
- Because this is a frontend-only app, browser-entered cloud API keys are still exposed to the client runtime
- Some cloud provider model-detection requests may fail because of CORS or provider-side browser restrictions
- For stronger security, route provider calls through your own backend
- Chrome/Edge: Full support including all AI features
- Safari: Full support (iOS 14.3+) with PWA capabilities
- Firefox: Limited speech synthesis, full AI support
- Mobile browsers: Optimized experience with touch controls
Pricing changes frequently and depends on the selected provider and model.
Check the provider pricing pages directly before relying on a cost estimate:
- OpenAI: https://platform.openai.com/pricing
- DeepSeek: https://platform.deepseek.com/
- Google AI: https://ai.google.dev/pricing
- OpenRouter: https://openrouter.ai/models
- NVIDIA: https://build.nvidia.com/
- Build the project:
npm run build - Deploy the
distfolder to Netlify - Enable HTTPS for PWA features
- Connect your GitHub repository
- Vercel will auto-detect Vite configuration
- Deploy with zero configuration
- Install gh-pages:
npm install --save-dev gh-pages - Add deploy script to package.json
- Run:
npm run deploy
- Reduced API Key Persistence: Cloud API keys are stripped before settings are written to local storage
- No Server Storage: All data remains on your device
- Local Ollama Restriction:
Local (Advance)only allows localhost Ollama endpoints - HTTPS Required: PWA features require secure connection
- Privacy First: No data is sent to third parties except chosen AI providers
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow TypeScript best practices
- Use Tailwind CSS for styling
- Maintain mobile-first responsive design
- Test on multiple devices and browsers
- Keep accessibility in mind
- Test with different AI providers
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by Marvel's Iron Man JARVIS AI
- Icons by Lucide
- Built with modern web technologies
- OpenAI for GPT model access
- DeepSeek for advanced AI capabilities
- NVIDIA for hosted model access
- Special thanks to the React and Vite communities
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: webmaster@inertz.org
- OpenAI GPT integration
- DeepSeek AI integration
- Google AI (Gemini) integration
- NVIDIA NIM integration
- Advanced settings panel
- Local Ollama integration
- Ollama auto-detection and connection testing
- Reduced API key persistence
- OpenRouter integration (100+ models)
- Backend proxy for secure cloud API key handling
- Conversation history export
- Custom voice training
- Weather and news integration
- Calendar and reminder features
- Multi-language support
- Smart home integration
- Advanced conversation memory
- Claude AI integration
Made with โค๏ธ by inertz
โญ Star this repo โข ๐ Report Bug โข โจ Request Feature
