# jokerhung/android-automation-studio architecture

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

- Interactive diagram: https://gitdiagram.com/jokerhung/android-automation-studio
- Repository: https://github.com/jokerhung/android-automation-studio

## Overview

Android Automation Studio is a web-based Android automation product: users submit natural-language tasks, choose Flash or Pro execution, and follow results in a live workspace; they can also configure models, schedule tasks, and review recordings. The map covers the browser UI, FastAPI administration layer, ARTEMIS automation runtime, device and AI integrations, and persisted execution history. README documents the main browser-to-runtime and runtime-to-provider/device relationships; several internal subsystems are unsampled, so their connections are omitted rather than inferred.

Main entry points: [`artemis/agents`](https://github.com/jokerhung/android-automation-studio/tree/main/artemis/agents) (Task automation), [`apps/admin_console/server.py`](https://github.com/jokerhung/android-automation-studio/blob/main/apps/admin_console/server.py) (Admin server), [`artemis/data_engine/storage.py`](https://github.com/jokerhung/android-automation-studio/blob/main/artemis/data_engine/storage.py) (Session and trace store), [`apps/showcase_next/src/app`](https://github.com/jokerhung/android-automation-studio/tree/main/apps/showcase_next/src/app) (Showcase UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_frontend["Showcase UI"]
  node_home["Task composer"]
  node_workspace["Live workspace"]
  node_schedule_ui["Schedule UI"]
  node_settings_ui["Settings UI"]
end

subgraph group_admin["Administration API"]
  node_api["Admin server<br/>[server.py]"]
  node_task_routes["Task routes<br/>[tasks.py]"]
  node_scheduling["Schedule services"]
  node_replay["Replay manager<br/>[replay_manager.py]"]
end

subgraph group_runtime["Automation runtime"]
  node_automation["Task automation"]
  node_device_control["Device control"]
  node_readiness["Device readiness<br/>[engine.py]"]
  node_model_routing["Model routing<br/>[router.py]"]
  node_settings["Runtime settings<br/>[settings.py]"]
end

subgraph group_state["Execution state"]
  node_execution_data["Execution data engine<br/>[engine.py]"]
  node_history_store[("Session and trace store<br/>[storage.py]")]
  node_session_repository[("Console session repository")]
end

subgraph group_integrations["External integrations"]
  node_ai_provider["Configured AI provider"]
  node_android_device["Android phone or emulator"]
  node_mcp["MCP integration<br/>[server.py]"]
end

node_browser(("Browser user"))

node_browser -->|"uses"| node_frontend
node_frontend -->|"same-origin HTTP"| node_api
node_home -->|"submits tasks"| node_task_routes
node_task_routes -.->|"dispatches tasks"| node_automation
node_automation -->|"requests AI"| node_ai_provider
node_automation -->|"controls device"| node_android_device
node_schedule_ui -.->|"configures schedules"| node_scheduling
node_workspace -->|"follows execution"| node_api
node_settings_ui -.->|"configures models"| node_api
node_execution_data -->|"stores records"| node_history_store
node_replay -->|"loads execution data"| node_history_store
node_session_repository -->|"references trace store"| node_history_store
node_settings -->|"supplies configuration"| node_model_routing
node_mcp -->|"exposes runtime"| node_automation
node_readiness -.->|"checks device"| node_android_device

click node_frontend "https://github.com/jokerhung/android-automation-studio/tree/main/apps/showcase_next/src/app"
click node_home "https://github.com/jokerhung/android-automation-studio/tree/main/apps/showcase_next/src/features/home"
click node_workspace "https://github.com/jokerhung/android-automation-studio/tree/main/apps/showcase_next/src/features/workspace"
click node_schedule_ui "https://github.com/jokerhung/android-automation-studio/tree/main/apps/showcase_next/src/features/schedules"
click node_settings_ui "https://github.com/jokerhung/android-automation-studio/tree/main/apps/showcase_next/src/features/settings"
click node_api "https://github.com/jokerhung/android-automation-studio/blob/main/apps/admin_console/server.py"
click node_task_routes "https://github.com/jokerhung/android-automation-studio/blob/main/apps/admin_console/routers/tasks.py"
click node_scheduling "https://github.com/jokerhung/android-automation-studio/tree/main/apps/admin_console/services"
click node_replay "https://github.com/jokerhung/android-automation-studio/blob/main/apps/admin_console/replay_manager.py"
click node_automation "https://github.com/jokerhung/android-automation-studio/tree/main/artemis/agents"
click node_device_control "https://github.com/jokerhung/android-automation-studio/blob/main/artemis/controllers/unified_controller.py"
click node_readiness "https://github.com/jokerhung/android-automation-studio/blob/main/artemis/core/diagnostics/engine.py"
click node_model_routing "https://github.com/jokerhung/android-automation-studio/blob/main/artemis/llm/router.py"
click node_settings "https://github.com/jokerhung/android-automation-studio/blob/main/artemis/config/settings.py"
click node_execution_data "https://github.com/jokerhung/android-automation-studio/blob/main/artemis/data_engine/engine.py"
click node_history_store "https://github.com/jokerhung/android-automation-studio/blob/main/artemis/data_engine/storage.py"
click node_session_repository "https://github.com/jokerhung/android-automation-studio/blob/main/apps/admin_console/database/repositories/session_repository.py"
click node_mcp "https://github.com/jokerhung/android-automation-studio/blob/main/mcp_server/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_frontend,node_home,node_workspace,node_schedule_ui,node_settings_ui,node_browser toneBlue
class node_api,node_task_routes,node_scheduling,node_replay toneAmber
class node_automation,node_device_control,node_readiness,node_model_routing,node_settings toneMint
class node_execution_data,node_history_store,node_session_repository toneRose
class node_ai_provider,node_android_device,node_mcp toneIndigo
```

## Components

### Web experience

- [Showcase UI](https://github.com/jokerhung/android-automation-studio/tree/main/apps/showcase_next/src/app): `apps/showcase_next/src/app`
- [Task composer](https://github.com/jokerhung/android-automation-studio/tree/main/apps/showcase_next/src/features/home): `apps/showcase_next/src/features/home`
- [Live workspace](https://github.com/jokerhung/android-automation-studio/tree/main/apps/showcase_next/src/features/workspace): `apps/showcase_next/src/features/workspace`
- [Schedule UI](https://github.com/jokerhung/android-automation-studio/tree/main/apps/showcase_next/src/features/schedules): `apps/showcase_next/src/features/schedules`
- [Settings UI](https://github.com/jokerhung/android-automation-studio/tree/main/apps/showcase_next/src/features/settings): `apps/showcase_next/src/features/settings`

### Administration API

- [Admin server](https://github.com/jokerhung/android-automation-studio/blob/main/apps/admin_console/server.py): `apps/admin_console/server.py`
- [Task routes](https://github.com/jokerhung/android-automation-studio/blob/main/apps/admin_console/routers/tasks.py): `apps/admin_console/routers/tasks.py`
- [Schedule services](https://github.com/jokerhung/android-automation-studio/tree/main/apps/admin_console/services): `apps/admin_console/services`
- [Replay manager](https://github.com/jokerhung/android-automation-studio/blob/main/apps/admin_console/replay_manager.py): `apps/admin_console/replay_manager.py`

### Automation runtime

- [Task automation](https://github.com/jokerhung/android-automation-studio/tree/main/artemis/agents): `artemis/agents`
- [Device control](https://github.com/jokerhung/android-automation-studio/blob/main/artemis/controllers/unified_controller.py): `artemis/controllers/unified_controller.py`
- [Device readiness](https://github.com/jokerhung/android-automation-studio/blob/main/artemis/core/diagnostics/engine.py): `artemis/core/diagnostics/engine.py`
- [Model routing](https://github.com/jokerhung/android-automation-studio/blob/main/artemis/llm/router.py): `artemis/llm/router.py`
- [Runtime settings](https://github.com/jokerhung/android-automation-studio/blob/main/artemis/config/settings.py): `artemis/config/settings.py`

### Execution state

- [Execution data engine](https://github.com/jokerhung/android-automation-studio/blob/main/artemis/data_engine/engine.py): `artemis/data_engine/engine.py`
- [Session and trace store](https://github.com/jokerhung/android-automation-studio/blob/main/artemis/data_engine/storage.py): `artemis/data_engine/storage.py`
- [Console session repository](https://github.com/jokerhung/android-automation-studio/blob/main/apps/admin_console/database/repositories/session_repository.py): `apps/admin_console/database/repositories/session_repository.py`

### External integrations

- **Configured AI provider**
- **Android phone or emulator**
- [MCP integration](https://github.com/jokerhung/android-automation-studio/blob/main/mcp_server/server.py): `mcp_server/server.py`

### Other components

- **Browser user**

## Connections

- Browser user → Showcase UI: uses (evidence: `README.md`)
- Showcase UI → Admin server: same-origin HTTP (evidence: `README.md`)
- Task composer → Task routes: submits tasks (evidence: `README.md`)
- Task routes → Task automation: dispatches tasks
- Task automation → Configured AI provider: requests AI (evidence: `README.md`)
- Task automation → Android phone or emulator: controls device (evidence: `README.md`)
- Schedule UI → Schedule services: configures schedules
- Live workspace → Admin server: follows execution (evidence: `README.md`)
- Settings UI → Admin server: configures models
- Execution data engine → Session and trace store: stores records (evidence: `artemis/data_engine/engine.py`)
- Replay manager → Session and trace store: loads execution data (evidence: `apps/admin_console/replay_manager.py`)
- Console session repository → Session and trace store: references trace store (evidence: `apps/admin_console/database/repositories/session_repository.py`)
- Runtime settings → Model routing: supplies configuration (evidence: `artemis/llm/router.py`)
- MCP integration → Task automation: exposes runtime (evidence: `README.md`)
- Device readiness → Android phone or emulator: checks device
