# d-biehl/robotframework-platynui architecture

> Architecture diagram of the GitHub repository d-biehl/robotframework-platynui, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/d-biehl/robotframework-platynui
- Repository: https://github.com/d-biehl/robotframework-platynui

## Overview

PlatynUI automates native desktop applications: a Robot Framework suite or tool queries a unified UI tree, reads state, and performs input or window actions. The Python library is built on the native runtime, which evaluates XPath over provider-supplied UI nodes and delegates platform operations to OS integrations. The README documents the CLI, Inspector, optional Java support, and the project’s Wayland compositor as additional product capabilities. Some subsystem links below are README-documented; unsampled implementation details are not inferred.

Main entry points: [`crates/runtime/src/runtime/mod.rs`](https://github.com/d-biehl/robotframework-platynui/blob/main/crates/runtime/src/runtime/mod.rs) (Automation runtime), [`crates/core/src/ui/node.rs`](https://github.com/d-biehl/robotframework-platynui/blob/main/crates/core/src/ui/node.rs) (UI node model), [`crates/core/src/platform/mod.rs`](https://github.com/d-biehl/robotframework-platynui/blob/main/crates/core/src/platform/mod.rs) (Platform contracts), [`crates/platform-linux/src/lib.rs`](https://github.com/d-biehl/robotframework-platynui/blob/main/crates/platform-linux/src/lib.rs) (Linux platforms)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Automation APIs"]
  node_baremetal["BareMetal keywords<br/>[__init__.py]"]
  node_contexts["Context API<br/>[context.py]"]
  node_locators["Locators<br/>[locator.py]"]
end

subgraph group_runtime["UI Runtime"]
  node_native["Native bindings<br/>[runtime.rs]"]
  node_runtimecore["Automation runtime<br/>[mod.rs]"]
  node_xpath["XPath engine<br/>[mod.rs]"]
  node_uimodel["UI node model<br/>[node.rs]"]
  node_platformcontract["Platform contracts<br/>[mod.rs]"]
end

subgraph group_providers["UI Providers"]
  node_providers["Accessibility providers<br/>[lib.rs]"]
  node_windowsuia["Windows UIA<br/>[provider.rs]"]
  node_javaagentprovider["Java agent provider<br/>[backend.rs]"]
  node_jab["Java Access Bridge<br/>[client.rs]"]
  node_java_package["Java integration package<br/>[__main__.py]"]
end

subgraph group_platform["Platform Services"]
  node_linux["Linux platforms<br/>[lib.rs]"]
  node_x11["X11 services<br/>[window_manager.rs]"]
  node_wayland["Wayland services<br/>[lib.rs]"]
  node_windows["Windows services<br/>[window_manager.rs]"]
end

subgraph group_tools["Exploration Tools"]
  node_cli["CLI<br/>[query.rs]"]
  node_inspector["Inspector<br/>[tree_data.rs]"]
  node_compositor["Wayland compositor<br/>[main.rs]"]
end

node_robot(("Robot suites"))
node_desktopapps["Desktop applications"]

node_robot -->|"invokes keywords"| node_baremetal
node_baremetal -->|"uses API"| node_native
node_contexts -->|"resolves queries"| node_locators
node_contexts -.->|"delegates runtime"| node_native
node_native -.->|"exposes runtime"| node_runtimecore
node_runtimecore -.->|"evaluates queries"| node_xpath
node_runtimecore -.->|"uses UI nodes"| node_uimodel
node_runtimecore -.->|"delegates actions"| node_platformcontract
node_desktopapps -->|"exposes UI tree"| node_providers
node_providers -.->|"supplies UI nodes"| node_uimodel
node_windowsuia -.->|"supplies UI nodes"| node_uimodel
node_javaagentprovider -->|"supplies UI nodes"| node_uimodel
node_javaagentprovider -->|"enabled by package"| node_java_package
node_jab -.->|"supplies UI nodes"| node_uimodel
node_platformcontract -.->|"implemented by"| node_linux
node_platformcontract -->|"implemented by"| node_windows
node_linux -->|"selects session"| node_x11
node_linux -->|"selects session"| node_wayland
node_cli -->|"evaluates queries"| node_runtimecore
node_inspector -->|"browses UI tree"| node_runtimecore
node_inspector -->|"tests queries"| node_xpath
node_compositor -->|"provides test desktop"| node_wayland

click node_baremetal "https://github.com/d-biehl/robotframework-platynui/blob/main/src/PlatynUI/BareMetal/__init__.py"
click node_contexts "https://github.com/d-biehl/robotframework-platynui/blob/main/src/PlatynUI/core/context.py"
click node_locators "https://github.com/d-biehl/robotframework-platynui/blob/main/src/PlatynUI/core/locator.py"
click node_native "https://github.com/d-biehl/robotframework-platynui/blob/main/packages/native/src/runtime.rs"
click node_runtimecore "https://github.com/d-biehl/robotframework-platynui/blob/main/crates/runtime/src/runtime/mod.rs"
click node_xpath "https://github.com/d-biehl/robotframework-platynui/blob/main/crates/xpath/src/engine/evaluator/mod.rs"
click node_uimodel "https://github.com/d-biehl/robotframework-platynui/blob/main/crates/core/src/ui/node.rs"
click node_platformcontract "https://github.com/d-biehl/robotframework-platynui/blob/main/crates/core/src/platform/mod.rs"
click node_providers "https://github.com/d-biehl/robotframework-platynui/blob/main/crates/provider-atspi/src/lib.rs"
click node_windowsuia "https://github.com/d-biehl/robotframework-platynui/blob/main/crates/provider-windows-uia/src/provider.rs"
click node_javaagentprovider "https://github.com/d-biehl/robotframework-platynui/blob/main/crates/provider-java/src/agent/backend.rs"
click node_jab "https://github.com/d-biehl/robotframework-platynui/blob/main/crates/provider-java-jab/src/client.rs"
click node_linux "https://github.com/d-biehl/robotframework-platynui/blob/main/crates/platform-linux/src/lib.rs"
click node_x11 "https://github.com/d-biehl/robotframework-platynui/blob/main/crates/platform-linux-x11/src/window_manager.rs"
click node_wayland "https://github.com/d-biehl/robotframework-platynui/blob/main/crates/platform-linux-wayland/src/lib.rs"
click node_windows "https://github.com/d-biehl/robotframework-platynui/blob/main/crates/platform-windows/src/window_manager.rs"
click node_cli "https://github.com/d-biehl/robotframework-platynui/blob/main/crates/cli/src/commands/query.rs"
click node_inspector "https://github.com/d-biehl/robotframework-platynui/blob/main/apps/inspector/src/model/tree_data.rs"
click node_compositor "https://github.com/d-biehl/robotframework-platynui/blob/main/apps/wayland-compositor/src/main.rs"
click node_java_package "https://github.com/d-biehl/robotframework-platynui/blob/main/packages/provider-java/src/platynui_provider_java/__main__.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_baremetal,node_contexts,node_locators toneBlue
class node_native,node_runtimecore,node_xpath,node_uimodel,node_platformcontract toneAmber
class node_providers,node_windowsuia,node_javaagentprovider,node_jab,node_java_package toneMint
class node_linux,node_x11,node_wayland,node_windows toneRose
class node_cli,node_inspector,node_compositor,node_robot,node_desktopapps toneIndigo
```

## Components

### Automation APIs

- [BareMetal keywords](https://github.com/d-biehl/robotframework-platynui/blob/main/src/PlatynUI/BareMetal/__init__.py): `src/PlatynUI/BareMetal/__init__.py`
- [Context API](https://github.com/d-biehl/robotframework-platynui/blob/main/src/PlatynUI/core/context.py): `src/PlatynUI/core/context.py`
- [Locators](https://github.com/d-biehl/robotframework-platynui/blob/main/src/PlatynUI/core/locator.py): `src/PlatynUI/core/locator.py`

### UI Runtime

- [Native bindings](https://github.com/d-biehl/robotframework-platynui/blob/main/packages/native/src/runtime.rs): `packages/native/src/runtime.rs`
- [Automation runtime](https://github.com/d-biehl/robotframework-platynui/blob/main/crates/runtime/src/runtime/mod.rs): `crates/runtime/src/runtime/mod.rs`
- [XPath engine](https://github.com/d-biehl/robotframework-platynui/blob/main/crates/xpath/src/engine/evaluator/mod.rs): `crates/xpath/src/engine/evaluator/mod.rs`
- [UI node model](https://github.com/d-biehl/robotframework-platynui/blob/main/crates/core/src/ui/node.rs): `crates/core/src/ui/node.rs`
- [Platform contracts](https://github.com/d-biehl/robotframework-platynui/blob/main/crates/core/src/platform/mod.rs): `crates/core/src/platform/mod.rs`

### UI Providers

- [Accessibility providers](https://github.com/d-biehl/robotframework-platynui/blob/main/crates/provider-atspi/src/lib.rs): `crates/provider-atspi/src/lib.rs`
- [Windows UIA](https://github.com/d-biehl/robotframework-platynui/blob/main/crates/provider-windows-uia/src/provider.rs): `crates/provider-windows-uia/src/provider.rs`
- [Java agent provider](https://github.com/d-biehl/robotframework-platynui/blob/main/crates/provider-java/src/agent/backend.rs): `crates/provider-java/src/agent/backend.rs`
- [Java Access Bridge](https://github.com/d-biehl/robotframework-platynui/blob/main/crates/provider-java-jab/src/client.rs): `crates/provider-java-jab/src/client.rs`
- [Java integration package](https://github.com/d-biehl/robotframework-platynui/blob/main/packages/provider-java/src/platynui_provider_java/__main__.py): `packages/provider-java/src/platynui_provider_java/__main__.py`

### Platform Services

- [Linux platforms](https://github.com/d-biehl/robotframework-platynui/blob/main/crates/platform-linux/src/lib.rs): `crates/platform-linux/src/lib.rs`
- [X11 services](https://github.com/d-biehl/robotframework-platynui/blob/main/crates/platform-linux-x11/src/window_manager.rs): `crates/platform-linux-x11/src/window_manager.rs`
- [Wayland services](https://github.com/d-biehl/robotframework-platynui/blob/main/crates/platform-linux-wayland/src/lib.rs): `crates/platform-linux-wayland/src/lib.rs`
- [Windows services](https://github.com/d-biehl/robotframework-platynui/blob/main/crates/platform-windows/src/window_manager.rs): `crates/platform-windows/src/window_manager.rs`

### Exploration Tools

- [CLI](https://github.com/d-biehl/robotframework-platynui/blob/main/crates/cli/src/commands/query.rs): `crates/cli/src/commands/query.rs`
- [Inspector](https://github.com/d-biehl/robotframework-platynui/blob/main/apps/inspector/src/model/tree_data.rs): `apps/inspector/src/model/tree_data.rs`
- [Wayland compositor](https://github.com/d-biehl/robotframework-platynui/blob/main/apps/wayland-compositor/src/main.rs): `apps/wayland-compositor/src/main.rs`

### Other components

- **Robot suites**
- **Desktop applications**

## Connections

- Robot suites → BareMetal keywords: invokes keywords (evidence: `README.md`)
- BareMetal keywords → Native bindings: uses API (evidence: `README.md`)
- Context API → Locators: resolves queries (evidence: `src/PlatynUI/core/context.py`)
- Context API → Native bindings: delegates runtime
- Native bindings → Automation runtime: exposes runtime
- Automation runtime → XPath engine: evaluates queries
- Automation runtime → UI node model: uses UI nodes
- Automation runtime → Platform contracts: delegates actions
- Desktop applications → Accessibility providers: exposes UI tree (evidence: `README.md`)
- Accessibility providers → UI node model: supplies UI nodes
- Windows UIA → UI node model: supplies UI nodes
- Java agent provider → UI node model: supplies UI nodes
- Java agent provider → Java integration package: enabled by package (evidence: `README.md`)
- Java Access Bridge → UI node model: supplies UI nodes
- Platform contracts → Linux platforms: implemented by
- Platform contracts → Windows services: implemented by
- Linux platforms → X11 services: selects session (evidence: `README.md`)
- Linux platforms → Wayland services: selects session (evidence: `README.md`)
- CLI → Automation runtime: evaluates queries (evidence: `crates/cli/src/commands/query.rs`)
- Inspector → Automation runtime: browses UI tree (evidence: `README.md`)
- Inspector → XPath engine: tests queries (evidence: `README.md`)
- Wayland compositor → Wayland services: provides test desktop (evidence: `README.md`)
