This looks really neat. The demo uses a lot of shell pipes though, needing to type "pastel" out for every processing step. It would be convenient if something like
pastel random | pastel mix red | pastel lighten 0.2 | pastel format hex
could be written
pastel random mix red lighten 0.2 format hex
(not quite possible, I think) or
pastel random then mix red then lighten 0.2 then format hex
GStreamer uses the argument "!" as a pseudo-"|" so you can build multimedia pipelines without actually using Unix pipelines, or repeating the gst-launch command:
Having written a large number of CLIs in the past, I've often come across this issue but never had a good solution. This is remarkably simple, elegant, and easily generalized into a CLI framework so it can be implemented with ease. Thank you for sharing this nugget of gold!