Gebweb handles requests concurrently on goroutines. Controllers, default DI services, repositories, database pools, cache clients, and configuration are application singletons shared across requests. Request objects, handler locals, and services registered per request remain private to one request.
Do not mutate a plain shared dict, list, set, or object from several requests. Put shared in-process mutation behind store.Store or another synchronization primitive. Use PostgreSQL, MySQL, Redis, or another external system for state that must survive restarts or be shared by multiple application instances.
File sessions, memory caches, and the in-process WebSocket broadcast hub are single-process choices. Select distributed backends before horizontally scaling those features. See the Gebweb concurrency guide.