While reading intro(5) I noticed these very interesting lines: Fids are chosen by the client. All requests on a connection share the same fid space; when several clients share a connection, the agent managing the sharing must arrange that no two clients choose the same fid. And later: A client can send multiple T-messages without waiting for the corresponding R-messages, but all outstanding T-messages must specify different tags. The server may delay the response to a request and respond to later ones; this is sometimes necessary, for example when the client reads from a file that the server synthesizes from external events such as keyboard characters. This is a very interesting feature, allowing a sort of proxing at connection level. Such a proxy could accept 9P connections on a socket and forward them to a remote server (after modifying fids and tags so that they are kept unique), largely improving scalability. If available, I'd really like to read such code. BTW, is there any client library that actually enables consumers to send multiple T-messages without waiting the corresponding R-messages and then consume responses when they arrive? All the 9p implementations that I saw were synchronous, allowing only one client per connection. Where can I find an implementation of these features? I guess it would be a really instructive read. Giacomo