there are any requests from clients. I'm slightly worried how this will affect multiple concurrent client requests since they would theoretically share facade, mediator and proxy instances due to the singleton
No threading in App Engine, so no concurrent requests. The main() business is just for AST caching, not for AST sharing.
But still, to be safe, you could add a global mutex.
If you are talking about persisting state *between* requests then you need sessions, no other way around it.