how it works
set a retention period
choose how many days of data to keep locally (7, 14, 30, 60, or 90 days). data older than this will be archived.
data is encrypted on your device
your token is used to derive an encryption key locally using argon2id. data is encrypted with chacha20-poly1305 before upload — the same encryption used by cloud sync.
encrypted data is uploaded in chunks
screenpipe uploads data in small batches (up to 500 records at a time) every 5 minutes. this includes screen captures, ocr text, audio transcriptions, accessibility data, and ui events.
what gets archived
screen captures
frame metadata, app names, window titles, browser urls
ocr text
extracted text from screen recordings
audio transcriptions
transcribed speech with speaker and device info
accessibility data
ui text captured via accessibility apis
ui events
keyboard and mouse activity metadata
media files
orphaned video/audio files are cleaned up after upload
enabling cloud archive
- open settings → cloud archive
- select your retention period (how many days to keep locally)
- toggle enable cloud archive
encryption details
cloud archive reuses the sameSyncManager and encryption pipeline as cloud sync:
- key derivation: argon2id with a password derived from your auth token
- cipher: chacha20-poly1305 (authenticated encryption)
- zero-knowledge: the encryption key never leaves your device
view archive source code
review the rust implementation of cloud archive
watermark-based tracking
instead of marking individual records as uploaded, cloud archive uses a single watermark timestamp. all data before the watermark has been securely uploaded and can be safely deleted locally. this is simpler and more efficient than per-record tracking — one timestamp tells the system exactly where it left off, even if the app restarts.storage & limits
your cloud storage usage is shown in the archive status card. storage limits depend on your screenpipe pro plan.important notes
cloud archive requires a screenpipe pro subscription. the archive process runs automatically in the background every 5 minutes when enabled.