UDPホールパンチングでNAT越えしてP2P直接通信(SCTP)でファイル転送やパイプ転送するツールの設計(案)

前にUDPホールパンチングでover NATのP2PのSCTP通信路を作ってファイル転送するってのを試したりしてたんですが(aiortcというライブラリでWebRTCのデータチャネルを使う。aiortcのリポジトリのexampleを少し拡張した)、それをさらに拡張したツールの設計を考えています。
 
で、要件としては
シグナリングサーバは共用して使えるものを私がホストしておき、Pipingサーバ( https://qiita.com/nwtgck/items/78309fc529da7776cba0 ) のように2者で決めた識別子を互いがシグナリングサーバに送信するような実装にすることで、通信をつなぐ2者を区別する
・一度通信路ができたらそれを使いまわしたい(何度も同じか別かどっちでもいいですが、識別子を指定してコマンドを実行させることは避けたい)
・双方向でファイル転送と、パイプ接続によるデータ転送をできるようにしたい
 
で、今考えてる設計は、2つコマンドを(コマンドラインなり、シェルで実行する実行ファイル)用意して、
 
【コマンド1】
・ファイル転送モードとパイプサーバモードのどちらかを選択して起動
・ファイル転送モードでは、簡単なコマンド入力できるようなインタフェースを用意して(通信路ができるとsftpコマンドみたいに、インタラクティブに入力できる状態になる)、send <ローカルにあるファイル名> とかすると、相手が何もせんでも、相手がコマンド1起動時に指定したワーキングディレクトリ(双方が指定しておく)にそのファイルが転送される。で、転送が終わったらまたコマンド入力待ちになる
・パイプサーバモードで起動するとローカルで動くサーバ的なもの(以降、ローカルパイプサーバ)として起動しっぱなしになる
 
【コマンド2】
・ローカルパイプサーバと連携するためのコマンド
・sendモードとrecvモードのどちらかを選択して起動
・データを送りたい側はパイプのつなぐ先にコマンド2を指定してsendモード指定で起動。内部的にはローカルパイプサーバとして起動しているコマンド1のプロセスによろしくデータを転送する。
・データを受信したい側はコマンド2が受信データをstdoutに吐く前提でパイプなり、リダイレクトなりを指定して、recvモードでコマンド2を起動
・送信側、受信側のコマンド実行のタイミングはどちらが先でも良く、双方が起動するまでブロックする
・一回転送が終了したら、双方のローカルパイプサーバは(コマンド2からの)接続待ちの状態に戻り、コマンド2を用いて別のデータ転送に利用できる
・ローカルパイプサーバが一つのコマンド2プロセス によって使用中の時は、追加でコマンド2を起動してもパイプサーバがエラーを返す(sendとrecvだったら同時に使わせてもいいかも)
 
って感じです。どうすかねー。
忌憚のないご意見をお待ちしております。
 
なお、前に動かしたちょっと拡張版exampleはここに置いてあります。
https://github.com/ryogrid/aiortc-dc/tree/master/examples/datachannel-filexfer