# wangzan101/mika architecture

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

- Interactive diagram: https://gitdiagram.com/wangzan101/mika
- Repository: https://github.com/wangzan101/mika

## Overview

Mika is an Android personal AI assistant: a user request becomes a managed task, the agent plans and executes phone, browser, or sandbox actions, then returns a result with progress and records. The README also documents scheduled/conditional work, user takeover and payment confirmation, memory, MCP access, and reviewable run history. The graph combines those documented capabilities with relationships visible in the supplied excerpts and SOURCE INDEX; unsampled subsystem wiring is not inferred.

Main entry points: [`app/src/main/java/com/wangzan101/mika/task/TaskRun.kt`](https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/task/TaskRun.kt) (Task execution), [`app/src/main/java/com/wangzan101/mika/task/TaskService.kt`](https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/task/TaskService.kt) (Task service), [`core/src/main/kotlin/com/wangzan101/mika/core/agent/AgentLoop.kt`](https://github.com/wangzan101/mika/blob/main/core/src/main/kotlin/com/wangzan101/mika/core/agent/AgentLoop.kt) (Agent loop), [`core/src/main/kotlin/com/wangzan101/mika/core/cap/phone/PhoneAutomationEngine.kt`](https://github.com/wangzan101/mika/blob/main/core/src/main/kotlin/com/wangzan101/mika/core/cap/phone/PhoneAutomationEngine.kt) (Phone automation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["User interaction"]
  node_chat["Chat interface<br/>[ChatViewModel.kt]"]
  node_capsule["Floating capsule"]
  node_takeover["User takeover<br/>[Takeover.kt]"]
  node_confirm["Payment confirmation"]
end

subgraph group_orchestration["Task orchestration"]
  node_tasks["Task service<br/>[TaskService.kt]"]
  node_run["Task execution<br/>[TaskRun.kt]"]
  node_agent["Agent loop<br/>[AgentLoop.kt]"]
  node_schedule["Scheduled tasks<br/>[TriggerRuntime.kt]"]
end

subgraph group_execution["Action capabilities"]
  node_phone["Phone automation"]
  node_screen["Screen accessibility"]
  node_shell["Background shell<br/>[ShellService.kt]"]
  node_browser["Built-in browser<br/>[WebStack.kt]"]
  node_sandbox["Linux sandbox<br/>[AndroidSandbox.kt]"]
end

subgraph group_state["Memory and records"]
  node_memory[("Encrypted memory<br/>[MemoryRuntime.kt]")]
  node_conversation[("Conversation store")]
  node_history["Run history"]
end

subgraph group_integrations["External access"]
  node_mcp["MCP service<br/>[McpService.kt]"]
  node_provider["Model provider<br/>[ProviderStore.kt]"]
end

node_user(("User"))
node_phoneapps(("Android apps"))
node_websites(("Websites"))
node_computer(("Computer AI tool"))

node_user -->|"requests task"| node_chat
node_chat -->|"starts task"| node_tasks
node_user -->|"steers task"| node_capsule
node_capsule -->|"sends input"| node_tasks
node_schedule -->|"triggers task"| node_tasks
node_tasks -->|"creates run"| node_run
node_run -->|"runs agent"| node_agent
node_agent -.->|"queries model"| node_provider
node_agent -->|"dispatches actions"| node_phone
node_phone -.->|"reads and acts"| node_screen
node_phone -.->|"uses background shell"| node_shell
node_agent -->|"dispatches actions"| node_browser
node_agent -->|"runs scripts"| node_sandbox
node_browser -->|"browses"| node_websites
node_shell -->|"controls apps"| node_phoneapps
node_user -->|"handles interruption"| node_takeover
node_run -->|"requests handover"| node_takeover
node_run -->|"requests approval"| node_confirm
node_tasks -->|"loads and saves"| node_conversation
node_run -->|"uses memory"| node_memory
node_run -.->|"records events"| node_history
node_computer -->|"assigns tasks"| node_mcp
node_mcp -->|"starts and tracks"| node_tasks
node_run -.->|"returns result"| node_chat

click node_chat "https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/ui/ChatViewModel.kt"
click node_capsule "https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/capsule/CapsuleController.kt"
click node_tasks "https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/task/TaskService.kt"
click node_run "https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/task/TaskRun.kt"
click node_agent "https://github.com/wangzan101/mika/blob/main/core/src/main/kotlin/com/wangzan101/mika/core/agent/AgentLoop.kt"
click node_schedule "https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/task/TriggerRuntime.kt"
click node_phone "https://github.com/wangzan101/mika/blob/main/core/src/main/kotlin/com/wangzan101/mika/core/cap/phone/PhoneAutomationEngine.kt"
click node_screen "https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/cap/phone/a11y/ScreenAccessibility.kt"
click node_shell "https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/cap/phone/shell/ShellService.kt"
click node_browser "https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/cap/web/WebStack.kt"
click node_sandbox "https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/cap/sandbox/AndroidSandbox.kt"
click node_takeover "https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/takeover/Takeover.kt"
click node_confirm "https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/confirm/ConfirmationNotifier.kt"
click node_memory "https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/memory/MemoryRuntime.kt"
click node_conversation "https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/chat/ConversationStore.kt"
click node_mcp "https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/mcp/McpService.kt"
click node_provider "https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/settings/ProviderStore.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_chat,node_capsule,node_takeover,node_confirm,node_user toneBlue
class node_tasks,node_run,node_agent,node_schedule toneAmber
class node_phone,node_screen,node_shell,node_browser,node_sandbox toneMint
class node_memory,node_conversation,node_history toneRose
class node_mcp,node_provider,node_phoneapps,node_websites,node_computer toneIndigo
```

## Components

### User interaction

- [Chat interface](https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/ui/ChatViewModel.kt): `app/src/main/java/com/wangzan101/mika/ui/ChatViewModel.kt`
- [Floating capsule](https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/capsule/CapsuleController.kt): `app/src/main/java/com/wangzan101/mika/capsule/CapsuleController.kt`
- [User takeover](https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/takeover/Takeover.kt): `app/src/main/java/com/wangzan101/mika/takeover/Takeover.kt`
- [Payment confirmation](https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/confirm/ConfirmationNotifier.kt): `app/src/main/java/com/wangzan101/mika/confirm/ConfirmationNotifier.kt`

### Task orchestration

- [Task service](https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/task/TaskService.kt): `app/src/main/java/com/wangzan101/mika/task/TaskService.kt`
- [Task execution](https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/task/TaskRun.kt): `app/src/main/java/com/wangzan101/mika/task/TaskRun.kt`
- [Agent loop](https://github.com/wangzan101/mika/blob/main/core/src/main/kotlin/com/wangzan101/mika/core/agent/AgentLoop.kt): `core/src/main/kotlin/com/wangzan101/mika/core/agent/AgentLoop.kt`
- [Scheduled tasks](https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/task/TriggerRuntime.kt): `app/src/main/java/com/wangzan101/mika/task/TriggerRuntime.kt`

### Action capabilities

- [Phone automation](https://github.com/wangzan101/mika/blob/main/core/src/main/kotlin/com/wangzan101/mika/core/cap/phone/PhoneAutomationEngine.kt): `core/src/main/kotlin/com/wangzan101/mika/core/cap/phone/PhoneAutomationEngine.kt`
- [Screen accessibility](https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/cap/phone/a11y/ScreenAccessibility.kt): `app/src/main/java/com/wangzan101/mika/cap/phone/a11y/ScreenAccessibility.kt`
- [Background shell](https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/cap/phone/shell/ShellService.kt): `app/src/main/java/com/wangzan101/mika/cap/phone/shell/ShellService.kt`
- [Built-in browser](https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/cap/web/WebStack.kt): `app/src/main/java/com/wangzan101/mika/cap/web/WebStack.kt`
- [Linux sandbox](https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/cap/sandbox/AndroidSandbox.kt): `app/src/main/java/com/wangzan101/mika/cap/sandbox/AndroidSandbox.kt`

### Memory and records

- [Encrypted memory](https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/memory/MemoryRuntime.kt): `app/src/main/java/com/wangzan101/mika/memory/MemoryRuntime.kt`
- [Conversation store](https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/chat/ConversationStore.kt): `app/src/main/java/com/wangzan101/mika/chat/ConversationStore.kt`
- **Run history**

### External access

- [MCP service](https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/mcp/McpService.kt): `app/src/main/java/com/wangzan101/mika/mcp/McpService.kt`
- [Model provider](https://github.com/wangzan101/mika/blob/main/app/src/main/java/com/wangzan101/mika/settings/ProviderStore.kt): `app/src/main/java/com/wangzan101/mika/settings/ProviderStore.kt`

### Other components

- **User**
- **Android apps**
- **Websites**
- **Computer AI tool**

## Connections

- User → Chat interface: requests task
- Chat interface → Task service: starts task (evidence: `app/src/main/java/com/wangzan101/mika/capsule/CapsuleController.kt`)
- User → Floating capsule: steers task (evidence: `app/src/main/java/com/wangzan101/mika/capsule/CapsuleController.kt`)
- Floating capsule → Task service: sends input (evidence: `app/src/main/java/com/wangzan101/mika/capsule/CapsuleController.kt`)
- Scheduled tasks → Task service: triggers task (evidence: `app/src/main/java/com/wangzan101/mika/task/TaskService.kt`)
- Task service → Task execution: creates run (evidence: `app/src/main/java/com/wangzan101/mika/task/TaskService.kt`)
- Task execution → Agent loop: runs agent (evidence: `app/src/main/java/com/wangzan101/mika/task/TaskRun.kt`)
- Agent loop → Model provider: queries model
- Agent loop → Phone automation: dispatches actions
- Phone automation → Screen accessibility: reads and acts
- Phone automation → Background shell: uses background shell
- Agent loop → Built-in browser: dispatches actions
- Agent loop → Linux sandbox: runs scripts
- Built-in browser → Websites: browses
- Background shell → Android apps: controls apps
- User → User takeover: handles interruption
- Task execution → User takeover: requests handover (evidence: `app/src/main/java/com/wangzan101/mika/task/TaskService.kt`)
- Task execution → Payment confirmation: requests approval (evidence: `app/src/main/java/com/wangzan101/mika/task/TaskService.kt`)
- Task service → Conversation store: loads and saves (evidence: `app/src/main/java/com/wangzan101/mika/task/TaskService.kt`)
- Task execution → Encrypted memory: uses memory (evidence: `app/src/main/java/com/wangzan101/mika/task/TaskRun.kt`)
- Task execution → Run history: records events
- Computer AI tool → MCP service: assigns tasks
- MCP service → Task service: starts and tracks (evidence: `app/src/main/java/com/wangzan101/mika/mcp/McpService.kt`)
- Task execution → Chat interface: returns result
