Skip to main content

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 on localhost: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:

resource usage

runs 24/7 on a MacBook Pro M3 (32 GB) or a $400 Windows laptop:

source code