Most LLM demos are amnesiacs. The user says "my name is noear and I like blue" in turn one, asks "what's my name?" in turn two, and the model shrugs - because every HTTP call to the chat API is stateless, and nobody fed the history back in. In production this is not a cosmetic issue: a support agent that forgets the ticket the customer opened 30 seconds ago is worse than no agent at all.
Solon AI (v4.0.5) treats conversation state as a first-class, pluggable construct. In this article we build a multi-turn customer support agent whose memory survives process restarts and horizontal scaling, using only the framework's session abstractions - no hand-rolled history tables.
The problem with hand-rolled memory
The naive fix is to append every message to a List<ChatMessage> in your own code and resend it with each request. That works until it doesn't:
Unbounded growth - a 200-turn ticket means 400 messages re-sent (and re-billed as tokens) on every call.






