# autox-community/autox architecture

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

- Interactive diagram: https://gitdiagram.com/autox-community/autox
- Repository: https://github.com/autox-community/autox

## Overview

AutoX is an Android-based JavaScript automation app: scripts are represented as sources, run through an engine service, and receive a runtime with app and automation APIs. The repository also contains editing and file-management UI, scheduled and intent-triggered execution, remote development-plugin support, and APK/resource packaging. The execution path is supported by excerpts and the SOURCE INDEX; several other subsystems are visible only in the file tree, so their internal wiring is left unasserted.

Main entry points: [`autojs/src/main/java/com/stardust/autojs/ScriptEngineService.kt`](https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/ScriptEngineService.kt) (Execution service), [`autojs/src/main/java/com/stardust/autojs/runtime/api/Engines.java`](https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/runtime/api/Engines.java) (Engines API), [`autojs/src/main/java/com/stardust/autojs/engine/ScriptEngineManager.java`](https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/engine/ScriptEngineManager.java) (Engine manager), [`app/src/main/java/org/autojs/autojs/timing/TimedTaskManager.kt`](https://github.com/autox-community/autox/blob/master/app/src/main/java/org/autojs/autojs/timing/TimedTaskManager.kt) (Task manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_execution["Script execution"]
  node_scriptservice["Execution service"]
  node_source["Script sources<br/>[ScriptSource.kt]"]
  node_executionrecord["Execution records"]
  node_config["Execution config<br/>[ExecutionConfig.kt]"]
  node_enginemanager["Engine manager"]
  node_engine["Script engine<br/>[ScriptEngine.java]"]
  node_runtime["Script runtime<br/>[ScriptRuntime.java]"]
  node_enginesapi["Engines API<br/>[Engines.java]"]
end

subgraph group_automation["Android automation"]
  node_accessibility["Accessibility service"]
  node_layoutinspect["Layout inspection"]
  node_capture["Screen capture"]
  node_timedwork["Task scheduling"]
end

subgraph group_authoring["Authoring and scheduling"]
  node_app["AutoX app<br/>[App.kt]"]
  node_editor["Script editor<br/>[EditActivity.java]"]
  node_scriptfiles["Script files<br/>[ScriptFile.kt]"]
  node_explorer["File explorer<br/>[Explorer.java]"]
  node_timingui["Task settings"]
  node_taskmanager["Task manager"]
  node_taskdb[("Task database")]
end

subgraph group_integrations["External and packaging"]
  node_devplugin["Dev plugin client"]
  node_pluginserver["Dev plugin server<br/>[DevPlugin.kt]"]
  node_apkbuilder["APK packaging<br/>[ApkBuilder.java]"]
  node_manifest["Manifest editor"]
  node_resources["Resource decoding"]
end

node_user(("User"))

node_scriptservice -->|"manages engines"| node_enginemanager
node_scriptservice -->|"creates engines"| node_engine
node_scriptservice -->|"tracks executions"| node_executionrecord
node_scriptservice -->|"initializes context"| node_runtime
node_enginemanager -->|"registers engines"| node_engine
node_enginemanager -->|"selects by source"| node_source
node_enginesapi -->|"executes scripts"| node_scriptservice
node_enginesapi -->|"builds sources"| node_source
node_enginesapi -->|"uses runtime"| node_runtime
node_timingui -->|"loads tasks"| node_taskmanager
node_timingui -->|"selects scripts"| node_scriptfiles
node_taskmanager -.->|"persists tasks"| node_taskdb
node_taskmanager -.->|"schedules tasks"| node_timedwork
node_editor -.->|"edits scripts"| node_scriptfiles
node_explorer -.->|"browses scripts"| node_scriptfiles
node_accessibility -.->|"supplies inspection"| node_layoutinspect
node_devplugin -->|"connects remotely"| node_pluginserver
node_apkbuilder -.->|"edits manifest"| node_manifest
node_apkbuilder -.->|"packages resources"| node_resources

click node_app "https://github.com/autox-community/autox/blob/master/app/src/main/java/org/autojs/autojs/App.kt"
click node_editor "https://github.com/autox-community/autox/blob/master/app/src/main/java/org/autojs/autojs/ui/edit/EditActivity.java"
click node_scriptfiles "https://github.com/autox-community/autox/blob/master/app/src/main/java/org/autojs/autojs/model/script/ScriptFile.kt"
click node_explorer "https://github.com/autox-community/autox/blob/master/app/src/main/java/org/autojs/autojs/model/explorer/Explorer.java"
click node_timingui "https://github.com/autox-community/autox/blob/master/app/src/main/java/org/autojs/autojs/ui/timing/TimedTaskSettingActivity.java"
click node_taskmanager "https://github.com/autox-community/autox/blob/master/app/src/main/java/org/autojs/autojs/timing/TimedTaskManager.kt"
click node_taskdb "https://github.com/autox-community/autox/blob/master/app/src/main/java/org/autojs/autojs/storage/database/TimedTaskDatabase.java"
click node_scriptservice "https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/ScriptEngineService.kt"
click node_source "https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/script/ScriptSource.kt"
click node_executionrecord "https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/execution/ScriptExecution.java"
click node_config "https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/execution/ExecutionConfig.kt"
click node_enginemanager "https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/engine/ScriptEngineManager.java"
click node_engine "https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/engine/ScriptEngine.java"
click node_runtime "https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java"
click node_enginesapi "https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/runtime/api/Engines.java"
click node_accessibility "https://github.com/autox-community/autox/blob/master/automator/src/main/java/com/stardust/view/accessibility/AccessibilityService.kt"
click node_layoutinspect "https://github.com/autox-community/autox/blob/master/automator/src/main/java/com/stardust/view/accessibility/LayoutInspectService.kt"
click node_capture "https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/core/image/capture/ScreenCaptureManager.kt"
click node_timedwork "https://github.com/autox-community/autox/blob/master/app/src/main/java/org/autojs/autojs/timing/TimedTaskScheduler.kt"
click node_devplugin "https://github.com/autox-community/autox/blob/master/inrt/src/main/java/com/stardust/auojs/inrt/pluginclient/DevPluginService.java"
click node_pluginserver "https://github.com/autox-community/autox/blob/master/app/src/main/java/org/autojs/autojs/devplugin/DevPlugin.kt"
click node_apkbuilder "https://github.com/autox-community/autox/blob/master/apkbuilder/src/main/java/com/stardust/autojs/apkbuilder/ApkBuilder.java"
click node_manifest "https://github.com/autox-community/autox/blob/master/apkbuilder/src/main/java/com/stardust/autojs/apkbuilder/ManifestEditor.java"
click node_resources "https://github.com/autox-community/autox/blob/master/apkbuilder/src/main/java/zhao/arsceditor/AndrolibResources.java"

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_scriptservice,node_source,node_executionrecord,node_config,node_enginemanager,node_engine,node_runtime,node_enginesapi,node_user toneBlue
class node_accessibility,node_layoutinspect,node_capture,node_timedwork toneAmber
class node_app,node_editor,node_scriptfiles,node_explorer,node_timingui,node_taskmanager,node_taskdb toneMint
class node_devplugin,node_pluginserver,node_apkbuilder,node_manifest,node_resources toneRose
```

## Components

### Script execution

- [Execution service](https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/ScriptEngineService.kt): `autojs/src/main/java/com/stardust/autojs/ScriptEngineService.kt`
- [Script sources](https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/script/ScriptSource.kt): `autojs/src/main/java/com/stardust/autojs/script/ScriptSource.kt`
- [Execution records](https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/execution/ScriptExecution.java): `autojs/src/main/java/com/stardust/autojs/execution/ScriptExecution.java`
- [Execution config](https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/execution/ExecutionConfig.kt): `autojs/src/main/java/com/stardust/autojs/execution/ExecutionConfig.kt`
- [Engine manager](https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/engine/ScriptEngineManager.java): `autojs/src/main/java/com/stardust/autojs/engine/ScriptEngineManager.java`
- [Script engine](https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/engine/ScriptEngine.java): `autojs/src/main/java/com/stardust/autojs/engine/ScriptEngine.java`
- [Script runtime](https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java): `autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java`
- [Engines API](https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/runtime/api/Engines.java): `autojs/src/main/java/com/stardust/autojs/runtime/api/Engines.java`

### Android automation

- [Accessibility service](https://github.com/autox-community/autox/blob/master/automator/src/main/java/com/stardust/view/accessibility/AccessibilityService.kt): `automator/src/main/java/com/stardust/view/accessibility/AccessibilityService.kt`
- [Layout inspection](https://github.com/autox-community/autox/blob/master/automator/src/main/java/com/stardust/view/accessibility/LayoutInspectService.kt): `automator/src/main/java/com/stardust/view/accessibility/LayoutInspectService.kt`
- [Screen capture](https://github.com/autox-community/autox/blob/master/autojs/src/main/java/com/stardust/autojs/core/image/capture/ScreenCaptureManager.kt): `autojs/src/main/java/com/stardust/autojs/core/image/capture/ScreenCaptureManager.kt`
- [Task scheduling](https://github.com/autox-community/autox/blob/master/app/src/main/java/org/autojs/autojs/timing/TimedTaskScheduler.kt): `app/src/main/java/org/autojs/autojs/timing/TimedTaskScheduler.kt`

### Authoring and scheduling

- [AutoX app](https://github.com/autox-community/autox/blob/master/app/src/main/java/org/autojs/autojs/App.kt): `app/src/main/java/org/autojs/autojs/App.kt`
- [Script editor](https://github.com/autox-community/autox/blob/master/app/src/main/java/org/autojs/autojs/ui/edit/EditActivity.java): `app/src/main/java/org/autojs/autojs/ui/edit/EditActivity.java`
- [Script files](https://github.com/autox-community/autox/blob/master/app/src/main/java/org/autojs/autojs/model/script/ScriptFile.kt): `app/src/main/java/org/autojs/autojs/model/script/ScriptFile.kt`
- [File explorer](https://github.com/autox-community/autox/blob/master/app/src/main/java/org/autojs/autojs/model/explorer/Explorer.java): `app/src/main/java/org/autojs/autojs/model/explorer/Explorer.java`
- [Task settings](https://github.com/autox-community/autox/blob/master/app/src/main/java/org/autojs/autojs/ui/timing/TimedTaskSettingActivity.java): `app/src/main/java/org/autojs/autojs/ui/timing/TimedTaskSettingActivity.java`
- [Task manager](https://github.com/autox-community/autox/blob/master/app/src/main/java/org/autojs/autojs/timing/TimedTaskManager.kt): `app/src/main/java/org/autojs/autojs/timing/TimedTaskManager.kt`
- [Task database](https://github.com/autox-community/autox/blob/master/app/src/main/java/org/autojs/autojs/storage/database/TimedTaskDatabase.java): `app/src/main/java/org/autojs/autojs/storage/database/TimedTaskDatabase.java`

### External and packaging

- [Dev plugin client](https://github.com/autox-community/autox/blob/master/inrt/src/main/java/com/stardust/auojs/inrt/pluginclient/DevPluginService.java): `inrt/src/main/java/com/stardust/auojs/inrt/pluginclient/DevPluginService.java`
- [Dev plugin server](https://github.com/autox-community/autox/blob/master/app/src/main/java/org/autojs/autojs/devplugin/DevPlugin.kt): `app/src/main/java/org/autojs/autojs/devplugin/DevPlugin.kt`
- [APK packaging](https://github.com/autox-community/autox/blob/master/apkbuilder/src/main/java/com/stardust/autojs/apkbuilder/ApkBuilder.java): `apkbuilder/src/main/java/com/stardust/autojs/apkbuilder/ApkBuilder.java`
- [Manifest editor](https://github.com/autox-community/autox/blob/master/apkbuilder/src/main/java/com/stardust/autojs/apkbuilder/ManifestEditor.java): `apkbuilder/src/main/java/com/stardust/autojs/apkbuilder/ManifestEditor.java`
- [Resource decoding](https://github.com/autox-community/autox/blob/master/apkbuilder/src/main/java/zhao/arsceditor/AndrolibResources.java): `apkbuilder/src/main/java/zhao/arsceditor/AndrolibResources.java`

### Other components

- **User**

## Connections

- Execution service → Engine manager: manages engines (evidence: `autojs/src/main/java/com/stardust/autojs/ScriptEngineService.kt`)
- Execution service → Script engine: creates engines (evidence: `autojs/src/main/java/com/stardust/autojs/ScriptEngineService.kt`)
- Execution service → Execution records: tracks executions (evidence: `autojs/src/main/java/com/stardust/autojs/ScriptEngineService.kt`)
- Execution service → Script runtime: initializes context (evidence: `autojs/src/main/java/com/stardust/autojs/ScriptEngineService.kt`)
- Engine manager → Script engine: registers engines (evidence: `autojs/src/main/java/com/stardust/autojs/engine/ScriptEngineManager.java`)
- Engine manager → Script sources: selects by source (evidence: `autojs/src/main/java/com/stardust/autojs/engine/ScriptEngineManager.java`)
- Engines API → Execution service: executes scripts (evidence: `autojs/src/main/java/com/stardust/autojs/runtime/api/Engines.java`)
- Engines API → Script sources: builds sources (evidence: `autojs/src/main/java/com/stardust/autojs/runtime/api/Engines.java`)
- Engines API → Script runtime: uses runtime (evidence: `autojs/src/main/java/com/stardust/autojs/runtime/api/Engines.java`)
- Task settings → Task manager: loads tasks (evidence: `app/src/main/java/org/autojs/autojs/ui/timing/TimedTaskSettingActivity.java`)
- Task settings → Script files: selects scripts (evidence: `app/src/main/java/org/autojs/autojs/ui/timing/TimedTaskSettingActivity.java`)
- Task manager → Task database: persists tasks
- Task manager → Task scheduling: schedules tasks
- Script editor → Script files: edits scripts
- File explorer → Script files: browses scripts
- Accessibility service → Layout inspection: supplies inspection
- Dev plugin client → Dev plugin server: connects remotely (evidence: `inrt/src/main/java/com/stardust/auojs/inrt/pluginclient/DevPluginService.java`)
- APK packaging → Manifest editor: edits manifest
- APK packaging → Resource decoding: packages resources
