My experience is that it is very frustrating. Apple's documentation makes no mention of what works on Linux and its limitations, so you just have to guess or work it out with trial and error.
I use it over docker because it has a better license, more easily installed with system package managers (installing docker is a pain, IIRC), is rootless by default, and has a pretty transparent remote API that I can use over SSH to control containers on other machines.
If you need a format that can transport byte arrays unmodified (image data, etc), msgpack (or protos or whatever) is much better than JSON since you don't have to base64 encode or escape the data. It also supports non-string keys which can be convenient.
I actually wrote some thoughts about this a few months ago [0]. tmux actually does a really good job in this regard, the config language is fairly simple, and if you want to do more complicated things you just shell out and then use the CLI which is great because it exposes all the things you can do in a config file.
I tried to write a websocket client: https://willhbr.net/2023/08/23/the-five-stages-of-swift-on-l... Then tried again 2 years later: https://willhbr.net/2025/10/13/the-6-2nd-stage-of-swift-on-l...
reply