# the-jddev/leo-shs-lab architecture

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

- Interactive diagram: https://gitdiagram.com/the-jddev/leo-shs-lab
- Repository: https://github.com/the-jddev/leo-shs-lab
- Video tour (about a minute): https://gitdiagram.com/the-jddev/leo-shs-lab/video

## Overview

Leo is an Android voice-and-chat assistant that accepts user requests, interprets them, consults an AI provider, and can carry out device and app actions. Its runtime also includes persistent conversational memory, browser and file operations, GitHub integration, and floating assistant overlays. The excerpts confirm several internal dependencies; other connections are omitted where the supplied source does not establish wiring. The README is empty, so capability coverage is based on the source tree and sampled code.

Main entry points: [`android-leo/app/src/main/java/com/shslab/leo/MainActivity.kt`](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/MainActivity.kt) (Main activity), [`android-leo/app/src/main/java/com/shslab/leo/executor/ActionExecutor.kt`](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/executor/ActionExecutor.kt) (Action executor), [`android-leo/app/src/main/java/com/shslab/leo/network/LeoNetworkClient.kt`](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/network/LeoNetworkClient.kt) (AI client), [`android-leo/app/src/main/java/com/shslab/leo/git/GitManager.kt`](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/git/GitManager.kt) (Git integration)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["Assistant interaction"]
  node_main["Main activity<br/>[MainActivity.kt]"]
  node_chat["Chat UI<br/>[ChatAdapter.kt]"]
  node_voice["Voice interaction<br/>[LeoVoiceService.kt]"]
  node_speech["Speech manager<br/>[SpeechManager.kt]"]
end

subgraph group_reasoning["Conversation services"]
  node_network["AI client"]
  node_persona["Assistant persona<br/>[DoraemonPersona.kt]"]
  node_memory["Memory manager<br/>[MemoryManager.kt]"]
  node_memorydb[("Memory database<br/>[LeoMemoryDb.kt]")]
  node_vault[("Credential vault<br/>[SecurityManager.kt]")]
end

subgraph group_actions["Action capabilities"]
  node_parser["Command parser<br/>[CommandParser.kt]"]
  node_dispatcher["Action dispatcher"]
  node_executor["Action executor<br/>[ActionExecutor.kt]"]
  node_queue["Command queue<br/>[CommandQueue.kt]"]
  node_accessibility["Screen automation"]
  node_browser["Browser engine"]
  node_files["File engine<br/>[FileEngine.kt]"]
  node_cleaner["Deletion safeguard"]
  node_hardware["Hardware controls<br/>[HardwareManager.kt]"]
  node_git["Git integration<br/>[GitManager.kt]"]
  node_shell["Shell bridge<br/>[ShellBridge.kt]"]
end

subgraph group_platform["Android services"]
  node_overlay["Floating overlay<br/>[OverlayService.kt]"]
  node_siri["Voice bubble"]
end

node_user(("User"))
node_provider(("AI provider"))
node_android(("Android system"))
node_github(("GitHub"))

node_user -->|"submits request"| node_main
node_voice -->|"launches assistant"| node_main
node_main -->|"updates conversation"| node_chat
node_main -->|"uses speech"| node_speech
node_main -->|"parses command"| node_parser
node_main -->|"requests response"| node_network
node_network -->|"uses persona"| node_persona
node_network -->|"builds memory context"| node_memory
node_network -->|"reads credentials"| node_vault
node_network -->|"sends request"| node_provider
node_memory -->|"reads and writes"| node_memorydb
node_main -->|"dispatches actions"| node_dispatcher
node_dispatcher -->|"queues commands"| node_queue
node_dispatcher -->|"dispatches action"| node_executor
node_executor -->|"controls apps"| node_accessibility
node_executor -->|"uses browser"| node_browser
node_executor -->|"uses file engine"| node_files
node_files -->|"checks deletion"| node_cleaner
node_executor -->|"controls hardware"| node_hardware
node_executor -->|"uses Git integration"| node_git
node_git -->|"reads token"| node_vault
node_git -->|"runs Git commands"| node_shell
node_git -->|"calls API"| node_github
node_voice -->|"registers assistant"| node_android
node_accessibility -->|"uses accessibility APIs"| node_android
node_hardware -->|"controls device"| node_android
node_overlay -->|"shows system overlay"| node_android
node_siri -->|"opens voice mode"| node_main
node_siri -->|"samples microphone"| node_android

