MemoDocumentation
EN

Cloud Sync — Google Drive (E2E Encrypted)

Memo can back up your data to Google Drive with end-to-end encryption. Google never sees your data unencrypted.

What Gets Backed Up

Data File/Folder
Chat sessions data/sessions/
Memory (RAG) data/memory/
Configuration config/config.yaml
Provider config data/providers/
Orchestra config data/orchestra/
Calendar events data/calendar/
WhatsApp data data/whatsapp/
Mood state data/mood/mood.db

Encryption

Memo uses AES-256-GCM for authenticated encryption with PBKDF2 key derivation at 600,000 iterations.

passphrase → PBKDF2 (600K iters) → 256-bit key → AES-256-GCM → encrypted blob

If no passphrase is set, Memo falls back to a machine-specific key stored in data/machine.key (mode 0600). This key is generated with crypto/rand on first use.

Setup

Google Cloud Project

  1. Go to Google Cloud Console
  2. Create a new project or select an existing one
  3. Enable the Google Drive API
  4. Create an OAuth 2.0 Client ID (Desktop application type)
  5. Download the credentials JSON

Memo Configuration

  1. Place the credentials JSON in a known location
  2. In Settings → Cloud Sync, paste the path to the credentials file
  3. Click "Authenticate" — a browser opens for Google OAuth
  4. After authorizing, set a passphrase (optional but recommended)
  5. Toggle "Enable Cloud Sync"

Auto-Sync

Backups run automatically every N messages (configurable via sync.interval_messages, default 50). You can also trigger manual push, pull, or full sync from the Settings menu.

Restore on Another Computer

  1. Install Memo on the new computer
  2. Complete the same Google Cloud OAuth setup
  3. Enter the same passphrase used on the original machine
  4. Trigger "Pull" from Settings → Cloud Sync
  5. All sessions, memory, and settings restore automatically

Passphrase Management

  • The passphrase is never stored in plaintext — only the derived key is kept in memory
  • If you lose your passphrase and the machine key, the backup is permanently unrecoverable
  • Write down your passphrase and store it securely

Settings Reference

Key Type Default Description
sync.enabled bool false Enable cloud sync
sync.passphrase string "" Encryption passphrase
sync.interval_messages int 50 Messages between auto-sync checkpoints