# limxdynamics/tron2_openpi architecture

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

- Interactive diagram: https://gitdiagram.com/limxdynamics/tron2_openpi
- Repository: https://github.com/limxdynamics/tron2_openpi

## Overview

TRON2 OpenPI is a deployment-focused robot-policy stack: a robot client gathers observations, sends them to a policy server, and receives action chunks for execution. The README also describes a separate training path that produces checkpoints and normalization assets for deployment, plus RTC-assisted chunk execution and optional observation sources. Model internals are represented at the principal model boundary; the excerpts do not show all script wiring or the robot-client implementation, so uncertain internal links are omitted.

Main entry points: [`src/openpi/policies/policy.py`](https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/policies/policy.py) (Robot policies), [`packages/openpi-client/src/openpi_client/websocket_client_policy.py`](https://github.com/limxdynamics/tron2_openpi/blob/main/packages/openpi-client/src/openpi_client/websocket_client_policy.py) (WebSocket policy client), [`examples/tron2`](https://github.com/limxdynamics/tron2_openpi/tree/main/examples/tron2) (RTC deployment client), [`src/openpi/serving/websocket_policy_server.py`](https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/serving/websocket_policy_server.py) (WebSocket server)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_deploy["Policy deployment"]
  node_serve["Policy server launcher<br/>[serve_policy.py]"]
  node_server["WebSocket server"]
end

subgraph group_policy["Policy processing"]
  node_transforms["Data transforms<br/>[transforms.py]"]
  node_tronpolicy["TRON2 transforms<br/>[tron2_policy.py]"]
  node_policyconfig["Policy construction<br/>[policy_config.py]"]
  node_policy["Robot policies<br/>[policy.py]"]
  node_rtc["RTC guidance<br/>[rtc_processor.py]"]
end

subgraph group_models["Model inference"]
  node_pi0["Pi0 model<br/>[pi0.py]"]
  node_pytorch["Pi0 PyTorch<br/>[pi0_pytorch.py]"]
end

subgraph group_training["Training and assets"]
  node_checkpoint[("Model checkpoint")]
  node_dataset[("Training dataset")]
  node_train["Train policy"]
  node_configs["Training registrations<br/>[config.py]"]
  node_loader["Data loading<br/>[data_loader.py]"]
end

subgraph group_client["Robot clients"]
  node_clientlib["WebSocket policy client"]
  node_robotclient["TRON2 deployment client"]
  node_rtcclient["RTC deployment client"]
  node_observation["Observation sources"]
end

node_operator(("Task operator"))
node_robot(("TRON2 robot"))
node_bridge(("TRON2 Bridge"))
node_camera(("RealSense cameras"))

node_operator -->|"starts task"| node_robotclient
node_operator -.->|"starts RTC task"| node_rtcclient
node_robotclient -->|"requests observations"| node_observation
node_rtcclient -.->|"requests observations"| node_observation
node_bridge -.->|"supplies observations"| node_observation
node_camera -.->|"supplies images"| node_observation
node_observation -->|"provides input"| node_robotclient
node_observation -.->|"provides input"| node_rtcclient
node_robotclient -->|"submits observations"| node_clientlib
node_rtcclient -.->|"submits RTC requests"| node_clientlib
node_clientlib -->|"sends WebSocket request"| node_server
node_server -->|"dispatches inference"| node_policy
node_serve -->|"constructs policy"| node_policyconfig
node_serve -->|"starts serving"| node_server
node_policyconfig -->|"creates policy"| node_policy
node_policy -->|"applies TRON2 transforms"| node_tronpolicy
node_policy -->|"applies input transforms"| node_transforms
node_policy -->|"runs inference"| node_pi0
node_policy -.->|"runs inference"| node_pytorch
node_rtcclient -.->|"configures guidance"| node_rtc
node_pi0 -.->|"applies guidance"| node_rtc
node_policy -->|"returns action chunk"| node_server
node_server -->|"sends action chunk"| node_clientlib
node_clientlib -->|"returns actions"| node_robotclient
node_clientlib -.->|"returns actions"| node_rtcclient
node_dataset -->|"provides samples"| node_loader
node_train -->|"selects configuration"| node_configs
node_train -->|"loads training data"| node_loader
node_loader -->|"transforms samples"| node_transforms
node_train -->|"writes weights"| node_checkpoint
node_checkpoint -->|"loads weights"| node_serve
node_configs -->|"registers policy config"| node_policyconfig

click node_train "https://github.com/limxdynamics/tron2_openpi/blob/main/scripts/train_tron2_task.py"
click node_configs "https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/training/config.py"
click node_loader "https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/training/data_loader.py"
click node_transforms "https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/transforms.py"
click node_tronpolicy "https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/policies/tron2_policy.py"
click node_policyconfig "https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/policies/policy_config.py"
click node_policy "https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/policies/policy.py"
click node_pi0 "https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/models/pi0.py"
click node_pytorch "https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/models_pytorch/pi0_pytorch.py"
click node_rtc "https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/rtc/rtc_processor.py"
click node_serve "https://github.com/limxdynamics/tron2_openpi/blob/main/scripts/serve_policy.py"
click node_server "https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/serving/websocket_policy_server.py"
click node_clientlib "https://github.com/limxdynamics/tron2_openpi/blob/main/packages/openpi-client/src/openpi_client/websocket_client_policy.py"
click node_robotclient "https://github.com/limxdynamics/tron2_openpi/tree/main/examples/tron2"
click node_rtcclient "https://github.com/limxdynamics/tron2_openpi/tree/main/examples/tron2"
click node_observation "https://github.com/limxdynamics/tron2_openpi/tree/main/examples/tron2"

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_serve,node_server toneBlue
class node_transforms,node_tronpolicy,node_policyconfig,node_policy,node_rtc toneAmber
class node_pi0,node_pytorch toneMint
class node_checkpoint,node_dataset,node_train,node_configs,node_loader,node_operator toneRose
class node_clientlib,node_robotclient,node_rtcclient,node_observation,node_robot,node_bridge,node_camera toneIndigo
```

## Components

### Policy deployment

- [Policy server launcher](https://github.com/limxdynamics/tron2_openpi/blob/main/scripts/serve_policy.py): `scripts/serve_policy.py`
- [WebSocket server](https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/serving/websocket_policy_server.py): `src/openpi/serving/websocket_policy_server.py`

### Policy processing

- [Data transforms](https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/transforms.py): `src/openpi/transforms.py`
- [TRON2 transforms](https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/policies/tron2_policy.py): `src/openpi/policies/tron2_policy.py`
- [Policy construction](https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/policies/policy_config.py): `src/openpi/policies/policy_config.py`
- [Robot policies](https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/policies/policy.py): `src/openpi/policies/policy.py`
- [RTC guidance](https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/rtc/rtc_processor.py): `src/openpi/rtc/rtc_processor.py`

### Model inference

- [Pi0 model](https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/models/pi0.py): `src/openpi/models/pi0.py`
- [Pi0 PyTorch](https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/models_pytorch/pi0_pytorch.py): `src/openpi/models_pytorch/pi0_pytorch.py`

### Training and assets

- **Model checkpoint**
- **Training dataset**
- [Train policy](https://github.com/limxdynamics/tron2_openpi/blob/main/scripts/train_tron2_task.py): `scripts/train_tron2_task.py`
- [Training registrations](https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/training/config.py): `src/openpi/training/config.py`
- [Data loading](https://github.com/limxdynamics/tron2_openpi/blob/main/src/openpi/training/data_loader.py): `src/openpi/training/data_loader.py`

### Robot clients

- [WebSocket policy client](https://github.com/limxdynamics/tron2_openpi/blob/main/packages/openpi-client/src/openpi_client/websocket_client_policy.py): `packages/openpi-client/src/openpi_client/websocket_client_policy.py`
- [TRON2 deployment client](https://github.com/limxdynamics/tron2_openpi/tree/main/examples/tron2): `examples/tron2`
- [RTC deployment client](https://github.com/limxdynamics/tron2_openpi/tree/main/examples/tron2): `examples/tron2`
- [Observation sources](https://github.com/limxdynamics/tron2_openpi/tree/main/examples/tron2): `examples/tron2`

### Other components

- **Task operator**
- **TRON2 robot**
- **TRON2 Bridge**
- **RealSense cameras**

## Connections

- Task operator → TRON2 deployment client: starts task
- Task operator → RTC deployment client: starts RTC task
- TRON2 deployment client → Observation sources: requests observations
- RTC deployment client → Observation sources: requests observations
- TRON2 Bridge → Observation sources: supplies observations
- RealSense cameras → Observation sources: supplies images
- Observation sources → TRON2 deployment client: provides input
- Observation sources → RTC deployment client: provides input
- TRON2 deployment client → WebSocket policy client: submits observations
- RTC deployment client → WebSocket policy client: submits RTC requests
- WebSocket policy client → WebSocket server: sends WebSocket request
- WebSocket server → Robot policies: dispatches inference
- Policy server launcher → Policy construction: constructs policy
- Policy server launcher → WebSocket server: starts serving
- Policy construction → Robot policies: creates policy
- Robot policies → TRON2 transforms: applies TRON2 transforms
- Robot policies → Data transforms: applies input transforms
- Robot policies → Pi0 model: runs inference
- Robot policies → Pi0 PyTorch: runs inference
- RTC deployment client → RTC guidance: configures guidance
- Pi0 model → RTC guidance: applies guidance
- Robot policies → WebSocket server: returns action chunk
- WebSocket server → WebSocket policy client: sends action chunk
- WebSocket policy client → TRON2 deployment client: returns actions
- WebSocket policy client → RTC deployment client: returns actions
- Training dataset → Data loading: provides samples
- Train policy → Training registrations: selects configuration
- Train policy → Data loading: loads training data
- Data loading → Data transforms: transforms samples
- Train policy → Model checkpoint: writes weights
- Model checkpoint → Policy server launcher: loads weights
- Training registrations → Policy construction: registers policy config
