%% Data Flow Diagram: modelmesh-runtime-adapter
%% Generated by: Claude Opus 4.6
%% Source: architecture/rhoai-2.24/modelmesh-runtime-adapter.md

sequenceDiagram
    participant MM as ModelMesh
    participant Puller as model-serving-puller<br/>8084/TCP gRPC
    participant Storage as Remote Storage<br/>443/TCP HTTPS TLS 1.2+
    participant Adapter as Runtime Adapter<br/>8085/TCP gRPC
    participant Runtime as Model Runtime<br/>8001/TCP or 7070-7071/TCP

    Note over MM,Runtime: Flow 1: Model Loading (with separate puller)
    MM->>Puller: loadModel(modelId, modelInfo)<br/>gRPC plaintext
    Puller->>Storage: Download model artifacts<br/>HTTPS TLS 1.2+<br/>Auth: Storage credentials
    Storage-->>Puller: Model artifacts
    Note over Puller: Store artifacts to<br/>local filesystem
    Puller->>Adapter: loadModel(modelId, localPath)<br/>gRPC plaintext
    Note over Adapter: Adapt directory layout<br/>for target runtime
    Adapter->>Runtime: RepositoryModelLoad / RegisterModel<br/>gRPC plaintext
    Runtime-->>Adapter: Load response
    Adapter-->>Puller: loadModel response<br/>(model size info)
    Puller-->>MM: loadModel response

    Note over MM,Runtime: Flow 2: Model Loading (embedded puller)
    MM->>Adapter: loadModel(modelId, modelInfo)<br/>gRPC plaintext 8085/TCP
    Adapter->>Storage: Download model artifacts<br/>HTTPS TLS 1.2+
    Storage-->>Adapter: Model artifacts
    Adapter->>Runtime: RepositoryModelLoad / RegisterModel<br/>gRPC plaintext
    Runtime-->>Adapter: Load response
    Adapter-->>MM: loadModel response

    Note over MM,Runtime: Flow 3: Model Unloading
    MM->>Puller: unloadModel(modelId)<br/>gRPC plaintext
    Puller->>Adapter: unloadModel(modelId)<br/>gRPC plaintext
    Adapter->>Runtime: RepositoryModelUnload / UnregisterModel<br/>gRPC plaintext
    Runtime-->>Adapter: Unload response
    Adapter-->>Puller: unloadModel response
    Note over Puller: Delete local model files
    Puller-->>MM: unloadModel response

    Note over MM,Runtime: Flow 4: Runtime Status Check
    MM->>Puller: runtimeStatus()<br/>gRPC plaintext
    Puller->>Adapter: runtimeStatus()<br/>gRPC plaintext
    Adapter->>Runtime: ServerReady / health check<br/>gRPC plaintext
    Runtime-->>Adapter: Status response
    Adapter-->>Puller: runtimeStatus response<br/>(capacity, readiness)
    Puller-->>MM: runtimeStatus response
