Evidence
sxth-mind separates the belief state it owns (UserMind, ProjectMind,
Nudge, persisted via Storage) from the raw evidence it
rents — the messages, actions, and signals it reads to build context and derive
beliefs.
Own the beliefs, rent the bytes. sxth-mind is the system of record for what it concludes about a user, not for the raw transcript. The transcript can live in your own database, a memory vendor (Mem0, Zep), or the bundled local store.This keeps sxth-mind from competing with — or duplicating — wherever your data already lives.
The interface
AnEvidenceSource is a read-mostly port. The only required methods are reads:
Event is one piece of raw evidence:
Writes are optional
Many apps already log their own conversations. In that case sxth-mind only needs to read —append() defaults to a no-op:
append() when you want sxth-mind to capture raw turns for you:
Using it
Pass your source to theMind (it defaults to a process-local store):
chat(), the Mind:
- Reads recent evidence via
recent()to assemble the prompt. - Calls the LLM.
- Appends the user and assistant turns via
append()(a no-op if your app owns writes). - Updates the owned belief state and persists it via Storage.
LocalEvidenceSource
The bundled default. In-memory, dependency-free, with naive substring search. Good for development and demos; data is lost when the process exits. Swap in a real source backed by your database or a memory vendor for production.Where derived views live
The summary and topics that sxth-mind derives from a conversation are not evidence — they’re owned belief state, stored onProjectMind as conversation_summary and topics. Raw
messages stay in the evidence source; conclusions about them are owned by
sxth-mind.
