Encryption

Data encryption at rest for Mnemosyne memory stores.

Not Yet Implemented

Encryption at rest (AES-256-GCM or equivalent) is not yet implemented in the Mnemosyne constructor. The Memory() class does not accept an encryption_key parameter. This page documents the planned feature. Use filesystem-level encryption in the meantime.

Current Recommendations

Since application-level encryption is not yet available, protect data at rest using:

Filesystem Encryption

# LUKS full-disk encryption (Linux)
cryptsetup luksFormat /dev/sdb1
cryptsetup luksOpen /dev/sdb1 mnemosyne-data

# Mount encrypted volume
mount /dev/mapper/mnemosyne-data /data

Database File Permissions

# Restrict access to database file
chmod 600 /data/mnemosyne.db
chown mnemosyne:mnemosyne /data/mnemosyne.db

Environment Isolation

Run Mnemosyne in isolated environments (containers, VMs) with encrypted storage volumes to prevent unauthorized access to the SQLite database file.

Planned Features

When implemented, encryption is expected to cover:

DataPlannedNotes
Memory contentYesAll text content
EmbeddingsNoVectors not encrypted (performance)
MetadataPartialTags, source; timestamps not
Semantic triplesYesSubject, predicate, object
Data Security

Even without application-level encryption, always use filesystem encryption and proper file permissions for production deployments. Memory databases contain sensitive user data and conversation history.