I think of clients as sockets - they are stateless although through them you can maintain state based on other things. For the assistants API (as example) the statefullness of a user is maintained through the thread_id and you can use that thread_id (which holds the entire conversation of messages) in any client connected through the same app with same key and same assistant_id. So I just create clients and close them pretty casually (I don’t try to preserve them) because I don’t want leftover clients hanging around after a user finishes. Any time my app reaches a point where the user might ‘think’ or walk away I close the client. Then I open a new one before I need to use the thread again. In a flask app I keep the thread_id in the user session and recall it from there.