click node_main "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/MainActivity.kt"
click node_chat "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/chat/ChatAdapter.kt"
click node_voice "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/voice/LeoVoiceService.kt"
click node_speech "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/voice/SpeechManager.kt"
click node_network "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/network/LeoNetworkClient.kt"
click node_persona "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/persona/DoraemonPersona.kt"
click node_memory "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/memory/MemoryManager.kt"
click node_memorydb "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/memory/LeoMemoryDb.kt"
click node_vault "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/security/SecurityManager.kt"
click node_parser "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/parser/CommandParser.kt"
click node_dispatcher "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/executor/ActionDispatcher.kt"
click node_executor "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/executor/ActionExecutor.kt"
click node_queue "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/executor/CommandQueue.kt"
click node_accessibility "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/accessibility/LeoAccessibilityService.kt"
click node_browser "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/browser/LeoBrowserEngine.kt"
click node_files "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/file/FileEngine.kt"
click node_cleaner "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/cognitive/CognitiveCleaner.kt"
click node_hardware "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/hardware/HardwareManager.kt"
click node_git "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/git/GitManager.kt"
click node_shell "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/shell/ShellBridge.kt"
click node_overlay "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/overlay/OverlayService.kt"
click node_siri "https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/overlay/SiriOverlayService.kt"

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_main,node_chat,node_voice,node_speech,node_user toneBlue
class node_network,node_persona,node_memory,node_memorydb,node_vault toneAmber
class node_parser,node_dispatcher,node_executor,node_queue,node_accessibility,node_browser,node_files,node_cleaner,node_hardware,node_git,node_shell toneMint
class node_overlay,node_siri toneRose
class node_provider,node_android,node_github toneIndigo
```

## Components

### Assistant interaction

- [Main activity](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/MainActivity.kt): `android-leo/app/src/main/java/com/shslab/leo/MainActivity.kt`
- [Chat UI](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/chat/ChatAdapter.kt): `android-leo/app/src/main/java/com/shslab/leo/chat/ChatAdapter.kt`
- [Voice interaction](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/voice/LeoVoiceService.kt): `android-leo/app/src/main/java/com/shslab/leo/voice/LeoVoiceService.kt`
- [Speech manager](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/voice/SpeechManager.kt): `android-leo/app/src/main/java/com/shslab/leo/voice/SpeechManager.kt`

### Conversation services

- [AI client](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/network/LeoNetworkClient.kt): `android-leo/app/src/main/java/com/shslab/leo/network/LeoNetworkClient.kt`
- [Assistant persona](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/persona/DoraemonPersona.kt): `android-leo/app/src/main/java/com/shslab/leo/persona/DoraemonPersona.kt`
- [Memory manager](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/memory/MemoryManager.kt): `android-leo/app/src/main/java/com/shslab/leo/memory/MemoryManager.kt`
- [Memory database](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/memory/LeoMemoryDb.kt): `android-leo/app/src/main/java/com/shslab/leo/memory/LeoMemoryDb.kt`
- [Credential vault](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/security/SecurityManager.kt): `android-leo/app/src/main/java/com/shslab/leo/security/SecurityManager.kt`

### Action capabilities

- [Command parser](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/parser/CommandParser.kt): `android-leo/app/src/main/java/com/shslab/leo/parser/CommandParser.kt`
- [Action dispatcher](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/executor/ActionDispatcher.kt): `android-leo/app/src/main/java/com/shslab/leo/executor/ActionDispatcher.kt`
- [Action executor](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/executor/ActionExecutor.kt): `android-leo/app/src/main/java/com/shslab/leo/executor/ActionExecutor.kt`
- [Command queue](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/executor/CommandQueue.kt): `android-leo/app/src/main/java/com/shslab/leo/executor/CommandQueue.kt`
- [Screen automation](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/accessibility/LeoAccessibilityService.kt): `android-leo/app/src/main/java/com/shslab/leo/accessibility/LeoAccessibilityService.kt`
- [Browser engine](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/browser/LeoBrowserEngine.kt): `android-leo/app/src/main/java/com/shslab/leo/browser/LeoBrowserEngine.kt`
- [File engine](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/file/FileEngine.kt): `android-leo/app/src/main/java/com/shslab/leo/file/FileEngine.kt`
- [Deletion safeguard](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/cognitive/CognitiveCleaner.kt): `android-leo/app/src/main/java/com/shslab/leo/cognitive/CognitiveCleaner.kt`
- [Hardware controls](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/hardware/HardwareManager.kt): `android-leo/app/src/main/java/com/shslab/leo/hardware/HardwareManager.kt`
- [Git integration](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/git/GitManager.kt): `android-leo/app/src/main/java/com/shslab/leo/git/GitManager.kt`
- [Shell bridge](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/shell/ShellBridge.kt): `android-leo/app/src/main/java/com/shslab/leo/shell/ShellBridge.kt`

### Android services

- [Floating overlay](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/overlay/OverlayService.kt): `android-leo/app/src/main/java/com/shslab/leo/overlay/OverlayService.kt`
- [Voice bubble](https://github.com/the-jddev/leo-shs-lab/blob/main/android-leo/app/src/main/java/com/shslab/leo/overlay/SiriOverlayService.kt): `android-leo/app/src/main/java/com/shslab/leo/overlay/SiriOverlayService.kt`

### Other components

- **User**
- **AI provider**
- **Android system**
- **GitHub**

## Connections

- User → Main activity: submits request
- Voice interaction → Main activity: launches assistant
- Main activity → Chat UI: updates conversation
- Main activity → Speech manager: uses speech
- Main activity → Command parser: parses command
- Main activity → AI client: requests response
- AI client → Assistant persona: uses persona
- AI client → Memory manager: builds memory context
- AI client → Credential vault: reads credentials
- AI client → AI provider: sends request
- Memory manager → Memory database: reads and writes
- Main activity → Action dispatcher: dispatches actions
- Action dispatcher → Command queue: queues commands
- Action dispatcher → Action executor: dispatches action
- Action executor → Screen automation: controls apps
- Action executor → Browser engine: uses browser
- Action executor → File engine: uses file engine
- File engine → Deletion safeguard: checks deletion
- Action executor → Hardware controls: controls hardware
- Action executor → Git integration: uses Git integration
- Git integration → Credential vault: reads token
- Git integration → Shell bridge: runs Git commands
- Git integration → GitHub: calls API
- Voice interaction → Android system: registers assistant
- Screen automation → Android system: uses accessibility APIs
- Hardware controls → Android system: controls device
- Floating overlay → Android system: shows system overlay
- Voice bubble → Main activity: opens voice mode
- Voice bubble → Android system: samples microphone
