Context & memory
"Context" is the slice of past conversation the bot is shown when it answers you. Get this wrong and a bot either forgets what you just said or drags in something from weeks ago.
Mesa has conversation history. It does not have long-term memory — see below.
How much history the bot sees
By default a reply is built from the most recent 50 messages in the conversation. That number is configurable, and resolves from the most specific setting that exists:
user → bot → tenant → global
The first one that has a value wins, so a per-bot setting overrides the tenant default without having to restate anything else.
There is a second, separate limit further down the pipeline: however many messages were loaded, at most 500 are rendered into the block the model reads. With the default of 50 you will never meet it. Raise the window past 500 and it starts to bind — which is the usual explanation for "I set the window to 1000 and nothing changed".
| Setting | Default |
|---|---|
| Messages loaded per reply | 50 |
| Maximum you may configure | 10,000 |
| Messages rendered into context | 500 |
Where old messages go
Recent messages live in the database, where they can be read quickly. Older ones are moved out to object storage and fetched back only if a reply needs them. Two thresholds trigger the move:
| Threshold | Default |
|---|---|
| Age | 30 days |
| Count in a conversation | 10,000 messages |
Archiving does not delete anything. A message that has been archived is still retrievable, and a reply that needs it will transparently pull it back — you should not be able to tell from the answer which side of the line a message was on.
Whether archiving runs at all, and on what schedule, is a deployment setting. Some deployments run a single global sweep; others run a tiered set of schedules, which is off unless switched on.
Context traces
When a reply draws on more than the current chat, the Context traces view in the web app shows what was assembled: which conversations contributed, what was filtered out, and where anything failed. It is the answer to "why did it bring that up".
There is no long-term memory
Mesa does not build a lasting profile of you. There is no store of facts learned about you across conversations, no preference the bot picks up over time, and no semantic search over your history that gets folded into a reply.
Everything the bot appears to "remember" is the recent history described above. Start a new conversation and it starts fresh.
This is worth stating plainly: an agent that tries to declare persistent memory is refused outright rather than silently given nothing; see AI agents.
Deletion and privacy
- Deletion requests are recorded, then executed as a separate step, and the record of the request survives the deletion — so there is an audit trail of what was removed and when.
- Tombstones mark deleted messages, so a gap in a conversation is a known deletion rather than a missing row.
- Per-tenant encryption keys mean archived data for one tenant is encrypted separately from another's, and destroying a tenant's key renders that tenant's archived content unreadable without having to find and delete every copy.
Which encryption backend holds the keys is a deployment choice; the isolation between tenants is the same either way.
The full procedure — who can request deletion, what each step touches, and what "done" means — is in Data export & erasure.