RuneLite plugin that exposes read-only game context over a local WebSocket.
The plugin publishes:
- game state on tick while logged in
- camera, local player, NPCs, objects, ground items, hover/menu state, and walkable tile offsets
- optional nearby player, inventory, and equipment sections controlled by config
- canvas coordinates, bounds, and hulls for entities where RuneLite exposes rendered geometry
- screenshots on request, or at an optional configured tick interval
It does not execute gameplay actions.
Run RuneLite with the plugin loaded:
./gradlew runIf this repo does not have a Gradle wrapper yet, use your local Gradle installation:
gradle runThe plugin listens on ws://localhost:7070 by default.
- The WebSocket server binds to localhost only.
- The bridge sends read-only game state and screenshots.
- Nearby non-local player export is disabled by default.
- Inventory and equipment export can be disabled in config.
- Incoming bridge messages are limited to screenshot requests.
WebSocket Port: local server port, default7070Broadcast Every Tick: publish full state every game tick, default enabledInclude Nearby Players: include nearby non-local players, default disabledInclude Inventory: include inventory items, default enabledInclude Equipment: include worn equipment, default enabledAuto-Screenshot Interval: capture every N ticks,0means on-demand onlyWorld Search Radius: tile radius for nearby NPCs, players, objects, ground items, and walkable tiles
On connect:
{"type":"connected","message":"LLM Bridge ready. Game state broadcasts every tick when logged in."}State messages:
{
"type": "state",
"tick": 12345,
"camera": {},
"player": {},
"inventory": [],
"equipment": [],
"hover": {},
"npcs": [],
"players": [],
"objects": [],
"groundItems": [],
"walkableTiles": []
}Screenshot request from a client:
{"type":"request_screenshot"}Screenshot response:
{"type":"screenshot","tick":12345,"format":"png","data":"...base64..."}The external plugin entry point is declared in runelite-plugin.properties:
plugins=com.llmbridge.LlmBridgePlugin