For running memory, hex maintains a 10 message full-length context window, with the rest being summarized when the threshold is being crossed (15 messages) by a separate LLM call and stored in vector storage (Qdrant). Aside from that, observational memories get constantly stored in Qdrant as well for convenient retrieval and embeddings are calculated locally via Qdrant's FastEmbed.
Preferences, facts and things like that are store in SQLite.