Even TUI devs don’t usually interact with the protocol directly, they use ncurses or something from charm.sh to abstract away the protocol.
Moreover, what “constraint” does using a wire protocol like this impose?
And how would one interact with any computer without a low level layer of byte-encoded information? (You can’t. It’s how computers work)