# onepunchman411/jarvis architecture

> Architecture diagram of the GitHub repository onepunchman411/jarvis, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/onepunchman411/jarvis
- Repository: https://github.com/onepunchman411/jarvis

## Overview

JARVIS is a Windows voice assistant that accepts spoken or typed requests, routes AI responses and tool calls, and can speak back or perform desktop and browser actions. The map highlights that request-to-action workflow plus voice, plugins, MCP, and the local API. Source excerpts establish several internal calls; other links are included only where documented in the README. The web UI’s bridge to the Python runtime is not established by the sampled files.

Main entry points: [`jarvis/app.py`](https://github.com/onepunchman411/jarvis/blob/main/jarvis/app.py) (Assistant runtime), [`jarvis/voice/voice_manager.py`](https://github.com/onepunchman411/jarvis/blob/main/jarvis/voice/voice_manager.py) (Voice manager), [`jarvis/brain/tools.py`](https://github.com/onepunchman411/jarvis/blob/main/jarvis/brain/tools.py) (Tool registry), [`jarvis/ui/advanced_chat_window.py`](https://github.com/onepunchman411/jarvis/blob/main/jarvis/ui/advanced_chat_window.py) (Desktop chat UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["User interaction"]
  node_desktop_ui["Desktop chat UI"]
  node_voice["Voice manager<br/>[voice_manager.py]"]
  node_speech_recognition["Speech recognition<br/>[stt.py]"]
  node_voice_activity["Voice activity detection<br/>[vad.py]"]
  node_speech_output["Speech output<br/>[tts.py]"]
end

subgraph group_reasoning["AI and tools"]
  node_runtime["Assistant runtime<br/>[app.py]"]
  node_prompting["Prompt engine<br/>[prompt_engine.py]"]
  node_provider_routing["Provider routing<br/>[router.py]"]
  node_ai_provider["AI providers<br/>[provider.py]"]
  node_tool_registry["Tool registry<br/>[tools.py]"]
  node_workflow["Workflow execution<br/>[workflow_engine.py]"]
  node_memory[("Conversation memory<br/>[memory.py]")]
end

subgraph group_control["Desktop control"]
  node_desktop_tools["Desktop tools<br/>[accessibility.py]"]
  node_browser_automation["Browser automation<br/>[browser.py]"]
end

subgraph group_extensions["Integrations"]
  node_plugins["Plugin system<br/>[manager.py]"]
  node_plugin_contract["Plugin contract<br/>[base.py]"]
  node_mcp_registry["MCP registry<br/>[registry.py]"]
  node_mcp_client["MCP client<br/>[client.py]"]
end

subgraph group_interfaces["Runtime interfaces"]
  node_web_ui["Web UI<br/>[App.jsx]"]
  node_web_state["Web UI state<br/>[store.jsx]"]
  node_web_bridge["Web UI bridge<br/>[bridge.js]"]
  node_local_api["Local HTTP API<br/>[local_server.py]"]
end

node_user(("User"))
node_external_services{{"External AI services"}}
node_mcp_servers{{"MCP servers"}}

node_user -->|"sends chat"| node_desktop_ui
node_user -->|"speaks to"| node_voice
node_desktop_ui -.->|"submits requests"| node_runtime
node_voice -->|"transcribes speech"| node_speech_recognition
node_voice -->|"gates speech"| node_voice_activity
node_runtime -.->|"coordinates voice"| node_voice
node_runtime -->|"builds prompts"| node_prompting
node_runtime -->|"refreshes routing"| node_provider_routing
node_runtime -->|"dispatches tools"| node_tool_registry
node_runtime -->|"uses memory"| node_memory
node_provider_routing -.->|"selects provider"| node_ai_provider
node_ai_provider -.->|"requests inference"| node_external_services
node_runtime -.->|"speaks responses"| node_speech_output
node_tool_registry -->|"uses accessibility"| node_desktop_tools
node_tool_registry -->|"invokes browser tools"| node_browser_automation
node_runtime -.->|"runs workflows"| node_workflow
node_plugins -->|"implements contract"| node_plugin_contract
node_mcp_registry -->|"manages clients"| node_mcp_client
node_mcp_client -->|"calls tools"| node_mcp_servers
node_web_ui -->|"reads state"| node_web_state
node_web_state -->|"initializes bridge"| node_web_bridge
node_user -->|"sends HTTP requests"| node_local_api
node_local_api -->|"routes requests"| node_runtime

click node_desktop_ui "https://github.com/onepunchman411/jarvis/blob/main/jarvis/ui/advanced_chat_window.py"
click node_voice "https://github.com/onepunchman411/jarvis/blob/main/jarvis/voice/voice_manager.py"
click node_speech_recognition "https://github.com/onepunchman411/jarvis/blob/main/jarvis/voice/stt.py"
click node_voice_activity "https://github.com/onepunchman411/jarvis/blob/main/jarvis/voice/vad.py"
click node_speech_output "https://github.com/onepunchman411/jarvis/blob/main/jarvis/voice/tts.py"
click node_runtime "https://github.com/onepunchman411/jarvis/blob/main/jarvis/app.py"
click node_prompting "https://github.com/onepunchman411/jarvis/blob/main/jarvis/brain/prompt_engine.py"
click node_provider_routing "https://github.com/onepunchman411/jarvis/blob/main/jarvis/brain/router.py"
click node_ai_provider "https://github.com/onepunchman411/jarvis/blob/main/jarvis/brain/provider.py"
click node_tool_registry "https://github.com/onepunchman411/jarvis/blob/main/jarvis/brain/tools.py"
click node_workflow "https://github.com/onepunchman411/jarvis/blob/main/jarvis/brain/workflow_engine.py"
click node_memory "https://github.com/onepunchman411/jarvis/blob/main/jarvis/brain/memory.py"
click node_desktop_tools "https://github.com/onepunchman411/jarvis/blob/main/jarvis/control/accessibility.py"
click node_browser_automation "https://github.com/onepunchman411/jarvis/blob/main/jarvis/control/browser.py"
click node_plugins "https://github.com/onepunchman411/jarvis/blob/main/jarvis/plugins/manager.py"
click node_plugin_contract "https://github.com/onepunchman411/jarvis/blob/main/jarvis/plugins/base.py"
click node_mcp_registry "https://github.com/onepunchman411/jarvis/blob/main/jarvis/mcp/registry.py"
click node_mcp_client "https://github.com/onepunchman411/jarvis/blob/main/jarvis/mcp/client.py"
click node_web_ui "https://github.com/onepunchman411/jarvis/blob/main/jarvis/webui/src/App.jsx"
click node_web_state "https://github.com/onepunchman411/jarvis/blob/main/jarvis/webui/src/store.jsx"
click node_web_bridge "https://github.com/onepunchman411/jarvis/blob/main/jarvis/webui/src/bridge.js"
click node_local_api "https://github.com/onepunchman411/jarvis/blob/main/jarvis/api/local_server.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_desktop_ui,node_voice,node_speech_recognition,node_voice_activity,node_speech_output,node_user toneBlue
class node_runtime,node_prompting,node_provider_routing,node_ai_provider,node_tool_registry,node_workflow,node_memory toneAmber
class node_desktop_tools,node_browser_automation,node_mcp_servers toneMint
class node_plugins,node_plugin_contract,node_mcp_registry,node_mcp_client toneRose
class node_web_ui,node_web_state,node_web_bridge,node_local_api,node_external_services toneIndigo
```

## Components

### User interaction

- [Desktop chat UI](https://github.com/onepunchman411/jarvis/blob/main/jarvis/ui/advanced_chat_window.py): `jarvis/ui/advanced_chat_window.py`
- [Voice manager](https://github.com/onepunchman411/jarvis/blob/main/jarvis/voice/voice_manager.py): `jarvis/voice/voice_manager.py`
- [Speech recognition](https://github.com/onepunchman411/jarvis/blob/main/jarvis/voice/stt.py): `jarvis/voice/stt.py`
- [Voice activity detection](https://github.com/onepunchman411/jarvis/blob/main/jarvis/voice/vad.py): `jarvis/voice/vad.py`
- [Speech output](https://github.com/onepunchman411/jarvis/blob/main/jarvis/voice/tts.py): `jarvis/voice/tts.py`

### AI and tools

- [Assistant runtime](https://github.com/onepunchman411/jarvis/blob/main/jarvis/app.py): `jarvis/app.py`
- [Prompt engine](https://github.com/onepunchman411/jarvis/blob/main/jarvis/brain/prompt_engine.py): `jarvis/brain/prompt_engine.py`
- [Provider routing](https://github.com/onepunchman411/jarvis/blob/main/jarvis/brain/router.py): `jarvis/brain/router.py`
- [AI providers](https://github.com/onepunchman411/jarvis/blob/main/jarvis/brain/provider.py): `jarvis/brain/provider.py`
- [Tool registry](https://github.com/onepunchman411/jarvis/blob/main/jarvis/brain/tools.py): `jarvis/brain/tools.py`
- [Workflow execution](https://github.com/onepunchman411/jarvis/blob/main/jarvis/brain/workflow_engine.py): `jarvis/brain/workflow_engine.py`
- [Conversation memory](https://github.com/onepunchman411/jarvis/blob/main/jarvis/brain/memory.py): `jarvis/brain/memory.py`

### Desktop control

- [Desktop tools](https://github.com/onepunchman411/jarvis/blob/main/jarvis/control/accessibility.py): `jarvis/control/accessibility.py`
- [Browser automation](https://github.com/onepunchman411/jarvis/blob/main/jarvis/control/browser.py): `jarvis/control/browser.py`

### Integrations

- [Plugin system](https://github.com/onepunchman411/jarvis/blob/main/jarvis/plugins/manager.py): `jarvis/plugins/manager.py`
- [Plugin contract](https://github.com/onepunchman411/jarvis/blob/main/jarvis/plugins/base.py): `jarvis/plugins/base.py`
- [MCP registry](https://github.com/onepunchman411/jarvis/blob/main/jarvis/mcp/registry.py): `jarvis/mcp/registry.py`
- [MCP client](https://github.com/onepunchman411/jarvis/blob/main/jarvis/mcp/client.py): `jarvis/mcp/client.py`

### Runtime interfaces

- [Web UI](https://github.com/onepunchman411/jarvis/blob/main/jarvis/webui/src/App.jsx): `jarvis/webui/src/App.jsx`
- [Web UI state](https://github.com/onepunchman411/jarvis/blob/main/jarvis/webui/src/store.jsx): `jarvis/webui/src/store.jsx`
- [Web UI bridge](https://github.com/onepunchman411/jarvis/blob/main/jarvis/webui/src/bridge.js): `jarvis/webui/src/bridge.js`
- [Local HTTP API](https://github.com/onepunchman411/jarvis/blob/main/jarvis/api/local_server.py): `jarvis/api/local_server.py`

### Other components

- **User**
- **External AI services**
- **MCP servers**

## Connections

- User → Desktop chat UI: sends chat
- User → Voice manager: speaks to
- Desktop chat UI → Assistant runtime: submits requests (evidence: `jarvis/app.py`)
- Voice manager → Speech recognition: transcribes speech (evidence: `jarvis/voice/voice_manager.py`)
- Voice manager → Voice activity detection: gates speech (evidence: `jarvis/voice/voice_manager.py`)
- Assistant runtime → Voice manager: coordinates voice (evidence: `jarvis/app.py`)
- Assistant runtime → Prompt engine: builds prompts (evidence: `jarvis/app.py`)
- Assistant runtime → Provider routing: refreshes routing (evidence: `jarvis/app.py`)
- Assistant runtime → Tool registry: dispatches tools (evidence: `jarvis/brain/tools.py`)
- Assistant runtime → Conversation memory: uses memory (evidence: `jarvis/app.py`)
- Provider routing → AI providers: selects provider
- AI providers → External AI services: requests inference
- Assistant runtime → Speech output: speaks responses
- Tool registry → Desktop tools: uses accessibility (evidence: `jarvis/brain/tools.py`)
- Tool registry → Browser automation: invokes browser tools (evidence: `jarvis/brain/tools.py`)
- Assistant runtime → Workflow execution: runs workflows
- Plugin system → Plugin contract: implements contract (evidence: `jarvis/plugins/manager.py`)
- MCP registry → MCP client: manages clients (evidence: `jarvis/mcp/registry.py`)
- MCP client → MCP servers: calls tools (evidence: `jarvis/mcp/client.py`)
- Web UI → Web UI state: reads state (evidence: `jarvis/webui/src/App.jsx`)
- Web UI state → Web UI bridge: initializes bridge (evidence: `jarvis/webui/src/store.jsx`)
- User → Local HTTP API: sends HTTP requests
- Local HTTP API → Assistant runtime: routes requests (evidence: `jarvis/api/local_server.py`)
