# fatihmakes/mark-li architecture

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

- Interactive diagram: https://gitdiagram.com/fatihmakes/mark-li
- Repository: https://github.com/fatihmakes/mark-li

## Overview

MARK LIV is a cross-platform voice-and-visual personal assistant. A user speaks or types in the desktop UI; the live session handles conversation, invokes discovered actions or plugins for tasks, and returns spoken and visual results. Supporting branches provide persistent memory, visual awareness, the animated avatar, and remote phone control. The README documents broad capabilities, but most runtime wiring is unsampled, so links are limited to documented behavior and visible source evidence.

Main entry points: [`main.py`](https://github.com/fatihmakes/mark-li/blob/main/main.py) (Live Session), [`ui.py`](https://github.com/fatihmakes/mark-li/blob/main/ui.py) (Desktop UI), [`actions`](https://github.com/fatihmakes/mark-li/tree/main/actions) (Assistant Actions), [`core/action_loader.py`](https://github.com/fatihmakes/mark-li/blob/main/core/action_loader.py) (Action Discovery)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["Interaction"]
  node_ui["Desktop UI<br/>[ui.py]"]
end

subgraph group_conversation["Live Assistant"]
  node_session["Live Session<br/>[main.py]"]
  node_audio["Audio and Speech"]
  node_vision["Screen and Vision"]
end

subgraph group_skills["Skills"]
  node_skill_loader["Action Discovery<br/>[action_loader.py]"]
  node_actions["Assistant Actions"]
  node_plugins["User Plugins"]
  node_local_llm["Planning LLM<br/>[llm_client.py]"]
  node_web["Web Search<br/>[web_search.py]"]
end

subgraph group_state["Memory and Settings"]
  node_memory[("Persistent Memory<br/>[memory_manager.py]")]
  node_settings[("Configuration<br/>[config_manager.py]")]
  node_undo["Undo<br/>[undo.py]"]
end

subgraph group_surfaces["Displays and Remote"]
  node_dashboard["Remote Dashboard<br/>[server.py]"]
  node_avatar["Animated Avatar<br/>[avatar.py]"]
  node_mesh["Avatar Geometry<br/>[avatar_mesh.py]"]
end

node_user(("User"))
node_gemini["Gemini Live API"]
node_external_services["External Services"]

node_user -->|"speaks or types"| node_ui
node_ui -->|"provides input"| node_session
node_session -->|"streams audio"| node_audio
node_audio -->|"sends and receives"| node_gemini
node_session -->|"discovers tools"| node_skill_loader
node_skill_loader -->|"loads actions"| node_actions
node_skill_loader -->|"loads plugins"| node_plugins
node_session -->|"dispatches tools"| node_actions
node_session -->|"reads and updates"| node_memory
node_session -->|"reads settings"| node_settings
node_session -->|"dispatches undo"| node_undo
node_session -->|"requests screen processing"| node_vision
node_session -.->|"requests planning"| node_local_llm
node_session -->|"updates display"| node_ui
node_session -->|"provides audio state"| node_avatar
node_avatar -->|"gets head geometry"| node_mesh
node_ui -.->|"starts remote access"| node_dashboard
node_dashboard -->|"queues commands"| node_session
node_actions -.->|"dispatches search"| node_web
node_actions -.->|"uses integrations"| node_external_services
node_gemini -->|"uses live service"| node_external_services

click node_ui "https://github.com/fatihmakes/mark-li/blob/main/ui.py"
click node_session "https://github.com/fatihmakes/mark-li/blob/main/main.py"
click node_audio "https://github.com/fatihmakes/mark-li/tree/main/core"
click node_vision "https://github.com/fatihmakes/mark-li/blob/main/actions/screen_processor.py"
click node_skill_loader "https://github.com/fatihmakes/mark-li/blob/main/core/action_loader.py"
click node_actions "https://github.com/fatihmakes/mark-li/tree/main/actions"
click node_plugins "https://github.com/fatihmakes/mark-li/tree/main/plugins"
click node_local_llm "https://github.com/fatihmakes/mark-li/blob/main/core/llm_client.py"
click node_memory "https://github.com/fatihmakes/mark-li/blob/main/memory/memory_manager.py"
click node_settings "https://github.com/fatihmakes/mark-li/blob/main/memory/config_manager.py"
click node_undo "https://github.com/fatihmakes/mark-li/blob/main/core/undo.py"
click node_dashboard "https://github.com/fatihmakes/mark-li/blob/main/dashboard/server.py"
click node_avatar "https://github.com/fatihmakes/mark-li/blob/main/core/avatar.py"
click node_mesh "https://github.com/fatihmakes/mark-li/blob/main/core/avatar_mesh.py"
click node_web "https://github.com/fatihmakes/mark-li/blob/main/actions/web_search.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_ui,node_user toneBlue
class node_session,node_audio,node_vision toneAmber
class node_skill_loader,node_actions,node_plugins,node_local_llm,node_web,node_gemini toneMint
class node_memory,node_settings,node_undo toneRose
class node_dashboard,node_avatar,node_mesh,node_external_services toneIndigo
```

## Components

### Interaction

- [Desktop UI](https://github.com/fatihmakes/mark-li/blob/main/ui.py): `ui.py`

### Live Assistant

- [Live Session](https://github.com/fatihmakes/mark-li/blob/main/main.py): `main.py`
- [Audio and Speech](https://github.com/fatihmakes/mark-li/tree/main/core): `core`
- [Screen and Vision](https://github.com/fatihmakes/mark-li/blob/main/actions/screen_processor.py): `actions/screen_processor.py`

### Skills

- [Action Discovery](https://github.com/fatihmakes/mark-li/blob/main/core/action_loader.py): `core/action_loader.py`
- [Assistant Actions](https://github.com/fatihmakes/mark-li/tree/main/actions): `actions`
- [User Plugins](https://github.com/fatihmakes/mark-li/tree/main/plugins): `plugins`
- [Planning LLM](https://github.com/fatihmakes/mark-li/blob/main/core/llm_client.py): `core/llm_client.py`
- [Web Search](https://github.com/fatihmakes/mark-li/blob/main/actions/web_search.py): `actions/web_search.py`

### Memory and Settings

- [Persistent Memory](https://github.com/fatihmakes/mark-li/blob/main/memory/memory_manager.py): `memory/memory_manager.py`
- [Configuration](https://github.com/fatihmakes/mark-li/blob/main/memory/config_manager.py): `memory/config_manager.py`
- [Undo](https://github.com/fatihmakes/mark-li/blob/main/core/undo.py): `core/undo.py`

### Displays and Remote

- [Remote Dashboard](https://github.com/fatihmakes/mark-li/blob/main/dashboard/server.py): `dashboard/server.py`
- [Animated Avatar](https://github.com/fatihmakes/mark-li/blob/main/core/avatar.py): `core/avatar.py`
- [Avatar Geometry](https://github.com/fatihmakes/mark-li/blob/main/core/avatar_mesh.py): `core/avatar_mesh.py`

### Other components

- **User**
- **Gemini Live API**
- **External Services**

## Connections

- User → Desktop UI: speaks or types
- Desktop UI → Live Session: provides input
- Live Session → Audio and Speech: streams audio
- Audio and Speech → Gemini Live API: sends and receives
- Live Session → Action Discovery: discovers tools
- Action Discovery → Assistant Actions: loads actions
- Action Discovery → User Plugins: loads plugins
- Live Session → Assistant Actions: dispatches tools
- Live Session → Persistent Memory: reads and updates
- Live Session → Configuration: reads settings
- Live Session → Undo: dispatches undo
- Live Session → Screen and Vision: requests screen processing
- Live Session → Planning LLM: requests planning
- Live Session → Desktop UI: updates display
- Live Session → Animated Avatar: provides audio state
- Animated Avatar → Avatar Geometry: gets head geometry
- Desktop UI → Remote Dashboard: starts remote access
- Remote Dashboard → Live Session: queues commands
- Assistant Actions → Web Search: dispatches search
- Assistant Actions → External Services: uses integrations
- Gemini Live API → External Services: uses live service
