@startuml package "User Host" { component [Monero Wallet RPC\n(auto installed)] as CliMonRpc () RPC as MonRpcCli component "swap" { component [CLI] as CLI component [Bitcoin Wallet] as CliBitWal } CliMonRpc - MonRpcCli CLI - CliBitWal MonRpcCli - CLI } package "Public Monero Server" { component "monerod" as Monerod } package "Public Bitcoin Server" { component "Electrum Server" as Electrum component "bitcoind" as Bitcoind () "RPC" as BitRPC BitRPC -- Electrum Electrum - Bitcoind } package "Service Provider Host" { component [Monero Wallet RPC] as AsbMonRpc () RPC as MonRpcAsb component "asb" { component [ASB] as ASB component [Bitcoin Wallet] as AsbBitWal } AsbMonRpc - MonRpcAsb component "monerod" as AsbMonerod component "Electrum Server" as AsbElectrum component "bitcoind" as AsbBitcoind AsbMonRpc -- AsbMonerod () "RPC" as AsbBitRPC AsbBitWal -- AsbBitRPC AsbBitRPC -- AsbElectrum AsbElectrum - AsbBitcoind ASB - AsbBitWal ASB -- MonRpcAsb } package "Public Price Server" { component [CEX Price Ticker] as CEX () "websocket" as Ticker Ticker - CEX Ticker -- ASB } CliBitWal -- BitRPC CliMonRpc -- Monerod () "libp2p" as Libp2p Libp2p -- CLI ASB -- Libp2p footer XMR<>BTC swap CLI & ASB overview\nRendered with PlantUML version %version() @enduml