overview
screenpipe is a Rust application that captures your screen and audio using an event-driven architecture, processes them locally, and stores everything in a SQLite database. instead of recording every second, it listens for meaningful OS events and captures only when something actually changes — pairing each screenshot with accessibility tree data for maximum quality at minimal cost.data flow
crates
screenpipe is a Rust workspace with specialized crates:layers
1. event-driven capture
screenpipe listens for meaningful OS events instead of polling at a fixed FPS. when an event fires, it captures a screenshot and walks the accessibility tree together — same timestamp, same frame.2. processing
additional processing: speaker identification, PII redaction, frame deduplication (skips identical frames).
3. storage
all data stays local on your machine:- SQLite at
~/.screenpipe/db.sqlite— metadata, accessibility text, OCR fallback text, transcriptions, speakers, tags, UI elements - media at
~/.screenpipe/data/— JPEG screenshots (event-driven frames), audio chunks
4. API
REST API onlocalhost:3030:
see API reference for the full endpoint list.
5. pipes
pipes are AI agents (.md prompt files) that run on your screen data. they’re executed by an AI agent that reads the prompt, queries the screenpipe API, and takes action.
pipes live in ~/.screenpipe/pipes/{name}/ and run on cron-like schedules.
6. desktop app
the desktop app is built with Tauri (Rust backend) + Next.js (React frontend):database schema
key tables:
inspect directly: