# chsami/microbot architecture

> Architecture diagram of the GitHub repository chsami/microbot, 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/chsami/microbot
- Repository: https://github.com/chsami/microbot

## Overview

Microbot is a RuneLite fork centered on an always-on plugin for learning, building, and running automation scripts. The principal workflow is a user driving a running client: the CLI and script tooling reach the client runtime, scripts use reusable helpers and queryable entity caches, and the RuneLite API exposes game state and actions. Party, Discord, and world lookup are additional client services. The README documents the Microbot subsystems, but their source was not sampled; those relationships are limited to its stated code map and capabilities.

Main entry points: [`runelite-client/src/main/java/net/runelite/client/plugins/microbot`](https://github.com/chsami/microbot/tree/main/runelite-client/src/main/java/net/runelite/client/plugins/microbot) (Automation scripts), [`runelite-api/src/main/java/net/runelite/api`](https://github.com/chsami/microbot/tree/main/runelite-api/src/main/java/net/runelite/api) (RuneLite API), [`runelite-client/src/main/java/net/runelite/client/plugins/microbot/util`](https://github.com/chsami/microbot/tree/main/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util) (Reusable helpers), [`runelite-api/src/main/java/net/runelite/api/GameEngine.java`](https://github.com/chsami/microbot/blob/main/runelite-api/src/main/java/net/runelite/api/GameEngine.java) (Game engine API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Client runtime"]
  node_plugin["Microbot plugin"]
  node_engine["Game engine API<br/>[GameEngine.java]"]
end

subgraph group_automation["Automation"]
  node_cli["Microbot CLI"]
  node_scripts["Automation scripts"]
  node_helpers["Reusable helpers"]
  node_agent["Agent tooling"]
end

subgraph group_access["Game access"]
  node_query["Queryable caches"]
  node_api["RuneLite API"]
end

subgraph group_services["Client services"]
  node_party["Party service<br/>[PartyService.java]"]
  node_partyserver{{"Party server"}}
  node_discord["Discord service"]
  node_discordrpc{{"Discord RPC"}}
  node_worlds["World service<br/>[WorldService.java]"]
  node_worldapi{{"World API"}}
end

node_user(("User"))

node_user -->|"drives client"| node_cli
node_cli -->|"controls runtime"| node_agent
node_plugin -->|"runs"| node_scripts
node_scripts -->|"uses"| node_helpers
node_scripts -->|"queries"| node_query
node_scripts -->|"uses"| node_api
node_helpers -->|"uses"| node_api
node_engine -->|"exposes runtime"| node_api
node_party -->|"sends party data"| node_partyserver
node_discord -.->|"calls RPC"| node_discordrpc
node_worlds -->|"fetches worlds"| node_worldapi

click node_cli "https://github.com/chsami/microbot/tree/main/runelite-client/src/main/java/net/runelite/client/plugins/microbot"
click node_plugin "https://github.com/chsami/microbot/tree/main/runelite-client/src/main/java/net/runelite/client/plugins/microbot"
click node_scripts "https://github.com/chsami/microbot/tree/main/runelite-client/src/main/java/net/runelite/client/plugins/microbot"
click node_helpers "https://github.com/chsami/microbot/tree/main/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util"
click node_query "https://github.com/chsami/microbot/tree/main/runelite-client/src/main/java/net/runelite/client/plugins/microbot/api"
click node_agent "https://github.com/chsami/microbot/tree/main/runelite-client/src/main/java/net/runelite/client/plugins/microbot/agentserver"
click node_api "https://github.com/chsami/microbot/tree/main/runelite-api/src/main/java/net/runelite/api"
click node_engine "https://github.com/chsami/microbot/blob/main/runelite-api/src/main/java/net/runelite/api/GameEngine.java"
click node_party "https://github.com/chsami/microbot/blob/main/runelite-client/src/main/java/net/runelite/client/party/PartyService.java"
click node_discord "https://github.com/chsami/microbot/blob/main/runelite-client/src/main/java/net/runelite/client/discord/DiscordService.java"
click node_worlds "https://github.com/chsami/microbot/blob/main/runelite-client/src/main/java/net/runelite/client/game/WorldService.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_plugin,node_engine,node_user toneBlue
class node_cli,node_scripts,node_helpers,node_agent toneAmber
class node_query,node_api toneMint
class node_party,node_partyserver,node_discord,node_discordrpc,node_worlds,node_worldapi toneRose
```

## Components

### Client runtime

- [Microbot plugin](https://github.com/chsami/microbot/tree/main/runelite-client/src/main/java/net/runelite/client/plugins/microbot): `runelite-client/src/main/java/net/runelite/client/plugins/microbot`
- [Game engine API](https://github.com/chsami/microbot/blob/main/runelite-api/src/main/java/net/runelite/api/GameEngine.java): `runelite-api/src/main/java/net/runelite/api/GameEngine.java`

### Automation

- [Microbot CLI](https://github.com/chsami/microbot/tree/main/runelite-client/src/main/java/net/runelite/client/plugins/microbot): `runelite-client/src/main/java/net/runelite/client/plugins/microbot`
- [Automation scripts](https://github.com/chsami/microbot/tree/main/runelite-client/src/main/java/net/runelite/client/plugins/microbot): `runelite-client/src/main/java/net/runelite/client/plugins/microbot`
- [Reusable helpers](https://github.com/chsami/microbot/tree/main/runelite-client/src/main/java/net/runelite/client/plugins/microbot/util): `runelite-client/src/main/java/net/runelite/client/plugins/microbot/util`
- [Agent tooling](https://github.com/chsami/microbot/tree/main/runelite-client/src/main/java/net/runelite/client/plugins/microbot/agentserver): `runelite-client/src/main/java/net/runelite/client/plugins/microbot/agentserver`

### Game access

- [Queryable caches](https://github.com/chsami/microbot/tree/main/runelite-client/src/main/java/net/runelite/client/plugins/microbot/api): `runelite-client/src/main/java/net/runelite/client/plugins/microbot/api`
- [RuneLite API](https://github.com/chsami/microbot/tree/main/runelite-api/src/main/java/net/runelite/api): `runelite-api/src/main/java/net/runelite/api`

### Client services

- [Party service](https://github.com/chsami/microbot/blob/main/runelite-client/src/main/java/net/runelite/client/party/PartyService.java): `runelite-client/src/main/java/net/runelite/client/party/PartyService.java`
- **Party server**
- [Discord service](https://github.com/chsami/microbot/blob/main/runelite-client/src/main/java/net/runelite/client/discord/DiscordService.java): `runelite-client/src/main/java/net/runelite/client/discord/DiscordService.java`
- **Discord RPC**
- [World service](https://github.com/chsami/microbot/blob/main/runelite-client/src/main/java/net/runelite/client/game/WorldService.java): `runelite-client/src/main/java/net/runelite/client/game/WorldService.java`
- **World API**

### Other components

- **User**

## Connections

- User → Microbot CLI: drives client
- Microbot CLI → Agent tooling: controls runtime
- Microbot plugin → Automation scripts: runs
- Automation scripts → Reusable helpers: uses
- Automation scripts → Queryable caches: queries
- Automation scripts → RuneLite API: uses
- Reusable helpers → RuneLite API: uses
- Game engine API → RuneLite API: exposes runtime
- Party service → Party server: sends party data
- Discord service → Discord RPC: calls RPC
- World service → World API: fetches worlds
