I’ve decided to put down some of my thoughts on how to better design the architecture that underlies a command-line interface. Given that the CLI systems we have now are horribly designed and force a lot more work onto utility programmers. (These deficiencies can be easily traced to the OS and how little it provides to actually facilitate a good solution to these problems.)
The short version is that the IPC should be done using streams of typed values, and that user-commands (of utilities) should be handled discretely and independent of the data-stream.