Here is suggestion to use KEKS codec with a simple client-server
Remote Procedure Call interface. It is very similar to
=> JSON-RPC
=> MessagePack-RPC

Call, reply and notify message headers ([schema/tcl] format):

    call {
        {field . {list} len=4}
        {field 0 {str} =c}
        {field 1 {hexlet}} {# id}
        {field 2 {str} >0} {# method}
        {field 3 {map}}    {# params}
    }
    
    reply {
        {field . {list} len=4}
        {field 0 {str} =r}
        {field 1 {hexlet}} {# id}
        {field 2 {str}}    {# error}
        {field 3 {map}}    {# body}
    }
    
    notify {
        {field . {list} len=4}
        {field 0 {str} =n}
        {field 1 {hexlet}} {# id}
        {field 2 {str} >0} {# method}
        {field 3 {map}}    {# body}
    }

It is advisable to use UUIDv7 for call/notify's id.
Reply's id must be the same as in corresponding call.
Empty error string means no error occurred.

Notification differs only by its type and no reply expectation.