俺が考えたのは、
コマンドはローカル含め全部ソケットでやり取りするって方法。
これなら後々にリモートの拡張が容易だし。外部(他のソフト)からも色々出来る。

ユーザーが動作選択(または入力)
↓
コマンド生成
↓
コマンドをソケットで送る
↓
受信
↓
動作
↓
レスポンス

みたいな感じで。