# amurgola/lumabrowser architecture

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

- Interactive diagram: https://gitdiagram.com/amurgola/lumabrowser
- Repository: https://github.com/amurgola/lumabrowser

## Overview

LumaBrowser is a local-first AI desktop browser combining web browsing, model-powered chat and agents, media generation, and automation. A principal workflow is a user asking a chat agent to research the web: the desktop chat entry routes the request through unified chat, which can use browser tools to read pages and return an answer. The README also describes model setup, media services, computer use, sharing, and extensions as major product branches. Some subsystem links are documented only at product level; unsampled implementation details are not inferred.

Main entry points: [`core/llm-server/chat/UnifiedChatRouter.js`](https://github.com/amurgola/lumabrowser/blob/main/core/llm-server/chat/UnifiedChatRouter.js) (Unified Chat), [`core/browser/BrowserMcpTools.js`](https://github.com/amurgola/lumabrowser/blob/main/core/browser/BrowserMcpTools.js) (Browser Automation), [`core/llm-server/LlmServerIpcHandlers.js`](https://github.com/amurgola/lumabrowser/blob/main/core/llm-server/LlmServerIpcHandlers.js) (Chat Entry), [`core/browser/BrowserService.js`](https://github.com/amurgola/lumabrowser/blob/main/core/browser/BrowserService.js) (Browser Tabs)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_browser["Browser Experience"]
  node_browser["Browser Tabs<br/>[BrowserService.js]"]
  node_browser_tools["Browser Automation<br/>[BrowserMcpTools.js]"]
  node_extensions["Browser Extensions"]
  node_dashboard["Live Dashboard"]
end

subgraph group_agents["Chat And Models"]
  node_chat_ipc["Chat Entry"]
  node_chat_router["Unified Chat"]
  node_model_service["LLM Service<br/>[LLMService.js]"]
  node_model_queue["Model Queue<br/>[LLMQueueManager.js]"]
  node_knowledge["Document Knowledge<br/>[RagService.js]"]
  node_agent_manager["Named Agents<br/>[routes.js]"]
  node_rag_ingest["Knowledge Import<br/>[RagIpcHandlers.js]"]
end

subgraph group_media["Media Services"]
  node_image["Image And Video"]
  node_music["Music Generation"]
  node_speech["Speech Services"]
  node_whisper["Speech To Text"]
end

subgraph group_automation["Automation And Sharing"]
  node_desktop_control["Desktop Control<br/>[DesktopService.js]"]
  node_triggers["Triggers And Tasks<br/>[TriggerServices.js]"]
  node_sharing["Device Sharing<br/>[LlmRoutes.js]"]
  node_mcp["External MCP"]
end

subgraph group_platform["Desktop Platform"]
  node_extension_runtime["Extension Runtime"]
  node_database[("Application Data<br/>[DatabaseService.js]")]
  node_cli["Terminal Agent<br/>[AgentCli.js]"]
end

node_user(("User"))

node_user -->|"asks"| node_chat_ipc
node_chat_ipc -->|"routes chat"| node_chat_router
node_chat_router -.->|"uses browser tools"| node_browser_tools
node_browser_tools -.->|"drives tabs"| node_browser
node_chat_router -.->|"requests model"| node_model_service
node_chat_router -.->|"retrieves documents"| node_knowledge
node_rag_ingest -->|"ingests documents"| node_knowledge
node_agent_manager -.->|"provides agents"| node_chat_router
node_user -->|"browses"| node_browser
node_user -->|"generates media"| node_image
node_user -->|"generates music"| node_music
node_user -->|"generates speech"| node_speech
node_user -->|"transcribes speech"| node_whisper
node_user -->|"requests computer use"| node_desktop_control
node_user -->|"configures automation"| node_triggers
node_user -->|"shares services"| node_sharing
node_user -->|"connects servers"| node_mcp
node_user -->|"installs extensions"| node_extensions
node_user -->|"opens dashboard"| node_dashboard
node_user -->|"runs terminal agent"| node_cli
node_extension_runtime -->|"activates extensions"| node_extensions

click node_chat_ipc "https://github.com/amurgola/lumabrowser/blob/main/core/llm-server/LlmServerIpcHandlers.js"
click node_chat_router "https://github.com/amurgola/lumabrowser/blob/main/core/llm-server/chat/UnifiedChatRouter.js"
click node_model_service "https://github.com/amurgola/lumabrowser/blob/main/core/llm-service/LLMService.js"
click node_model_queue "https://github.com/amurgola/lumabrowser/blob/main/core/llm-service/LLMQueueManager.js"
click node_knowledge "https://github.com/amurgola/lumabrowser/blob/main/core/rag/RagService.js"
click node_agent_manager "https://github.com/amurgola/lumabrowser/blob/main/extensions/agent-manager/routes.js"
click node_browser "https://github.com/amurgola/lumabrowser/blob/main/core/browser/BrowserService.js"
click node_browser_tools "https://github.com/amurgola/lumabrowser/blob/main/core/browser/BrowserMcpTools.js"
click node_extensions "https://github.com/amurgola/lumabrowser/blob/main/core/chrome-extensions/ChromeExtensionService.js"
click node_dashboard "https://github.com/amurgola/lumabrowser/blob/main/core/dashboard/DashboardService.js"
click node_image "https://github.com/amurgola/lumabrowser/blob/main/core/image-server/ImageServerService.js"
click node_music "https://github.com/amurgola/lumabrowser/blob/main/core/music-server/MusicServerService.js"
click node_speech "https://github.com/amurgola/lumabrowser/blob/main/core/tts-server/TtsEngineRegistry.js"
click node_whisper "https://github.com/amurgola/lumabrowser/blob/main/core/whisper-server/service/WhisperInferenceClient.js"
click node_desktop_control "https://github.com/amurgola/lumabrowser/blob/main/core/desktop/DesktopService.js"
click node_triggers "https://github.com/amurgola/lumabrowser/blob/main/app/services/TriggerServices.js"
click node_sharing "https://github.com/amurgola/lumabrowser/blob/main/core/network-sharing/host/routes/LlmRoutes.js"
click node_mcp "https://github.com/amurgola/lumabrowser/blob/main/extensions/mcp-connector/McpClientManager.js"
click node_rag_ingest "https://github.com/amurgola/lumabrowser/blob/main/core/rag/RagIpcHandlers.js"
click node_extension_runtime "https://github.com/amurgola/lumabrowser/blob/main/core/shell/ExtensionManager.js"
click node_database "https://github.com/amurgola/lumabrowser/blob/main/core/database/DatabaseService.js"
click node_cli "https://github.com/amurgola/lumabrowser/blob/main/cli/lib/AgentCli.js"

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_browser,node_browser_tools,node_extensions,node_dashboard,node_user toneBlue
class node_chat_ipc,node_chat_router,node_model_service,node_model_queue,node_knowledge,node_agent_manager,node_rag_ingest toneAmber
class node_image,node_music,node_speech,node_whisper toneMint
class node_desktop_control,node_triggers,node_sharing,node_mcp toneRose
class node_extension_runtime,node_database,node_cli toneIndigo
```

## Components

### Browser Experience

- [Browser Tabs](https://github.com/amurgola/lumabrowser/blob/main/core/browser/BrowserService.js): `core/browser/BrowserService.js`
- [Browser Automation](https://github.com/amurgola/lumabrowser/blob/main/core/browser/BrowserMcpTools.js): `core/browser/BrowserMcpTools.js`
- [Browser Extensions](https://github.com/amurgola/lumabrowser/blob/main/core/chrome-extensions/ChromeExtensionService.js): `core/chrome-extensions/ChromeExtensionService.js`
- [Live Dashboard](https://github.com/amurgola/lumabrowser/blob/main/core/dashboard/DashboardService.js): `core/dashboard/DashboardService.js`

### Chat And Models

- [Chat Entry](https://github.com/amurgola/lumabrowser/blob/main/core/llm-server/LlmServerIpcHandlers.js): `core/llm-server/LlmServerIpcHandlers.js`
- [Unified Chat](https://github.com/amurgola/lumabrowser/blob/main/core/llm-server/chat/UnifiedChatRouter.js): `core/llm-server/chat/UnifiedChatRouter.js`
- [LLM Service](https://github.com/amurgola/lumabrowser/blob/main/core/llm-service/LLMService.js): `core/llm-service/LLMService.js`
- [Model Queue](https://github.com/amurgola/lumabrowser/blob/main/core/llm-service/LLMQueueManager.js): `core/llm-service/LLMQueueManager.js`
- [Document Knowledge](https://github.com/amurgola/lumabrowser/blob/main/core/rag/RagService.js): `core/rag/RagService.js`
- [Named Agents](https://github.com/amurgola/lumabrowser/blob/main/extensions/agent-manager/routes.js): `extensions/agent-manager/routes.js`
- [Knowledge Import](https://github.com/amurgola/lumabrowser/blob/main/core/rag/RagIpcHandlers.js): `core/rag/RagIpcHandlers.js`

### Media Services

- [Image And Video](https://github.com/amurgola/lumabrowser/blob/main/core/image-server/ImageServerService.js): `core/image-server/ImageServerService.js`
- [Music Generation](https://github.com/amurgola/lumabrowser/blob/main/core/music-server/MusicServerService.js): `core/music-server/MusicServerService.js`
- [Speech Services](https://github.com/amurgola/lumabrowser/blob/main/core/tts-server/TtsEngineRegistry.js): `core/tts-server/TtsEngineRegistry.js`
- [Speech To Text](https://github.com/amurgola/lumabrowser/blob/main/core/whisper-server/service/WhisperInferenceClient.js): `core/whisper-server/service/WhisperInferenceClient.js`

### Automation And Sharing

- [Desktop Control](https://github.com/amurgola/lumabrowser/blob/main/core/desktop/DesktopService.js): `core/desktop/DesktopService.js`
- [Triggers And Tasks](https://github.com/amurgola/lumabrowser/blob/main/app/services/TriggerServices.js): `app/services/TriggerServices.js`
- [Device Sharing](https://github.com/amurgola/lumabrowser/blob/main/core/network-sharing/host/routes/LlmRoutes.js): `core/network-sharing/host/routes/LlmRoutes.js`
- [External MCP](https://github.com/amurgola/lumabrowser/blob/main/extensions/mcp-connector/McpClientManager.js): `extensions/mcp-connector/McpClientManager.js`

### Desktop Platform

- [Extension Runtime](https://github.com/amurgola/lumabrowser/blob/main/core/shell/ExtensionManager.js): `core/shell/ExtensionManager.js`
- [Application Data](https://github.com/amurgola/lumabrowser/blob/main/core/database/DatabaseService.js): `core/database/DatabaseService.js`
- [Terminal Agent](https://github.com/amurgola/lumabrowser/blob/main/cli/lib/AgentCli.js): `cli/lib/AgentCli.js`

### Other components

- **User**

## Connections

- User → Chat Entry: asks
- Chat Entry → Unified Chat: routes chat (evidence: `core/llm-server/LlmServerIpcHandlers.js`)
- Unified Chat → Browser Automation: uses browser tools
- Browser Automation → Browser Tabs: drives tabs
- Unified Chat → LLM Service: requests model
- Unified Chat → Document Knowledge: retrieves documents
- Knowledge Import → Document Knowledge: ingests documents (evidence: `core/rag/RagIpcHandlers.js`)
- Named Agents → Unified Chat: provides agents
- User → Browser Tabs: browses
- User → Image And Video: generates media
- User → Music Generation: generates music
- User → Speech Services: generates speech
- User → Speech To Text: transcribes speech
- User → Desktop Control: requests computer use
- User → Triggers And Tasks: configures automation
- User → Device Sharing: shares services
- User → External MCP: connects servers
- User → Browser Extensions: installs extensions
- User → Live Dashboard: opens dashboard
- User → Terminal Agent: runs terminal agent
- Extension Runtime → Browser Extensions: activates extensions (evidence: `core/shell/ExtensionManager.js`)
