|
Just A Rather Very Intelligent System
The ultimate open-source AI assistant. Multi-provider, MCP-powered, voice-enabled.
Note
Active Interfaces: Both the Web UI (--ui web) (React 18 SPA + ThreeUI WebGL shaders + WebSockets) and the Terminal UI (--ui tui) (Textual) are active and fully supported! The Desktop GUI (--ui gui) is currently in development.
Most AI assistants lock you into a single provider, restrict your choice of interfaces, or hide key infrastructure behind vendor paywalls. JARVIS gives you absolute control over your AI environment. Query 200+ LLM providers via models.dev integration, interact via rich terminal TUI or modern React Web UI, extend functionality with Model Context Protocol (MCP) servers, and control everything hands-free with real-time streaming voice.
- 200+ LLM Provider Catalog (
models.dev) β Direct integration with 200+ LLM providers (OpenAI, Anthropic, Google Gemini, Groq, NVIDIA NIM, OpenRouter, Mistral, OpenCode, TokenRouter, Kilo, Cerebras, etc.) with automatic fallback streaming routing. - Modern React Web UI & Real-Time Voice Overlay β High-performance React SPA with WebSocket streaming, interactive Markdown, live tool execution pills, collapsible reasoning blocks,
ask_usertool cards, 14+ themes, 9+ procedural ThreeUI WebGL shader backgrounds, and a full-screen voice mode with browser-native real-time STT and audio visualizers. - Full PC Control & Autonomous Desktop Automation β End-to-end multi-step OS control, Windows UI Automation (UIA) tree inspection, dynamic application discovery, smooth mouse/keyboard simulation, and global emergency abort safety (
Ctrl+Alt+Q). - Dynamic Reasoning Effort Control (
/effort) β Fullmodels.devcatalog reasoning awareness. Configure reasoning effort (low,medium,high,none), disable thinking on configurable models while keeping inherent reasoning models running normally, with live footer badges and collapsible thought blocks. - Git-Checkpoint Revert & Message Actions β Click any conversation message to copy prompt/response, re-run turns, or revert both conversation state and workspace file modifications back to that exact checkpoint.
- Rich Terminal UI (TUI) β Interactive Textual-powered terminal application with streaming markdown, syntax highlighting, keyboard shortcuts (
Ctrl+Mmodel picker,Ctrl+Ssessions,Ctrl+Pcommand palette,Alt+Vvoice mode), theme selector (/theme), and live context usage meters. - Multi-Platform Messaging Connectors β Bi-directional bot bridges for Telegram and Discord with user/channel allowlists, bot commands (
/session,/new,/clear,/status,/help), and standalone background service modes. - Specialized Skills Framework β Modular skill packs for autonomous bug hunting, code review, fullstack coding, data analysis, deep research, frontend design, MCP discovery (
find-mcp), and system architecture. - Dynamic MCP Marketplace & Server Creation β Discover and install community MCP servers on the fly from mcpmarket.com, npm, and GitHub, or have JARVIS generate and register custom MCP servers dynamically.
- Integrated Voice Suite β Natural speech-to-text (STT) input and real-time streaming text-to-speech (TTS) output with hands-free conversation mode.
| Component | Interface / Subsystem | Status | Technical Stack |
|---|---|---|---|
| Web UI | Web Dashboard & Voice Overlay | π’ Active | React 18, TypeScript, Vite, Tailwind CSS, ThreeUI WebGL, FastAPI, WebSockets |
| Terminal UI (TUI) | Rich TUI Application | π’ Active | Python 3.11.4, Textual, Rich Markdown |
| Desktop Automation | Autonomous PC Control & Actuation | π’ Active | Windows UIA, PyAutoGUI, PyWinAuto, ScreenInfo, Pynput |
| Messaging Connectors | Telegram & Discord Bridges | π’ Active | python-telegram-bot, discord.py, Asyncio |
| Desktop GUI | Desktop Window | π‘ In Development | CustomTkinter / PySide6, Asyncio integration |
| Core Engine | Orchestration & Events | π’ Active | Asyncio Event Bus, Pydantic v2 Config |
| Skills Subsystem | Specialized Prompt Modules | π’ Active | Structured prompts, auto-discovery runner |
| Memory System | Short & Long-term RAG | π’ Active | JSON session storage, ChromaDB Vector Store |
| MCP Manager | Protocol Integration | π’ Active | Stdio transport, MCP SDK 1.0+, NPX runners |
| Voice Suite | Speech Input / Output | π’ Active | Edge TTS, ElevenLabs, Web Speech API, SpeechRecognition |
- Interactive First-Time Setup Wizard β Interactive onboarding CLI (
python setup.pyorpython -m jarvis --setup) with live API key testing, model validation, and offline embedding initialization. - Modern Web UI Dashboard β Web application (
python main.py --ui web) accessible from any browser with real-time streaming chat, collapsible<think>blocks, live tool badges, audio-reactive Orb, 14+ themes, customizable ThreeUI shaders, opacity slider, session manager, and settings dialogs. - Hands-Free Real-Time Voice Chat β Dedicated full-screen voice mode with browser-native real-time STT streaming, pause-detection auto-send, and early sentence TTS playback.
- OAuth 2.0 Loopback & Personal Service Auth β Native browser OAuth 2.0 flow for Google (Gmail & Google Calendar) and Telethon MTProto authentication for personal Telegram accounts via
python main.py --connect <service>. - Autonomous PC Control & Desktop Automation β Multi-step desktop control via native tools (
app_control,window_control,browser_control,input_simulation), launch & control apps, browse websites, manage window layouts, and simulate mouse/keyboard with emergency abort failsafes (Ctrl+Alt+Q). - Terminal TUI Experience β Rich, interactive terminal interface (
python main.py) with real-time streaming, command history, model search modal (Ctrl+M), provider connector (/connect), sessions manager (Ctrl+S), reasoning effort selector (/effort), MCP manager modal (Ctrl+Por/mcp), theme customizer (/theme), and voice controls (Alt+V). - Dynamic Messaging Connectors (Telegram & Discord) β Auto-discovered messaging bridges from
jarvis/connectorsand~/.jarvis/connectors/with channel/user allowlists, message chunking, typing indicators, and session persistence. - 200+ LLM Provider Backends β Powered by the
models.devcatalog with automatic provider protocol detection (OpenAI, Anthropic, Google Gemini) and automatic fault-tolerant fallback routing. - Offline & Multi-Backend Vector Memory β ChromaDB vector memory with bundled ONNX
all-MiniLM-L6-v2offline embeddings (zero API key needed) and automatic remote-to-local fallback. - Dynamic MCP Creator & Registry β In-chat MCP tool generation and runtime server registration (
~/.jarvis/mcp/servers.json) for npm, uvx, and python MCP servers. - Specialized Skills Engine β Built-in autonomous skills for
coding,bug-hunting,code-review,data-analysis,deep-research,find-mcp,frontend-design, andsystem-architecture. - Enhanced Voice Suite β Streaming Edge TTS / ElevenLabs with automatic
<think>tag stripping, multi-paragraph chunking, and configurable character limits (max_speak_characters). - Fully Configurable & User-Isolated β Runtime configurations saved in
~/.jarvis/config/jarvis.yaml, tokens in~/.jarvis/auth/tokens.json, and API keys in~/.jarvis/.env.
# Clone the repository
git clone https://github.com/krishcodes07/JARVIS.git
cd JARVIS
# Create & activate virtual environment
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # Linux/Mac
# Install JARVIS core package
pip install -e .Run the interactive setup wizard to validate your API keys, test models, and configure embeddings:
# Run interactive setup wizard
python setup.py
# or
python -m jarvis --setupThe wizard will:
- Validate your primary LLM provider key against live endpoints.
- Verify model compatibility and reasoning support.
- Test or download the offline local embedding model.
- Save your configuration to
~/.jarvis/config/jarvis.yamland~/.jarvis/.env.
Select extra dependency packages depending on your needs:
# Install PC Control & Desktop Automation dependencies
pip install -e ".[automation]"
# Install Voice dependencies (Edge TTS, ElevenLabs, SpeechRecognition, faster-whisper)
pip install -e ".[voice]"
# Install Developer & Testing tools (pytest, ruff, mypy)
pip install -e ".[dev]"
# Install ALL features at once
pip install -e ".[automation,voice,dev]"Launch the modern React Web UI and FastAPI backend server:
# Launch Web UI (defaults to http://127.0.0.1:5000/)
python main.py --ui web
# or
python -m jarvis --ui webOpen http://127.0.0.1:5000/ to access:
- Streaming Chat with markdown rendering, syntax highlighting, and collapsible
<think>blocks. - Hands-Free Voice Chat with browser-native real-time STT streaming, pause detection auto-send, and sentence-level TTS playback.
- Visual Themes & Backgrounds: 14+ themes, customizable ThreeUI WebGL shaders (Ribbon Field, Amber Halftone, Void Field, etc.), and background opacity slider.
- Full Settings Suite: Model selection (200+ providers from
models.dev), Appearance, Voice, MCP servers, Telegram/Discord connectors, Memory inspector, Skills, and Tools.
Launch the interactive Textual terminal interface:
# Launch interactive TUI
python main.py
# or
python -m jarvis --ui tui
# Launch with Debug Logging
python main.py --debugRun JARVIS as a background messaging bridge service:
# Run Telegram bot bridge
python -m jarvis --connector telegram
# Run Discord bot bridge
python -m jarvis --connector discord
# Run all enabled messaging bridges simultaneously
python -m jarvis --connector allJARVIS features an enterprise-grade, multi-provider LLM routing architecture powered by the dynamic models.dev catalog. With support for 200+ cloud and local LLM providers and thousands of models, JARVIS offers universal model compatibility, native tool calling, streaming reasoning extraction, and automated fault-tolerant fallback.
Instead of hardcoding a limited list of providers, JARVIS dynamically queries the models.dev catalogβgiving you immediate access to 200+ providers and thousands of models. Every provider in the catalog automatically maps to one of JARVIS's three unified protocol engines:
| Protocol Engine | Ecosystem & Coverage (200+ Providers) | Tool Calling | Streaming | Reasoning Extraction (<think>) |
Embeddings |
|---|---|---|---|---|---|
OpenAI-Compatible (openai) |
170+ Providers (OpenAI, Groq, DeepSeek, NVIDIA NIM, OpenRouter, Mistral, Together AI, xAI, Cerebras, OpenCode Zen, TokenRouter, Ollama, vLLM, LM Studio, etc.) | β Native | β SSE | β
(reasoning_content / reasoning) |
β
/embeddings |
Anthropic (anthropic) |
Anthropic Claude APIs (Claude 3.5 / 3.7 Sonnet, Claude Opus 4, Claude Haiku, etc.) | β Native | β SSE | β
(thinking blocks) |
β |
Google Gemini (google) |
Google Generative AI & Vertex AI (Gemini 2.5 Pro / Flash, Gemini 2.0 Flash Thinking, etc.) | β Native | β SSE | β
(thought: true parts) |
β
/models:embedContent |
Tip
Zero-Code Provider Addition: Because JARVIS fetches provider definitions and models dynamically from models.dev, you can use any of the 200+ providers simply by setting its respective API key in your .env file or via the in-app connector (Ctrl+A). Custom and local endpoints (like Ollama or vLLM) can also be added via config/providers.json with zero Python code changes!
JARVIS implements three specialized protocol drivers that normalize requests, responses, streaming chunks, tool calling, and embeddings across all providers:
- Universal Compatibility: Serves as the universal bridge for OpenAI, Groq, NVIDIA NIM, OpenRouter, DeepSeek, Together AI, Mistral, xAI, Cerebras, OpenCode, TokenRouter, Ollama, LM Studio, and vLLM.
- Reasoning Token Parsing: Captures and converts provider reasoning fields (
reasoning_contentorreasoning) into standardized<think>...</think>XML blocks during both streaming and non-streaming responses. - Native Function Calling: Translates Pydantic tool definitions into OpenAI function call schemas and normalizes
tool_callspayloads. - Embeddings Support: Direct integration with
/embeddingsendpoints (with automaticinput_type="passage"injection for NVIDIA NIM models).
- Messages API: Implements native Anthropic Messages API (
/v1/messages) specification. - System Prompt Isolation: Automatically separates system instructions into top-level
systemparameters as required by Anthropic. - Extended Thinking Blocks: Accumulates
thinking_deltaandcontent_blockstream chunks into formatted reasoning blocks. - Streaming Tool Accumulation: Parses incremental
input_json_deltachunks and reconstitutes valid tool invocation arguments.
- Generative AI REST API: Direct integration with
/models/{model}:generateContentand/models/{model}:streamGenerateContent. - Strict Schema Proto Sanitizer (
_clean_schema): Automatically transforms arbitrary JSON Schemas and OpenAPI definitions into Google's strict Schema proto by removing unsupported fields (additionalProperties,$schema,title,default), normalizinganyOf/oneOfnullable types, and converting data types to uppercase (OBJECT,ARRAY,STRING, etc.) to prevent400 Bad RequestAPI errors. - Flash Thinking Support: Real-time extraction of Gemini 2.0 / 2.5 thinking tokens (
thought: true) into<think>blocks. - Thought Signature Preservation: Round-trips Gemini thought signatures (
thought_signature/thoughtSignature) to ensure continuous function-calling reasoning chains. - Multi-Tool Turn Merging: Merges multiple simultaneous tool execution outputs into a single turn with
functionResponseparts.
JARVIS fetches and caches metadata for 200+ providers and their full model rosters from https://models.dev/api.json. The catalog is stored locally in ~/.jarvis/workspace/cache/models_dev_cache.json (with repository fallback in data/models_dev_cache.json), enabling offline boot, context limit detection, and credential field validation without manual configuration.
At startup, JARVIS checks environment variables and .env files across both the repository root and ~/.jarvis/.env. If the configured default provider does not have an active API key, JARVIS automatically falls back to the first available connected provider, ensuring zero-downtime startup.
Switch providers and models on the fly with zero restarts:
- Terminal UI Modal (
Ctrl+M): Open the interactive Model Picker to search providers, inspect context window limits, and switch instantly. - API Key Connector Modal (
Ctrl+A): Input and connect API keys directly in the TUI with automatic persistence to~/.jarvis/.env. - In-Chat Slash Commands: Use
/modelsin the TUI, Telegram, or Discord:/models switch groq llama-3.3-70b-versatile /models switch google gemini-2.5-flash /models switch anthropic claude-sonnet-4-20250514
If your primary provider encounters rate limits, downtime, or network outages, the ProviderManager automatically executes a failover to the configured fallback provider and model (e.g. OpenRouter or Google Gemini) for both standard generation and real-time streaming, labeling the turn with (fallback) diagnostics.
Reasoning models (DeepSeek R1/V3/Reasoner, Claude 3.7 Sonnet, Gemini 2.5 Flash Thinking, OpenAI o-series, StepFun, etc.) are unified under an interactive collapsible <think>...</think> display stream. Toggle thinking on/off in jarvis.yaml (thinking: false disables reasoning options on configurable models while letting inherent only-thinking models run normally), or customize the active reasoning effort level dynamically using the /effort slash command or effort modal dialog.
Configure your default and fallback LLM providers in ~/.jarvis/config/jarvis.yaml (or config/jarvis.yaml):
provider:
active: "groq" # Active provider identifier
model: "llama-3.3-70b-versatile" # Model ID
temperature: 0.7
max_tokens: 4096
top_p: 1.0
thinking: true # Enable reasoning/thinking tokens
reasoning_effort: "high" # Reasoning effort level (none, low, medium, high, max)
fallback:
enabled: true
provider: "openrouter" # Backup provider on primary failure
model: "anthropic/claude-sonnet-4" # Backup model IDAny OpenAI-compatible service can be registered by adding an entry to config/providers.json (or ~/.jarvis/config/providers.json):
{
"name": "ollama",
"display_name": "Ollama (Local)",
"protocol": "openai",
"base_url": "http://localhost:11434/v1",
"api_key_env": "OLLAMA_API_KEY",
"default_model": "llama3.2:latest",
"supports": ["text", "streaming", "tools"]
}Then specify the provider in your config or .env:
OLLAMA_API_KEY=ollamaJARVIS includes out-of-the-box tools categorized by safety levels:
- Desktop Control Tools:
app_control,automate_task,browser_control,input_simulation,media_control,system_settings,window_control - Basic Tools:
calculator,clipboard,datetime_tool,get_schema,get_skill,list_skills,list_tools,mcp_creator,mcp_finder,read_url,screenshot,web_search - Filesystem Tools:
append_file,copy_file,delete_file,edit_file,get_file_info,grep_search,list_directory,make_directory,move_file,read_file,search_files,write_file - System Tools:
process_manager,run_command,system_info
JARVIS enforces safety constraints when executing system commands and desktop actions:
- Sandbox Restrictions: Workspace isolation and blocking of dangerous shell commands.
- Desktop Emergency Abort: Press
Ctrl+Alt+Qat any time to instantly freeze and abort autonomous desktop automation. - Protected Applications: Automatic refusal to actuate inside sensitive windows (e.g. password managers, security prompts).
tools:
categories:
desktop: true
filesystem: true
system: true
basic: true
sandbox:
enabled: true
workspace: "."
blocked_commands: ["rm -rf /", "format", "shutdown"]JARVIS follows the standard industry architecture (like Cursor, Claude Desktop, and Cline) for Model Context Protocol:
- Clean & Zero Overhead: Zero pre-installed background server processes. Your context window and memory start clean and fast.
- Dynamic Marketplace Discovery: Integrated with mcpmarket.com and NPM/GitHub registries. Ask JARVIS to find any tool integration (
find_mcp), and JARVIS will retrieve the command, check required API keys, and install it on the fly. - Interactive TUI Modal (
Ctrl+P//mcp): View all connected tools and resources with a clean interface. - 1-Click Connect (
Ctrl+A): PressCtrl+AorAanywhere in the MCP modal to open the Add MCP Server dialog to connect servers vianpx,uvx,python,SSE, orHTTP. - Specialized
find-mcpSkill: Guides JARVIS to autonomously search registries, inspect tool requirements, ask you for necessary credentials, and register servers.
JARVIS can be deployed as a personal AI bot across chat channels with full access to tools, memory, and models:
| Platform | Connector | Configuration | Supported Features |
|---|---|---|---|
TelegramConnector |
connectors.telegram.enabled: true |
Long-polling, typing action, user allowlist, slash commands | |
| πΎ Discord | DiscordConnector |
connectors.discord.enabled: true |
Channel / Guild / User allowlists, typing indicator, message splitting |
All connectors support built-in command handlers:
/session [id]β Switch or view current chat session./newβ Spawn a brand new independent conversation session./clearβ Wipe session history and start clean./statusβ View connector uptime, current LLM model, and system health./helpβ List available connector bot commands.
JARVIS includes pluggable, specialized skill engines located under src/jarvis/skills/:
- π
bug-huntingβ Autonomous reproduction, root-cause debugging, hypothesis testing, and regression analysis. - π
code-reviewβ Automated code quality, security vulnerability auditing, and adherence to design patterns. - π»
codingβ Full-stack implementation, architecture scaffolding, refactoring, and clean code generation. - π
data-analysisβ Exploratory data analysis, statistical breakdowns, and data visualization planning. - π¬
deep-researchβ Recursive multi-source investigation, source synthesis, and executive briefing reports. - π
find-mcpβ Autonomously discover, evaluate, and install community MCP servers from registries (mcpmarket.com, NPM, GitHub). - π¨
frontend-designβ Modern UI/UX architecture, responsive component design, and styling best practices. - ποΈ
system-architectureβ High-level distributed system design, API contracts, and scalability modeling.
JARVIS includes a full hands-free voice suite:
- Text-to-Speech (TTS): Free streaming via
edge_ttsor high-fidelity AI voices withelevenlabs. - Speech-to-Text (STT):
SpeechRecognitionengines (Google, Sphinx, Vosk) or local offline STT withfaster-whisper.
JARVIS TUI supports rich interactive slash commands:
/newβ Start a new conversation session with a unique session ID./clearβ Reset conversation, delete current session, and start a fresh session (with top-right notification toast)./copyβ Copy the last AI assistant response directly to system clipboard silently./effort [level]β Open reasoning effort dialog or set reasoning level (low,medium,high,none)./theme [name]β Browse and switch UI color themes./modelsβ Open model selection modal or switch active LLM model./connect <provider>β Connect model or API provider with auto-configured endpoints./sessionsβ Manage and switch active conversation sessions./mcpβ Open MCP server manager modal and inspect connections./configβ View and edit active runtime configuration./debugβ Inspect system status, provider metrics, and event diagnostics./helpβ Display commands overview and keybindings./exit//quitβ Exit the application.
| Shortcut | Description |
|---|---|
Ctrl+N |
Start a new conversation session |
Ctrl+P / / |
Open Slash Command Palette |
Ctrl+M |
Open Model Selection Modal |
Ctrl+S |
Open Sessions Modal |
Ctrl+A |
Connect Provider API Key (inside Model Modal) |
Alt+V |
Toggle Hands-Free Voice Mode (STT & TTS) |
Up / Down |
Navigate prompt input history |
Esc |
Cancel streaming generation or close active modal |
Ctrl+Alt+Q |
Emergency Abort desktop automation failsafe |
Deploy containerized JARVIS with Docker Compose:
# Build and run Docker container
docker compose up --build| Topic | Link |
|---|---|
| System Architecture | docs/architecture.md |
| Getting Started Guide | docs/getting_started.md |
| Web UI Guide | docs/guides/web_ui.md |
| Configuration Reference | docs/configuration.md |
| Adding a Provider | docs/guides/adding_providers.md |
| Creating Custom Tools | docs/guides/creating_tools.md |
| Creating MCP Servers | docs/guides/creating_mcp_servers.md |
| Contributing Guidelines | CONTRIBUTING.md |
Run the automated test suite, linter, and static type checker:
# Run pytest unit and integration tests
pytest
# Check code formatting & linting
ruff check .
# Run static type checking
mypy src/jarvis
# Build distribution package
python scripts/build.pyThis project is licensed under the MIT License β see the LICENSE file for details.
"At your service, sir." β J.A.R.V.I.S.
