sequenceDiagram
participant Client as Client (e.g. pip, ctr, git)
participant Service as Local Runtime (e.g. pip, containerd, git)
participant Proxy as Clyde Proxy (P2P)
participant P2P as P2P Network
participant Remote as Remote Source (e.g. Registry, PyPI, Git Remote)
Client->>Service: Request(data-id or package-name)
Service->>Proxy: Resolve metadata (e.g. manifest, versions, digests)
alt Cached in Proxy/P2P
Proxy-->>Service: Return metadata (e.g. digests, versions)
else Cache Miss
Proxy->>Remote: Fetch metadata
Remote-->>Proxy: Metadata response
Proxy-->>Service: Return metadata
end
Service->>Proxy: Request data blob(s) by digest/version
Proxy->>P2P: Attempt P2P download
alt P2P Hit
P2P-->>Proxy: Return data blob(s)
else P2P Miss
Proxy->>Remote: Fetch data blob(s)
Remote-->>Proxy: Return data blob(s)
end
Proxy-->>Service: Deliver data blob(s)
Service-->>Client: Data/package ready