|
Explorer (⇧⌘E)
Search (⇧⌘F)
Source Control (⌃⇧ Explorer (⇧⌘E)
Search (⇧⌘F)
Source Control (⌃⇧G) - 2 pending changes
2
Run and Debug (⇧⌘D)
Remote Explorer
Extensions (⇧⌘X) - 2 require update, 1 requires restart
3
Claude Code
Containers
EXPLORER
EXPLORER
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
SCREENPIPE [SSH: NAS]
#recycle
app
data
pipes
.gitignore
app_settings.json
archive.db
db.sqlite
screenpipe_sync.sh
screenpipe.db
Outline Section
OUTLINE
OUTLINE
Timeline Section
TIMELINE
TIMELINE
app_settings.json, Editor Group 1
screenpipe_sync.sh, Editor Group 1
db.sqlite-shm, preview, Editor Group 1
#!/bin/bash
# screenpipe_sync.sh
# Syncs Screenpipe SQLite data to a NAS archive database (append-only, no deletions).
# Also copies the day's video/frame data folder to the NAS.
#
# Usage:
# ./screenpipe_sync.sh # syncs yesterday (default)
# ./screenpipe_sync.sh 2026-04-15 # syncs a specific date
# ./screenpipe_sync.sh today # syncs today so far
#
# Cron example (runs at 3am daily):
# 0 3 * * * /Users/lukas/.screenpipe/screenpipe_sync.sh >> /Users/lukas/.screenpipe/sync.log 2>&1
set -euo pipefail
# ─── CONFIG ───────────────────────────────────────────────────────────────────
DB_SRC="${SCREENPIPE_DB:-$HOME/.screenpipe/db.sqlite}"
NAS_MOUNT="${NAS_MOUNT:-/Volumes/Test/screenpipe}"
NAS_DB="$NAS_MOUNT/archive.db"
NAS_DATA="$NAS_MOUNT/data"
LOG_FILE="$HOME/.screenpipe/sync.log"
# ──────────────────────────────────────────────────────────────────────────────
# ─── HELPERS ──────────────────────────────────────────────────────────────────
SCRIPT_START=$(date +%s)
log() {
local msg="[$(date '+%Y-%m-%d %H:%M:%S')] $*"
echo "$msg" | tee -a "$LOG_FILE"
}
step() {
local now=$(date +%s)
local elapsed=$(( now - SCRIPT_START ))
local min=$(( elapsed / 60 ))
local sec=$(( elapsed % 60 ))
printf "\n[+%02dm%02ds] ▶ %s\n" "$min" "$sec" "$*" | tee -a "$LOG_FILE"
}
run_sqlite_heredoc() {
local label="$1"
local sql="$2"
local start=$(date +%s)
printf " %-36s " "$label"
sqlite3 "$DB_SRC" <<< "$sql" &
local pid=$!
local spin=[PASSWORD] '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏')
local i=0
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# ─── DATE ARGUMENT ────────────────────────────────────────────────────────────
if [ "${1:-}" = "today" ]; then
TARGET_DATE=$(date +%Y-%m-%d)
elif [ -n "${1:-}" ]; then
TARGET_DATE="$1"
if ! [[ "$TARGET_DATE" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
echo "ERROR: Invalid date format. Use YYYY-MM-DD, 'today', or no argument for yesterday."
exit 1
fi
else
TARGET_DATE=$(date -v-1d +%Y-%m-%d)
fi
log "========================================"
log "Screenpipe sync starting for: $TARGET_DATE"
log "========================================"
# ─── PREFLIGHT ────────────────────────────────────────────────────────────────
step "Preflight checks"
if [ ! -f "$DB_SRC" ]; then
log "ERROR: Source DB not found at $DB_SRC"; exit 1
fi
printf " %-20s %s (%s)\n" "Source DB:" "OK" "$(du -sh "$DB_SRC" | cut -f1)"
if [ ! -d "$NAS_MOUNT" ]; then
log "ERROR: NAS not mounted at $NAS_MOUNT"; exit 1
fi
printf " %-20s %s\n" "NAS mount:" "OK $NAS_MOUNT"
# Check if DB already synced for this date
DB_ALREADY_SYNCED=false
if [ -f "$NAS_DB" ]; then
EXISTING=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';" 2>/dev/null || echo "0")
if [ "$EXISTING" -gt "0" ]; then
log "Date $TARGET_DATE already has $EXISTING frames in archive — skipping DB sync"
DB_ALREADY_SYNCED=true
else
printf " %-20s %s (%s)\n" "Archive DB:" "exists" "$(du -sh "$NAS_DB" | cut -f1)"
fi
else
printf " %-20s %s\n" "Archive DB:" "will be created"
fi
# Source data dir for this date
DATA_SRC="$HOME/.screenpipe/data/data/$TARGET_DATE"
if [ -d "$DATA_SRC" ]; then
DATA_SIZE=$(du -sh "$DATA_SRC" | cut -f1)
DATA_FILES=$(ls "$DATA_SRC" | wc -l | tr -d ' ')
printf " %-20s %s (%s files, %s)\n" "Data dir:" "OK" "$DATA_FILES" "$DATA_SIZE"
else
printf " %-20s %s\n" "Data dir:" "not found — skipping file copy"
fi
# ─── DB SYNC ──────────────────────────────────────────────────────────────────
if [ "$DB_ALREADY_SYNCED" = false ]; then
# ─── COUNT SOURCE ROWS ────────────────────────────────────────────────────
step "Counting source rows for $TARGET_DATE"
SRC_FRAMES=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';")
SRC_ELEMENTS=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
SRC_UI=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '$TARGET_DATE';")
SRC_OCR=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM ocr_text WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
SRC_MEETINGS=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '$TARGET_DATE';")
printf " %-20s %s\n" "frames:" "$SRC_FRAMES"
printf " %-20s %s\n" "elements:" "$SRC_ELEMENTS"
printf " %-20s %s\n" "ui_events:" "$SRC_UI"
printf " %-20s %s\n" "ocr_text:" "$SRC_OCR"
printf " %-20s %s\n" "meetings:" "$SRC_MEETINGS"
if [ "$SRC_FRAMES" -eq "0" ]; then
log "No frames found for $TARGET_DATE — skipping DB sync"
DB_ALREADY_SYNCED=true
fi
fi
if [ "$DB_ALREADY_SYNCED" = false ]; then
# ─── INIT TABLES ──────────────────────────────────────────────────────────
step "Initialising tables, indexes, FTS"
run_sqlite_heredoc "creating tables" "
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
DETACH nas;
"
run_sqlite_heredoc "creating indexes" "
ATTACH '$NAS_DB' AS nas;
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestamp ON frames(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_frames_app_name ON frames(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_window_name ON frames(window_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_video_chunk_id ON frames(video_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_id ON elements(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_src_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_timestamp ON ui_events(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_app_name ON ui_events(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_frame_id ON ui_events(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_meetings_start ON meetings(meeting_start);
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
DETACH nas;
"
run_sqlite_heredoc "creating FTS tables" "
ATTACH '$NAS_DB' AS nas;
CREATE VIRTUAL TABLE IF NOT EXISTS nas.elements_fts USING fts5(
text, role, frame_id UNINDEXED,
content='elements', content_rowid='id', tokenize='unicode61'
);
CREATE VIRTUAL TABLE IF NOT EXISTS nas.frames_fts USING fts5(
full_text, app_name, window_name, browser_url, id UNINDEXED,
tokenize='unicode61'
);
CREATE VIRTUAL TABLE IF NOT EXISTS nas.ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
"
# ─── SYNC DATA ────────────────────────────────────────────────────────────
step "Syncing data for $TARGET_DATE"
run_sqlite_heredoc "video_chunks" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.video_chunks
SELECT * FROM main.video_chunks
WHERE id IN (
SELECT DISTINCT video_chunk_id FROM main.frames
WHERE date(timestamp) = '$TARGET_DATE' AND video_chunk_id IS NOT NULL
);
DETACH nas;
"
run_sqlite_heredoc "frames ($SRC_FRAMES rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "ocr_text ($SRC_OCR rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.ocr_text
SELECT o.* FROM main.ocr_text o
JOIN main.frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "ui_events ($SRC_UI rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.ui_events
SELECT * FROM main.ui_events WHERE date(timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "elements ($SRC_ELEMENTS rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.elements
SELECT e.* FROM main.elements e
JOIN main.frames f ON e.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "meetings ($SRC_MEETINGS rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.meetings
SELECT * FROM main.meetings WHERE date(meeting_start) = '$TARGET_DATE';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
step "Updating FTS indexes"
run_sqlite_heredoc "elements_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.elements_fts(rowid, text, role)
SELECT e.id, e.text, e.role
FROM nas.elements e
JOIN nas.frames f ON e.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE'
AND e.text IS NOT NULL;
DETACH nas;
"
run_sqlite_heredoc "frames_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.frames_fts(rowid, full_text, app_name, window_name, browser_url, id)
SELECT id, full_text, app_name, window_name, browser_url, id
FROM nas.frames
WHERE date(timestamp) = '$TARGET_DATE'
AND full_text IS NOT NULL;
DETACH nas;
"
run_sqlite_heredoc "ui_events_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.ui_events_fts(rowid, text_content, app_name, window_title, element_name)
SELECT id, text_content, app_name, window_title, element_name
FROM nas.ui_events
WHERE date(timestamp) = '$TARGET_DATE'
AND text_content IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
step "Verifying DB"
V_FRAMES=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';")
V_ELEMENTS=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
V_UI=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '$TARGET_DATE';")
V_OCR=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM ocr_text WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
V_MEETINGS=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '$TARGET_DATE';")
check "frames" "$V_FRAMES" "$SRC_FRAMES"
check "elements" "$V_ELEMENTS" "$SRC_ELEMENTS"
check "ui_events" "$V_UI" "$SRC_UI"
check "ocr_text" "$V_OCR" "$SRC_OCR"
check "meetings" "$V_MEETINGS" "$SRC_MEETINGS"
fi
# ─── COPY DATA FOLDER ─────────────────────────────────────────────────────────
# Always runs regardless of DB sync status
step "Copying data folder for $TARGET_DATE"
if [ -d "$DATA_SRC" ]; then
mkdir -p "$NAS_DATA/$TARGET_DATE"
RSYNC_START=$(date +%s)
printf " %-36s " "rsync $TARGET_DATE/ → NAS"
rsync -a --ignore-existing \
"$DATA_SRC/" \
"$NAS_DATA/$TARGET_DATE/" \
2>>"$LOG_FILE"
RSYNC_DUR=$(( $(date +%s) - RSYNC_START ))
COPIED_FILES=$(ls "$NAS_DATA/$TARGET_DATE" | wc -l | tr -d ' ')
SRC_FILES=$(ls "$DATA_SRC" | wc -l | tr -d ' ')
COPIED_SIZE=$(du -sh "$NAS_DATA/$TARGET_DATE" | cut -f1)
if [ "$COPIED_FILES" -eq "$SRC_FILES" ]; then
printf "\r %-36s ✓ %dm%02ds (%s files, %s)\n" \
"rsync $TARGET_DATE/ → NAS" \
"$(( RSYNC_DUR / 60 ))" "$(( RSYNC_DUR % 60 ))" \
"$COPIED_FILES" "$COPIED_SIZE" | tee -a "$LOG_FILE"
else
printf "\r %-36s ✗ %s / %s files\n" \
"rsync $TARGET_DATE/ → NAS" "$COPIED_FILES" "$SRC_FILES" | tee -a "$LOG_FILE"
fi
else
printf " %-36s %s\n" "rsync $TARGET_DATE/ → NAS" "skipped (no source dir)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
TOTAL_ELAPSED=$(( $(date +%s) - SCRIPT_START ))
DB_SIZE=$(du -sh "$NAS_DB" | cut -f1)
echo ""
log "Archive DB size: $DB_SIZE"
log "Total time: $(( TOTAL_ELAPSED / 60 ))m$(( TOTAL_ELAPSED % 60 ))s"
log "Sync complete for $TARGET_DATE"
log "========================================"
#!/bin/bash
# screenpipe_sync.sh
# Syncs Screenpipe SQLite data to a NAS archive database (append-only, no deletions).
# Also copies the day's video/frame data folder to the NAS.
#
# Usage:
# ./screenpipe_sync.sh # syncs yesterday (default)
# ./screenpipe_sync.sh 2026-04-15 # syncs a specific date
# ./screenpipe_sync.sh today # syncs today so far
#
# Cron example (runs at 3am daily):
# 0 3 * * * /Users/lukas/.screenpipe/screenpipe_sync.sh >> /Users/lukas/.screenpipe/sync.log 2>&1
set -euo pipefail
# ─── CONFIG ───────────────────────────────────────────────────────────────────
DB_SRC="${SCREENPIPE_DB:-$HOME/.screenpipe/db.sqlite}"
NAS_MOUNT="${NAS_MOUNT:-/Volumes/Test/screenpipe}"
NAS_DB="$NAS_MOUNT/archive.db"
NAS_DATA="$NAS_MOUNT/data"
LOG_FILE="$HOME/.screenpipe/sync.log"
# ──────────────────────────────────────────────────────────────────────────────
# ─── HELPERS ──────────────────────────────────────────────────────────────────
SCRIPT_START=$(date +%s)
log() {
local msg="[$(date '+%Y-%m-%d %H:%M:%S')] $*"
echo "$msg" | tee -a "$LOG_FILE"
}
step() {
local now=$(date +%s)
local elapsed=$(( now - SCRIPT_START ))
local min=$(( elapsed / 60 ))
local sec=$(( elapsed % 60 ))
printf "\n[+%02dm%02ds] ▶ %s\n" "$min" "$sec" "$*" | tee -a "$LOG_FILE"
}
run_sqlite_heredoc() {
local label="$1"
local sql="$2"
local start=$(date +%s)
printf " %-36s " "$label"
sqlite3 "$DB_SRC" <<< "$sql" &
local pid=$!
local spin=[PASSWORD] '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏')
local i=0
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# ─── DATE ARGUMENT ────────────────────────────────────────────────────────────
if [ "${1:-}" = "today" ]; then
TARGET_DATE=$(date +%Y-%m-%d)
elif [ -n "${1:-}" ]; then
TARGET_DATE="$1"
if ! [[ "$TARGET_DATE" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
echo "ERROR: Invalid date format. Use YYYY-MM-DD, 'today', or no argument for yesterday."
exit 1
fi
else
TARGET_DATE=$(date -v-1d +%Y-%m-%d)
fi
log "========================================"
log "Screenpipe sync starting for: $TARGET_DATE"
log "========================================"
# ─── PREFLIGHT ────────────────────────────────────────────────────────────────
step "Preflight checks"
if [ ! -f "$DB_SRC" ]; then
log "ERROR: Source DB not found at $DB_SRC"; exit 1
fi
printf " %-20s %s (%s)\n" "Source DB:" "OK" "$(du -sh "$DB_SRC" | cut -f1)"
if [ ! -d "$NAS_MOUNT" ]; then
log "ERROR: NAS not mounted at $NAS_MOUNT"; exit 1
fi
printf " %-20s %s\n" "NAS mount:" "OK $NAS_MOUNT"
# Check if DB already synced for this date
DB_ALREADY_SYNCED=false
if [ -f "$NAS_DB" ]; then
EXISTING=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';" 2>/dev/null || echo "0")
if [ "$EXISTING" -gt "0" ]; then
log "Date $TARGET_DATE already has $EXISTING frames in archive — skipping DB sync"
DB_ALREADY_SYNCED=true
else
printf " %-20s %s (%s)\n" "Archive DB:" "exists" "$(du -sh "$NAS_DB" | cut -f1)"
fi
else
printf " %-20s %s\n" "Archive DB:" "will be created"
fi
# Source data dir for this date
DATA_SRC="$HOME/.screenpipe/data/data/$TARGET_DATE"
if [ -d "$DATA_SRC" ]; then
DATA_SIZE=$(du -sh "$DATA_SRC" | cut -f1)
DATA_FILES=$(ls "$DATA_SRC" | wc -l | tr -d ' ')
printf " %-20s %s (%s files, %s)\n" "Data dir:" "OK" "$DATA_FILES" "$DATA_SIZE"
else
printf " %-20s %s\n" "Data dir:" "not found — skipping file copy"
fi
# ─── DB SYNC ──────────────────────────────────────────────────────────────────
if [ "$DB_ALREADY_SYNCED" = false ]; then
# ─── COUNT SOURCE ROWS ────────────────────────────────────────────────────
step "Counting source rows for $TARGET_DATE"
SRC_FRAMES=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';")
SRC_ELEMENTS=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
SRC_UI=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '$TARGET_DATE';")
SRC_OCR=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM ocr_text WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
SRC_MEETINGS=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '$TARGET_DATE';")
printf " %-20s %s\n" "frames:" "$SRC_FRAMES"
printf " %-20s %s\n" "elements:" "$SRC_ELEMENTS"
printf " %-20s %s\n" "ui_events:" "$SRC_UI"
printf " %-20s %s\n" "ocr_text:" "$SRC_OCR"
printf " %-20s %s\n" "meetings:" "$SRC_MEETINGS"
if [ "$SRC_FRAMES" -eq "0" ]; then
log "No frames found for $TARGET_DATE — skipping DB sync"
DB_ALREADY_SYNCED=true
fi
fi
if [ "$DB_ALREADY_SYNCED" = false ]; then
# ─── INIT TABLES ──────────────────────────────────────────────────────────
step "Initialising tables, indexes, FTS"
run_sqlite_heredoc "creating tables" "
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
DETACH nas;
"
run_sqlite_heredoc "creating indexes" "
ATTACH '$NAS_DB' AS nas;
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestamp ON frames(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_frames_app_name ON frames(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_window_name ON frames(window_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_video_chunk_id ON frames(video_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_id ON elements(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_src_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_timestamp ON ui_events(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_app_name ON ui_events(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_frame_id ON ui_events(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_meetings_start ON meetings(meeting_start);
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
DETACH nas;
"
run_sqlite_heredoc "creating FTS tables" "
ATTACH '$NAS_DB' AS nas;
CREATE VIRTUAL TABLE IF NOT EXISTS nas.elements_fts USING fts5(
text, role, frame_id UNINDEXED,
content='elements', content_rowid='id', tokenize='unicode61'
);
CREATE VIRTUAL TABLE IF NOT EXISTS nas.frames_fts USING fts5(
full_text, app_name, window_name, browser_url, id UNINDEXED,
tokenize='unicode61'
);
CREATE VIRTUAL TABLE IF NOT EXISTS nas.ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
"
# ─── SYNC DATA ────────────────────────────────────────────────────────────
step "Syncing data for $TARGET_DATE"
run_sqlite_heredoc "video_chunks" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.video_chunks
SELECT * FROM main.video_chunks
WHERE id IN (
SELECT DISTINCT video_chunk_id FROM main.frames
WHERE date(timestamp) = '$TARGET_DATE' AND video_chunk_id IS NOT NULL
);
DETACH nas;
"
run_sqlite_heredoc "frames ($SRC_FRAMES rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "ocr_text ($SRC_OCR rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.ocr_text
SELECT o.* FROM main.ocr_text o
JOIN main.frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "ui_events ($SRC_UI rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.ui_events
SELECT * FROM main.ui_events WHERE date(timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "elements ($SRC_ELEMENTS rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.elements
SELECT e.* FROM main.elements e
JOIN main.frames f ON e.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "meetings ($SRC_MEETINGS rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.meetings
SELECT * FROM main.meetings WHERE date(meeting_start) = '$TARGET_DATE';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
step "Updating FTS indexes"
run_sqlite_heredoc "elements_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.elements_fts(rowid, text, role)
SELECT e.id, e.text, e.role
FROM nas.elements e
JOIN nas.frames f ON e.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE'
AND e.text IS NOT NULL;
DETACH nas;
"
run_sqlite_heredoc "frames_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.frames_fts(rowid, full_text, app_name, window_name, browser_url, id)
SELECT id, full_text, app_name, window_name, browser_url, id
FROM nas.frames
WHERE date(timestamp) = '$TARGET_DATE'
AND full_text IS NOT NULL;
DETACH nas;
"
run_sqlite_heredoc "ui_events_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.ui_events_fts(rowid, text_content, app_name, window_title, element_name)
SELECT id, text_content, app_name, window_title, element_name
FROM nas.ui_events
WHERE date(timestamp) = '$TARGET_DATE'
AND text_content IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
step "Verifying DB"
V_FRAMES=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';")
V_ELEMENTS=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
V_UI=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '$TARGET_DATE';")
V_OCR=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM ocr_text WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
V_MEETINGS=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '$TARGET_DATE';")
check "frames" "$V_FRAMES" "$SRC_FRAMES"
check "elements" "$V_ELEMENTS" "$SRC_ELEMENTS"
check "ui_events" "$V_UI" "$SRC_UI"
check "ocr_text" "$V_OCR" "$SRC_OCR"
check "meetings" "$V_MEETINGS" "$SRC_MEETINGS"
fi
# ─── COPY DATA FOLDER ─────────────────────────────────────────────────────────
# Always runs regardless of DB sync status
step "Copying data folder for $TARGET_DATE"
if [ -d "$DATA_SRC" ]; then
mkdir -p "$NAS_DATA/$TARGET_DATE"
RSYNC_START=$(date +%s)
printf " %-36s " "rsync $TARGET_DATE/ → NAS"
rsync -a --ignore-existing \
"$DATA_SRC/" \
"$NAS_DATA/$TARGET_DATE/" \
2>>"$LOG_FILE"
RSYNC_DUR=$(( $(date +%s) - RSYNC_START ))
COPIED_FILES=$(ls "$NAS_DATA/$TARGET_DATE" | wc -l | tr -d ' ')
SRC_FILES=$(ls "$DATA_SRC" | wc -l | tr -d ' ')
COPIED_SIZE=$(du -sh "$NAS_DATA/$TARGET_DATE" | cut -f1)
if [ "$COPIED_FILES" -eq "$SRC_FILES" ]; then
printf "\r %-36s ✓ %dm%02ds (%s files, %s)\n" \
"rsync $TARGET_DATE/ → NAS" \
"$(( RSYNC_DUR / 60 ))" "$(( RSYNC_DUR % 60 ))" \
"$COPIED_FILES" "$COPIED_SIZE" | tee -a "$LOG_FILE"
else
printf "\r %-36s ✗ %s / %s files\n" \
"rsync $TARGET_DATE/ → NAS" "$COPIED_FILES" "$SRC_FILES" | tee -a "$LOG_FILE"
fi
else
printf " %-36s %s\n" "rsync $TARGET_DATE/ → NAS" "skipped (no source dir)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
TOTAL_ELAPSED=$(( $(date +%s) - SCRIPT_START ))
DB_SIZE=$(du -sh "$NAS_DB" | cut -f1)
echo ""
log "Archive DB size: $DB_SIZE"
log "Total time: $(( TOTAL_ELAPSED / 60 ))m$(( TOTAL_ELAPSED % 60 ))s"
log "Sync complete for $TARGET_DATE"
log "========================================"
lets add ability to jump…, Editor Group 2
Problems (⇧⌘M)
PROBLEMS
Output (⇧⌘U)
OUTPUT
Debug Console (⇧⌘Y)
DEBUG CONSOLE
Terminal (⌃`)
TERMINAL
Ports
PORTS
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
No Ports Forwarded
0
Notifications
Signed out
Signed out
Shell Script
Editor Language Status: $(copilot) No inline suggestion available, Inline suggestions
LF
UTF-8
Spaces: 2
Ln 320, Col 36
Screen Reader Optimized
git-commit Lukas Kovalik (23 hours ago)
Lukas Kovalik (23 hours ago)
Info: Downloading VS Code Server...
lets add ability to jump fro,m search to timeline so we can see the exact screen (also based on monitor and time
Session history
New session
Message actions
This session is being continued from a previous conversation that ran out of context. The summary below covers the earlier portion of the conversation.
Summary:
1. Primary Request and Intent:
The user has been developing a Screenpipe dashboard on a Synology NAS. Requests in chronological order:
- **Q1**: Are db.sqlite-shm and db.sqlite-wal used? → Explained WAL mode; cleaned up files.
- **Q2**: AND combination search (term1 + term2 must both appear) → Added "AND also" input field.
- **Q3**: Explain UTC time issue, show date in results, make Only/Skip apps use multiselect → Implemented all three.
- **Q4**: Point sqlite-web at archive.db, add second sqlite-web for db.sqlite → Updated docker-compose.yml, added two services on ports 8767/8768.
- **Q5**: "still the same" (container not picking up config) → Explained `up -d` vs `restart`.
- **Q6**: Add git, push to gitea.com/lakylak/screenpipe.git → Initialized repo, committed, pushed.
- **Q7**: Add Timetable tab with video playback and timeline → Full implementation with click-to-seek, auto-advancing chunks, legend.
- **Q8**: Add scroll/zoom on timeline, jump to specific time, better awareness → Implemented zoom (1×–32×), scrollable timeline, overview minimap, viewport indicator, Jump-to-time input, screenshot thumbnail.
- **Q9 (most recent)**: Make playing speed more than 8×, fix speed not working, show position on timeline → CSS fix done (wider playhead + time label style), remainder in progress.
2. Key Technical Concepts:
- **SQLite WAL mode**: db.sqlite-shm and db.sqlite-wal are WAL companion files; cleaned with `PRAGMA wal_checkpoint(TRUNCATE)`.
- **SQLite FTS5**: Space-separated terms = AND; `MATCH 'term1 term2'` requires both; OR requires explicit `OR` keyword.
- **FastAPI**: Python backend with route handlers in main.py, consumers pattern for DB queries.
- **Docker Compose**: App image is built (code baked in), not volume-mounted → requires `build` + `up -d` for code changes. `restart` doesn't re-read compose file — need `up -d`.
- **sqlite-web**: Read-only flag `-r`, pre-built image, no rebuild needed for config changes.
- **Video playback**: screenpipe records at 0.1–0.3 fps (timelapse). `seek = offset_index / fps` gives seconds into video chunk. ~245 chunks/day across 2 monitors. Videos may be encoded at standard fps making them very short at native speed.
- **Timeline rendering**: App-colored segments built by merging consecutive frames with same `app_name`. Percentage positions: `((ts - dayStart) / span * 100)%`.
- **Zoom/scroll**: Inner div width = `zoom × 100%`, outer wrapper has `overflow-x:auto`. Playhead position stays as % of inner div, which is correct at all zoom levels.
- **Timer-based speed**: For speed > 2×, browser `playbackRate` is unreliable on low-FPS video; correct approach is `setInterval` advancing `video.currentTime` by `speed * interval_ms / 1000` seconds per tick.
- **UTC vs local time**: Backend treats `time_from`/`time_to` as UTC. Frontend converts with `localTimeToUtc()` before sending.
- **Git**: `#recycle/` in .gitignore treated as comment — must escape as `\#recycle/`.
3. Files and Code Sections:
- **`/volume1/screenpipe/app/main.py`**
- Added `/api/apps` endpoint (all unique app names from frames table)
- Added `/api/timetable` endpoint (frames + video URLs + screenshot URLs per device per date)
- `/api/timetable` response structure: `{frames: [{ts, app, win, video_url, seek, screenshot_url}], devices: [...], device: "..."}`
- Key snippet:
```python
@app.get("/api/timetable"
)
async def timetable_data(d: str | None = Query(None), device: str | None = Query(None)):
...
rows = conn.execute(f"""
SELECT f.timestamp AS ts, f.app_name AS app, f.window_name AS win,
f.offset_index, f.snapshot_path,
vc.file_path AS video_path, vc.fps AS video_fps
FROM frames f
JOIN video_chunks vc ON f.video_chunk_id = vc.id
WHERE f.timestamp >= ? AND f.timestamp < ?
AND f.video_chunk_id IS NOT NULL {dev_clause}
ORDER BY f.timestamp
""", params).fetchall()
# seek = offset_index / fps, screenshot_url from _snapshot_to_url(snapshot_path)
```
- **`/volume1/screenpipe/app/docker-compose.yml`**
- Changed sqlite-web service name to `sqlite-web-archive` → port 8767 → `/data/archive.db`
- Added `sqlite-web-live` → port 8768 → `/data/db.sqlite`
- screenpipe-app: port 8766, `DB_PATH: /data/db.sqlite`, `TZ: Europe/Sofia`
- **`/volume1/screenpipe/app/static/index.html`** (single large file with all CSS/HTML/JS)
- **Search enhancements**:
- Added `id="sq2"` "AND also" input between search-row1 and search-row2
- Replaced `sOnlyApps`/`sSkipApps` text inputs with custom multiselect components (`id="msOnlyApps"`, `id="msSkipApps"`)
- Updated `buildUrl()` to combine `q + " " + q2` and convert times with `localTimeToUtc()`
- Added `fmtDateTime(ts)` showing "Apr 20 14:08" format
- Added `localTimeToUtc(timeStr)` converting local HH:MM to UTC
- Multiselect state: `const _msState = { msOnlyApps: new Set(), msSkipApps: new Set() }`
- **Timetable tab** (new page):
- Tab button added between Work Report and AI Summary
- `showPage` array updated: `['activity','search','audio','report','timetable','summary']`
- `refresh()` calls `loadTimetable()` when on timetable page
- **Timetable CSS** (key styles):
```css
.tt-scroll-wrap { overflow-x:auto; ... scrollbar-width:thin; }
.tt-inner { position:relative; height:52px; } /* width set dynamically */
.tt-playhead { position:absolute; top:0; width:3px; height:36px; background:white; box-shadow:0 0 8px rgba(255,255,255,.9); z-index:10; pointer-events:none; display:none; }
.tt-playhead-time { position:absolute; top:2px; font-size:9px; font-weight:600; color:white; background:rgba(0,0,0,.75); padding:1px 4px; border-radius:2px; white-space:nowrap; transform:translateX(-50%); z-index:12; pointer-events:none; display:none; }
.tt-overview-wrap { position:relative; height:14px; ... cursor:pointer; }
.tt-overview-vp { position:absolute; background:rgba(255,255,255,0.12); border:1px solid rgba(255,255,255,0.4); }
```
- **Timetable JS state variables**:
```javascript
let _ttFrames = [], _ttChunks = [], _ttCurChunk = -1;
let _ttDayStart = 0, _ttDayEnd = 0, _ttZoom = 1;
const _ttAppColors = {};
const TT_ZOOMS = [1, 2, 4, 8, 16, 32];
const TT_TICK_MIN = {1:30, 2:15, 4:10, 8:5, 16:2, 32:1};
```
- **Key JS functions**:
- `loadTimetable()` — fetches `/api/timetable`, groups chunks, renders
- `ttZoom(dir)` — changes zoom level, updates inner width, re-renders ticks, scrolls to playhead
- `ttTimelineClick(e)` — uses `inner.getBoundingClientRect()` (works correctly when scrolled)
- `ttOverviewClick(e)` — scrolls timeline + seeks video
- `ttUpdateOverviewVp()` — updates white viewport rect using `wrap.scrollLeft / inner.scrollWidth`
- `ttJumpToTime()` — parses time input, converts to ms, calls `ttSeekToMs`
- `ttSeekToMs(tsMs)` — binary-searches nearest frame, loads chunk, seeks video
- `_ttScrollToPlayhead(force)` — scrolls wrap so playhead stays at ~35% from left when Follow is checked
- `_ttMovePlayhead(tsMs)` — sets `ph.style.left` as percentage, calls `_ttScrollToPlayhead`
- `_ttShowNow(f)` — updates screenshot thumbnail + now-text div
- `ttSyncBtn()` — syncs play/pause button text
- Keyboard: Space=play/pause, ←/→=±10s, Ctrl+←/→=±30s, +/-=zoom
- **`/volume1/screenpipe/.gitignore`**
```
*.db, *.sqlite, *.sqlite-shm, *.sqlite-wal
data/, \#recycle/,
@eaDir/
app_settings.json, app/.env
__pycache__/, *.pyc, .DS_Store
```
4. Errors and Fixes:
- **`#recycle/` in .gitignore treated as comment**: `#` starts a comment in .gitignore. Fixed by escaping: `\#recycle/`. Also had to `git rm --cached "#recycle/desktop.ini"` to unstage it.
- **`sudo docker compose restart sqlite-web` didn't apply config change**: `restart` reuses existing container config, doesn't re-read compose file. Fix: `sudo docker compose up -d` recreates containers with new config.
- **Orphan container holding port 8767**: Old `screenpipe-sqlweb` container still running after rename. Fix: `sudo docker compose up -d --remove-orphans`.
- **`sudo docker` not accessible from Claude Code**: Interactive sudo required. User runs commands in NAS terminal.
- **`git config --global --add safe.directory /volume1/screenpipe`**: Required due to dubious ownership of NAS volume directory.
5. Problem Solving:
- **Time zone confusion in search**: Backend uses UTC for time_from/time_to; frontend displays local time. Solved by `localTimeToUtc()` converting before API call, and showing date+time in results.
- **sqlite-web not showing April 17–21 data**: Container was pointing at db.sqlite (old config), not archive.db. Fixed by updating docker-compose.yml + `up -d`.
- **Video playback speed**: Browser `video.playbackRate` is capped (~16× max in Chrome) and performs poorly for very low FPS (0.1–0.3 fps) screenpipe videos. Each chunk may only be 1–2 seconds of wall-clock encoded video, playing through instantly. Solution: implement timer-based frame-jumping for speed > 2× (in progress).
- **Playhead visibility**: White 2px line was hard to see. Fixed CSS to 3px width + stronger box-shadow + added `.tt-playhead-time` overlay label style.
6. All User Messages:
- "do we use db.sqlite-shm and db.sqlite-wal for anything right now? [image of search UI] Lets add ability to search with combination... Explain how does the search work time seems to work in utc maybe display date next to the time in results. Make only apps and skip apps multiselect with all available apps."
- "doi I need to restart?"
- "there is sudo docker compose"
- "no still the same"
- "add git. I have created gitea repo https://gitea.com/lakylak/screenpipe.git"
- "just do it" (re: git push)
- "how to make sure data in :8767 are accurate and point to archive.db"
- "I can't see older than 16th there should 21st of april. In http://[IP_ADDRESS]:8766/ I can see all but not on sqlite viewer http://[IP_ADDRESS]:8767"
- "ok lets add additional port to read db.sqlite, I would like to see the structure of official db that reads db.sqlite db and one for archive"
- [docker compose output showing orphan container error]
- "looks great. I want to have ability to scroll left and right and also to jump to specific time. I want to be more aware to what I see. Still it should be fast"
- "lets make the playing speed more than 8x"
- "still playing speed is not showing properly still just in one second. also I want to see in timeline where I am"
7. Pending Tasks:
- **Playback speed fix** (in progress, partially done):
- Add `<div class="tt-playhead-time" id="ttPlayheadTime"></div>` inside `ttInner` HTML
- Implement `_ttStartSpeedTimer(speed)` / `_ttStopSpeedTimer()` / `ttSetSpeed(speed)` functions
- Update speed select `onchange` to call `ttSetSpeed(+this.value)`
- Add 64× option to speed select
- Update `_ttMovePlayhead` to also update `ttPlayheadTime` label
- Update `ttSyncBtn` to start/stop timer based on play state + speed
- Update `ttNextChunk` and `ttSeekToMs` to stop timer (restarted by onplay → ttSyncBtn)
- Rebuild Docker image after changes
8. Current Work:
Working on fixing two issues with the Timetable tab:
1. **Playback speed**: `video.playbackRate` doesn't work well for low-FPS screenpipe videos. The plan is to implement a `setInterval`-based frame-jumper for speed > 2× that advances `video.currentTime` by `speed * intervalMs / 1000` every 100–200ms, bypassing browser playbackRate limits.
2. **Timeline position indicator**: Playhead not prominent enough.
**CSS already changed** in `/volume1/screenpipe/app/static/index.html`:
```css
.tt-playhead { position:absolute; top:0; width:3px; height:36px; background:white; box-shadow:0 0 8px rgba(255,255,255,.9); z-index:10; pointer-events:none; display:none; }
.tt-playhead-time { position:absolute; top:2px; font-size:9px; font-weight:600; color:white; background:rgba(0,0,0,.75); padding:1px 4px; border-radius:2px; white-space:nowrap; transform:translateX(-50%); z-index:12; pointer-events:none; display:none; }
```
Session was interrupted by summary request after this CSS edit, mid-implementation.
9. Optional Next Step:
Continuing the fix for: "still playing speed is not showing properly still just in one second. also I want to see in timeline where I am"
The next steps in order are:
1. Add `<div class="tt-playhead-time" id="ttPlayheadTime"></div>` to the HTML inside `#ttInner` (after the existing `.tt-playhead` div)
2. Update `_ttMovePlayhead` to set `ttPlayheadTime` position and text content with `fmtTime()`
3. Add timer-based speed system to JS (new functions `_ttStartSpeedTimer`, `_ttStopSpeedTimer`, `ttSetSpeed`)
4. Update speed select's `onchange` to `ttSetSpeed(+this.value)` and add 64× option
5. Update `ttSyncBtn`, `ttNextChunk`, `ttSeekToMs` to integrate with timer
6. Rebuild: `sudo docker compose build screenpipe-app && sudo docker compose up -d screenpipe-app`
If you need specific details from before compaction (like exact code snippets, error messages, or content you generated), read the full transcript at: /home/Adm1n/.claude/projects/-volume1-screenpipe/7777f46e-1e40-4051-b4bb-f43aedd59556.jsonl
Continue the conversation from where it left off without asking the user any further questions. Resume directly — do not acknowledge the summary, do not recap what was happening, do not preface with "I'll continue" or similar. Pick up the last task as if the break never happened.
Thinking
Thinking
Bash
Find timetable speed and playhead related code
IN
grep -n "tt-playhead\|ttPlayhead\|ttInner\|_ttMovePlayhead\|ttSetSpeed\|_ttStartSpeed\|_ttStopSpeed\|ttSyncBtn\|playbackRate\|speed.*select\|spdSel\|ttSpeed" /volume1/screenpipe/app/static/index.html | head -80
Copy code to clipboard
OUT
207:.tt-playhead { position:absolute; top:0; width:3px; height:36px; background:white; box-shadow:0 0 8px rgba(255,255,255,.9); z-index:10; pointer-events:none; display:none; }
208:.tt-playhead-time { position:absolute; top:2px; font-size:9px; font-weight:600; color:white; background:rgba(0,0,0,.75); padding:1px 4px; border-radius:2px; white-space:nowrap; transform:translateX(-50%); z-index:12; pointer-events:none; display:none; }
580: <div class="tt-inner" id="ttInner" onclick="ttTimelineClick(event)">
583: <div class="tt-playhead" id="ttPlayhead"></div>
598: onpause="ttSyncBtn()"
599: onplay="ttSyncBtn()">
607: <select id="ttSpeed" onchange="document.getElementById('ttVideo').playbackRate=+this.value">
1624: document.getElementById('ttInner').style.width = '100%';
1632: document.getElementById('ttPlayhead').style.display = 'none';
1694: document.getElementById('ttInner').style.width = (_ttZoom * 100) + '%';
1700: const inner = document.getElementById('ttInner');
1710: const inner = document.getElementById('ttInner');
1718: const inner = document.getElementById('ttInner');
1750: _ttMovePlayhead(new Date(best.ts).getTime());
1772: _ttMovePlayhead(new Date(best.ts).getTime());
1791:function _ttMovePlayhead(tsMs) {
1792: const ph = document.getElementById('ttPlayhead');
1802: const ph = document.getElementById('ttPlayhead');
1805: const inner = document.getElementById('ttInner');
1819:function ttSyncBtn() {
Read
index.html
index.html
(lines 576-625)
Read
index.html
index.html
(lines 1786-1865)
Thinking
Thinking
Bash
Find chunk loading and playhead update functions
IN
grep -n "ttUpdatePlayhead\|ttNextChunk\|ttLoadChunk\|_ttCurChunk\|_ttChunks\|_ttFrames" /volume1/screenpipe/app/static/index.html | head -50
Copy code to clipboard
OUT
596: onended="ttNextChunk()"
597: ontimeupdate="ttUpdatePlayhead()"
1569:let _ttFrames = [];
1570:let _ttChunks = [];
1571:let _ttCurChunk = -1;
1607: _ttFrames = data.frames;
1609: for (const f of _ttFrames) {
1613: _ttChunks = [...chunkMap.values()];
1614: _ttCurChunk = -1;
1616: _ttDayStart = new Date(_ttFrames[0].ts).getTime();
1617: _ttDayEnd = new Date(_ttFrames[_ttFrames.length - 1].ts).getTime();
1620: for (const f of _ttFrames) _ttColor(f.app);
1640: for (const f of _ttFrames) {
1736: if (!_ttFrames.length) return;
1737: let best = _ttFrames[0], minDiff = Infinity;
1738: for (const f of _ttFrames) {
1742: const ci = _ttChunks.findIndex(ch => ch[0].video_url === best.video_url);
1744: _ttCurChunk = ci;
1753:function ttNextChunk() {
1754: if (_ttCurChunk + 1 >= _ttChunks.length) return;
1755: _ttCurChunk++;
1757: video.src = _ttChunks[_ttCurChunk][0].video_url;
1762:function ttUpdatePlayhead() {
1764: if (_ttCurChunk < 0 || _ttCurChunk >= _ttChunks.length) return;
1765: const chunk = _ttChunks[_ttCurChunk];
Read
index.html
index.html
(lines 1754-1793)
Thinking
Thinking
Read
index.html
index.html
(lines 1701-1760)
Thinking
Thinking
Read
index.html
index.html
(lines 1561-1640)
Thinking
Thinking
Bash
Find time formatting functions
IN
grep -n "function fmtTime\|function fmtDate\|function _fmt\|localTimeToUtc\|fmtDateTime" /volume1/screenpipe/app/static/index.html | head -20
Copy code to clipboard
OUT
1088: if (tf) url += `&time_from=${localTimeToUtc(tf)}`;
1089: if (tt) url += `&time_to=${localTimeToUtc(tt)}`;
1153: let meta = `<span style="color:var(--muted)">${fmtDateTime(r.timestamp)}</span>${srcBadge}`;
1166: meta = `<span style="color:var(--muted)">${fmtDateTime(r.timestamp)}</span>${srcBadge} <span class="badge ${r.is_input_device?'mic':'sys'}">${r.is_input_device?'MIC':'SYS'}</span>`;
1307:function fmtTime(ts) {
1312:function fmtDateTime(ts) {
1320:function localTimeToUtc(timeStr) {
1778:function _fmtSec(s) {
1788: `${fmtDateTime(f.ts)} · ${f.app}${f.win ? ' / ' + f.win : ''}`;
Read
index.html
index.html
(lines 1308-1327)
Thinking
Thinking
Now I have everything I need. I'll implement the frame-by-frame timer system that replaces
video.playbackRate
with wall-clock accurate playback, plus add the playhead time label. Let me make the changes:
Edit
index.html
index.html
Added 1 line...
|
Code
|
screenpipe_sync.sh — screenpipe [SSH: nas]
|
NULL
|
81026
|
|
Explorer (⇧⌘E)
Search (⇧⌘F)
Source Control (⌃⇧ Explorer (⇧⌘E)
Search (⇧⌘F)
Source Control (⌃⇧G) - 2 pending changes
2
Run and Debug (⇧⌘D)
Remote Explorer
Extensions (⇧⌘X) - 2 require update, 1 requires restart
3
Claude Code
Containers
EXPLORER
EXPLORER
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
SCREENPIPE [SSH: NAS]
#recycle
app
data
pipes
.gitignore
app_settings.json
archive.db
db.sqlite
screenpipe_sync.sh
screenpipe.db
Outline Section
OUTLINE
OUTLINE
Timeline Section
TIMELINE
TIMELINE
app_settings.json, Editor Group 1
screenpipe_sync.sh, Editor Group 1
db.sqlite-shm, preview, Editor Group 1
#!/bin/bash
# screenpipe_sync.sh
# Syncs Screenpipe SQLite data to a NAS archive database (append-only, no deletions).
# Also copies the day's video/frame data folder to the NAS.
#
# Usage:
# ./screenpipe_sync.sh # syncs yesterday (default)
# ./screenpipe_sync.sh 2026-04-15 # syncs a specific date
# ./screenpipe_sync.sh today # syncs today so far
#
# Cron example (runs at 3am daily):
# 0 3 * * * /Users/lukas/.screenpipe/screenpipe_sync.sh >> /Users/lukas/.screenpipe/sync.log 2>&1
set -euo pipefail
# ─── CONFIG ───────────────────────────────────────────────────────────────────
DB_SRC="${SCREENPIPE_DB:-$HOME/.screenpipe/db.sqlite}"
NAS_MOUNT="${NAS_MOUNT:-/Volumes/Test/screenpipe}"
NAS_DB="$NAS_MOUNT/archive.db"
NAS_DATA="$NAS_MOUNT/data"
LOG_FILE="$HOME/.screenpipe/sync.log"
# ──────────────────────────────────────────────────────────────────────────────
# ─── HELPERS ──────────────────────────────────────────────────────────────────
SCRIPT_START=$(date +%s)
log() {
local msg="[$(date '+%Y-%m-%d %H:%M:%S')] $*"
echo "$msg" | tee -a "$LOG_FILE"
}
step() {
local now=$(date +%s)
local elapsed=$(( now - SCRIPT_START ))
local min=$(( elapsed / 60 ))
local sec=$(( elapsed % 60 ))
printf "\n[+%02dm%02ds] ▶ %s\n" "$min" "$sec" "$*" | tee -a "$LOG_FILE"
}
run_sqlite_heredoc() {
local label="$1"
local sql="$2"
local start=$(date +%s)
printf " %-36s " "$label"
sqlite3 "$DB_SRC" <<< "$sql" &
local pid=$!
local spin=[PASSWORD] '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏')
local i=0
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# ─── DATE ARGUMENT ────────────────────────────────────────────────────────────
if [ "${1:-}" = "today" ]; then
TARGET_DATE=$(date +%Y-%m-%d)
elif [ -n "${1:-}" ]; then
TARGET_DATE="$1"
if ! [[ "$TARGET_DATE" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
echo "ERROR: Invalid date format. Use YYYY-MM-DD, 'today', or no argument for yesterday."
exit 1
fi
else
TARGET_DATE=$(date -v-1d +%Y-%m-%d)
fi
log "========================================"
log "Screenpipe sync starting for: $TARGET_DATE"
log "========================================"
# ─── PREFLIGHT ────────────────────────────────────────────────────────────────
step "Preflight checks"
if [ ! -f "$DB_SRC" ]; then
log "ERROR: Source DB not found at $DB_SRC"; exit 1
fi
printf " %-20s %s (%s)\n" "Source DB:" "OK" "$(du -sh "$DB_SRC" | cut -f1)"
if [ ! -d "$NAS_MOUNT" ]; then
log "ERROR: NAS not mounted at $NAS_MOUNT"; exit 1
fi
printf " %-20s %s\n" "NAS mount:" "OK $NAS_MOUNT"
# Check if DB already synced for this date
DB_ALREADY_SYNCED=false
if [ -f "$NAS_DB" ]; then
EXISTING=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';" 2>/dev/null || echo "0")
if [ "$EXISTING" -gt "0" ]; then
log "Date $TARGET_DATE already has $EXISTING frames in archive — skipping DB sync"
DB_ALREADY_SYNCED=true
else
printf " %-20s %s (%s)\n" "Archive DB:" "exists" "$(du -sh "$NAS_DB" | cut -f1)"
fi
else
printf " %-20s %s\n" "Archive DB:" "will be created"
fi
# Source data dir for this date
DATA_SRC="$HOME/.screenpipe/data/data/$TARGET_DATE"
if [ -d "$DATA_SRC" ]; then
DATA_SIZE=$(du -sh "$DATA_SRC" | cut -f1)
DATA_FILES=$(ls "$DATA_SRC" | wc -l | tr -d ' ')
printf " %-20s %s (%s files, %s)\n" "Data dir:" "OK" "$DATA_FILES" "$DATA_SIZE"
else
printf " %-20s %s\n" "Data dir:" "not found — skipping file copy"
fi
# ─── DB SYNC ──────────────────────────────────────────────────────────────────
if [ "$DB_ALREADY_SYNCED" = false ]; then
# ─── COUNT SOURCE ROWS ────────────────────────────────────────────────────
step "Counting source rows for $TARGET_DATE"
SRC_FRAMES=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';")
SRC_ELEMENTS=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
SRC_UI=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '$TARGET_DATE';")
SRC_OCR=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM ocr_text WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
SRC_MEETINGS=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '$TARGET_DATE';")
printf " %-20s %s\n" "frames:" "$SRC_FRAMES"
printf " %-20s %s\n" "elements:" "$SRC_ELEMENTS"
printf " %-20s %s\n" "ui_events:" "$SRC_UI"
printf " %-20s %s\n" "ocr_text:" "$SRC_OCR"
printf " %-20s %s\n" "meetings:" "$SRC_MEETINGS"
if [ "$SRC_FRAMES" -eq "0" ]; then
log "No frames found for $TARGET_DATE — skipping DB sync"
DB_ALREADY_SYNCED=true
fi
fi
if [ "$DB_ALREADY_SYNCED" = false ]; then
# ─── INIT TABLES ──────────────────────────────────────────────────────────
step "Initialising tables, indexes, FTS"
run_sqlite_heredoc "creating tables" "
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
DETACH nas;
"
run_sqlite_heredoc "creating indexes" "
ATTACH '$NAS_DB' AS nas;
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestamp ON frames(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_frames_app_name ON frames(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_window_name ON frames(window_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_video_chunk_id ON frames(video_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_id ON elements(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_src_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_timestamp ON ui_events(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_app_name ON ui_events(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_frame_id ON ui_events(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_meetings_start ON meetings(meeting_start);
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
DETACH nas;
"
run_sqlite_heredoc "creating FTS tables" "
ATTACH '$NAS_DB' AS nas;
CREATE VIRTUAL TABLE IF NOT EXISTS nas.elements_fts USING fts5(
text, role, frame_id UNINDEXED,
content='elements', content_rowid='id', tokenize='unicode61'
);
CREATE VIRTUAL TABLE IF NOT EXISTS nas.frames_fts USING fts5(
full_text, app_name, window_name, browser_url, id UNINDEXED,
tokenize='unicode61'
);
CREATE VIRTUAL TABLE IF NOT EXISTS nas.ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
"
# ─── SYNC DATA ────────────────────────────────────────────────────────────
step "Syncing data for $TARGET_DATE"
run_sqlite_heredoc "video_chunks" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.video_chunks
SELECT * FROM main.video_chunks
WHERE id IN (
SELECT DISTINCT video_chunk_id FROM main.frames
WHERE date(timestamp) = '$TARGET_DATE' AND video_chunk_id IS NOT NULL
);
DETACH nas;
"
run_sqlite_heredoc "frames ($SRC_FRAMES rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "ocr_text ($SRC_OCR rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.ocr_text
SELECT o.* FROM main.ocr_text o
JOIN main.frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "ui_events ($SRC_UI rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.ui_events
SELECT * FROM main.ui_events WHERE date(timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "elements ($SRC_ELEMENTS rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.elements
SELECT e.* FROM main.elements e
JOIN main.frames f ON e.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "meetings ($SRC_MEETINGS rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.meetings
SELECT * FROM main.meetings WHERE date(meeting_start) = '$TARGET_DATE';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
step "Updating FTS indexes"
run_sqlite_heredoc "elements_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.elements_fts(rowid, text, role)
SELECT e.id, e.text, e.role
FROM nas.elements e
JOIN nas.frames f ON e.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE'
AND e.text IS NOT NULL;
DETACH nas;
"
run_sqlite_heredoc "frames_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.frames_fts(rowid, full_text, app_name, window_name, browser_url, id)
SELECT id, full_text, app_name, window_name, browser_url, id
FROM nas.frames
WHERE date(timestamp) = '$TARGET_DATE'
AND full_text IS NOT NULL;
DETACH nas;
"
run_sqlite_heredoc "ui_events_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.ui_events_fts(rowid, text_content, app_name, window_title, element_name)
SELECT id, text_content, app_name, window_title, element_name
FROM nas.ui_events
WHERE date(timestamp) = '$TARGET_DATE'
AND text_content IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
step "Verifying DB"
V_FRAMES=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';")
V_ELEMENTS=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
V_UI=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '$TARGET_DATE';")
V_OCR=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM ocr_text WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
V_MEETINGS=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '$TARGET_DATE';")
check "frames" "$V_FRAMES" "$SRC_FRAMES"
check "elements" "$V_ELEMENTS" "$SRC_ELEMENTS"
check "ui_events" "$V_UI" "$SRC_UI"
check "ocr_text" "$V_OCR" "$SRC_OCR"
check "meetings" "$V_MEETINGS" "$SRC_MEETINGS"
fi
# ─── COPY DATA FOLDER ─────────────────────────────────────────────────────────
# Always runs regardless of DB sync status
step "Copying data folder for $TARGET_DATE"
if [ -d "$DATA_SRC" ]; then
mkdir -p "$NAS_DATA/$TARGET_DATE"
RSYNC_START=$(date +%s)
printf " %-36s " "rsync $TARGET_DATE/ → NAS"
rsync -a --ignore-existing \
"$DATA_SRC/" \
"$NAS_DATA/$TARGET_DATE/" \
2>>"$LOG_FILE"
RSYNC_DUR=$(( $(date +%s) - RSYNC_START ))
COPIED_FILES=$(ls "$NAS_DATA/$TARGET_DATE" | wc -l | tr -d ' ')
SRC_FILES=$(ls "$DATA_SRC" | wc -l | tr -d ' ')
COPIED_SIZE=$(du -sh "$NAS_DATA/$TARGET_DATE" | cut -f1)
if [ "$COPIED_FILES" -eq "$SRC_FILES" ]; then
printf "\r %-36s ✓ %dm%02ds (%s files, %s)\n" \
"rsync $TARGET_DATE/ → NAS" \
"$(( RSYNC_DUR / 60 ))" "$(( RSYNC_DUR % 60 ))" \
"$COPIED_FILES" "$COPIED_SIZE" | tee -a "$LOG_FILE"
else
printf "\r %-36s ✗ %s / %s files\n" \
"rsync $TARGET_DATE/ → NAS" "$COPIED_FILES" "$SRC_FILES" | tee -a "$LOG_FILE"
fi
else
printf " %-36s %s\n" "rsync $TARGET_DATE/ → NAS" "skipped (no source dir)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
TOTAL_ELAPSED=$(( $(date +%s) - SCRIPT_START ))
DB_SIZE=$(du -sh "$NAS_DB" | cut -f1)
echo ""
log "Archive DB size: $DB_SIZE"
log "Total time: $(( TOTAL_ELAPSED / 60 ))m$(( TOTAL_ELAPSED % 60 ))s"
log "Sync complete for $TARGET_DATE"
log "========================================"
#!/bin/bash
# screenpipe_sync.sh
# Syncs Screenpipe SQLite data to a NAS archive database (append-only, no deletions).
# Also copies the day's video/frame data folder to the NAS.
#
# Usage:
# ./screenpipe_sync.sh # syncs yesterday (default)
# ./screenpipe_sync.sh 2026-04-15 # syncs a specific date
# ./screenpipe_sync.sh today # syncs today so far
#
# Cron example (runs at 3am daily):
# 0 3 * * * /Users/lukas/.screenpipe/screenpipe_sync.sh >> /Users/lukas/.screenpipe/sync.log 2>&1
set -euo pipefail
# ─── CONFIG ───────────────────────────────────────────────────────────────────
DB_SRC="${SCREENPIPE_DB:-$HOME/.screenpipe/db.sqlite}"
NAS_MOUNT="${NAS_MOUNT:-/Volumes/Test/screenpipe}"
NAS_DB="$NAS_MOUNT/archive.db"
NAS_DATA="$NAS_MOUNT/data"
LOG_FILE="$HOME/.screenpipe/sync.log"
# ──────────────────────────────────────────────────────────────────────────────
# ─── HELPERS ──────────────────────────────────────────────────────────────────
SCRIPT_START=$(date +%s)
log() {
local msg="[$(date '+%Y-%m-%d %H:%M:%S')] $*"
echo "$msg" | tee -a "$LOG_FILE"
}
step() {
local now=$(date +%s)
local elapsed=$(( now - SCRIPT_START ))
local min=$(( elapsed / 60 ))
local sec=$(( elapsed % 60 ))
printf "\n[+%02dm%02ds] ▶ %s\n" "$min" "$sec" "$*" | tee -a "$LOG_FILE"
}
run_sqlite_heredoc() {
local label="$1"
local sql="$2"
local start=$(date +%s)
printf " %-36s " "$label"
sqlite3 "$DB_SRC" <<< "$sql" &
local pid=$!
local spin=[PASSWORD] '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏')
local i=0
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# ─── DATE ARGUMENT ────────────────────────────────────────────────────────────
if [ "${1:-}" = "today" ]; then
TARGET_DATE=$(date +%Y-%m-%d)
elif [ -n "${1:-}" ]; then
TARGET_DATE="$1"
if ! [[ "$TARGET_DATE" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
echo "ERROR: Invalid date format. Use YYYY-MM-DD, 'today', or no argument for yesterday."
exit 1
fi
else
TARGET_DATE=$(date -v-1d +%Y-%m-%d)
fi
log "========================================"
log "Screenpipe sync starting for: $TARGET_DATE"
log "========================================"
# ─── PREFLIGHT ────────────────────────────────────────────────────────────────
step "Preflight checks"
if [ ! -f "$DB_SRC" ]; then
log "ERROR: Source DB not found at $DB_SRC"; exit 1
fi
printf " %-20s %s (%s)\n" "Source DB:" "OK" "$(du -sh "$DB_SRC" | cut -f1)"
if [ ! -d "$NAS_MOUNT" ]; then
log "ERROR: NAS not mounted at $NAS_MOUNT"; exit 1
fi
printf " %-20s %s\n" "NAS mount:" "OK $NAS_MOUNT"
# Check if DB already synced for this date
DB_ALREADY_SYNCED=false
if [ -f "$NAS_DB" ]; then
EXISTING=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';" 2>/dev/null || echo "0")
if [ "$EXISTING" -gt "0" ]; then
log "Date $TARGET_DATE already has $EXISTING frames in archive — skipping DB sync"
DB_ALREADY_SYNCED=true
else
printf " %-20s %s (%s)\n" "Archive DB:" "exists" "$(du -sh "$NAS_DB" | cut -f1)"
fi
else
printf " %-20s %s\n" "Archive DB:" "will be created"
fi
# Source data dir for this date
DATA_SRC="$HOME/.screenpipe/data/data/$TARGET_DATE"
if [ -d "$DATA_SRC" ]; then
DATA_SIZE=$(du -sh "$DATA_SRC" | cut -f1)
DATA_FILES=$(ls "$DATA_SRC" | wc -l | tr -d ' ')
printf " %-20s %s (%s files, %s)\n" "Data dir:" "OK" "$DATA_FILES" "$DATA_SIZE"
else
printf " %-20s %s\n" "Data dir:" "not found — skipping file copy"
fi
# ─── DB SYNC ──────────────────────────────────────────────────────────────────
if [ "$DB_ALREADY_SYNCED" = false ]; then
# ─── COUNT SOURCE ROWS ────────────────────────────────────────────────────
step "Counting source rows for $TARGET_DATE"
SRC_FRAMES=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';")
SRC_ELEMENTS=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
SRC_UI=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '$TARGET_DATE';")
SRC_OCR=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM ocr_text WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
SRC_MEETINGS=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '$TARGET_DATE';")
printf " %-20s %s\n" "frames:" "$SRC_FRAMES"
printf " %-20s %s\n" "elements:" "$SRC_ELEMENTS"
printf " %-20s %s\n" "ui_events:" "$SRC_UI"
printf " %-20s %s\n" "ocr_text:" "$SRC_OCR"
printf " %-20s %s\n" "meetings:" "$SRC_MEETINGS"
if [ "$SRC_FRAMES" -eq "0" ]; then
log "No frames found for $TARGET_DATE — skipping DB sync"
DB_ALREADY_SYNCED=true
fi
fi
if [ "$DB_ALREADY_SYNCED" = false ]; then
# ─── INIT TABLES ──────────────────────────────────────────────────────────
step "Initialising tables, indexes, FTS"
run_sqlite_heredoc "creating tables" "
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
DETACH nas;
"
run_sqlite_heredoc "creating indexes" "
ATTACH '$NAS_DB' AS nas;
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestamp ON frames(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_frames_app_name ON frames(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_window_name ON frames(window_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_video_chunk_id ON frames(video_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_id ON elements(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_src_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_timestamp ON ui_events(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_app_name ON ui_events(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_frame_id ON ui_events(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_meetings_start ON meetings(meeting_start);
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
DETACH nas;
"
run_sqlite_heredoc "creating FTS tables" "
ATTACH '$NAS_DB' AS nas;
CREATE VIRTUAL TABLE IF NOT EXISTS nas.elements_fts USING fts5(
text, role, frame_id UNINDEXED,
content='elements', content_rowid='id', tokenize='unicode61'
);
CREATE VIRTUAL TABLE IF NOT EXISTS nas.frames_fts USING fts5(
full_text, app_name, window_name, browser_url, id UNINDEXED,
tokenize='unicode61'
);
CREATE VIRTUAL TABLE IF NOT EXISTS nas.ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
"
# ─── SYNC DATA ────────────────────────────────────────────────────────────
step "Syncing data for $TARGET_DATE"
run_sqlite_heredoc "video_chunks" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.video_chunks
SELECT * FROM main.video_chunks
WHERE id IN (
SELECT DISTINCT video_chunk_id FROM main.frames
WHERE date(timestamp) = '$TARGET_DATE' AND video_chunk_id IS NOT NULL
);
DETACH nas;
"
run_sqlite_heredoc "frames ($SRC_FRAMES rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "ocr_text ($SRC_OCR rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.ocr_text
SELECT o.* FROM main.ocr_text o
JOIN main.frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "ui_events ($SRC_UI rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.ui_events
SELECT * FROM main.ui_events WHERE date(timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "elements ($SRC_ELEMENTS rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.elements
SELECT e.* FROM main.elements e
JOIN main.frames f ON e.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "meetings ($SRC_MEETINGS rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.meetings
SELECT * FROM main.meetings WHERE date(meeting_start) = '$TARGET_DATE';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
step "Updating FTS indexes"
run_sqlite_heredoc "elements_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.elements_fts(rowid, text, role)
SELECT e.id, e.text, e.role
FROM nas.elements e
JOIN nas.frames f ON e.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE'
AND e.text IS NOT NULL;
DETACH nas;
"
run_sqlite_heredoc "frames_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.frames_fts(rowid, full_text, app_name, window_name, browser_url, id)
SELECT id, full_text, app_name, window_name, browser_url, id
FROM nas.frames
WHERE date(timestamp) = '$TARGET_DATE'
AND full_text IS NOT NULL;
DETACH nas;
"
run_sqlite_heredoc "ui_events_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.ui_events_fts(rowid, text_content, app_name, window_title, element_name)
SELECT id, text_content, app_name, window_title, element_name
FROM nas.ui_events
WHERE date(timestamp) = '$TARGET_DATE'
AND text_content IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
step "Verifying DB"
V_FRAMES=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';")
V_ELEMENTS=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
V_UI=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '$TARGET_DATE';")
V_OCR=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM ocr_text WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
V_MEETINGS=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '$TARGET_DATE';")
check "frames" "$V_FRAMES" "$SRC_FRAMES"
check "elements" "$V_ELEMENTS" "$SRC_ELEMENTS"
check "ui_events" "$V_UI" "$SRC_UI"
check "ocr_text" "$V_OCR" "$SRC_OCR"
check "meetings" "$V_MEETINGS" "$SRC_MEETINGS"
fi
# ─── COPY DATA FOLDER ─────────────────────────────────────────────────────────
# Always runs regardless of DB sync status
step "Copying data folder for $TARGET_DATE"
if [ -d "$DATA_SRC" ]; then
mkdir -p "$NAS_DATA/$TARGET_DATE"
RSYNC_START=$(date +%s)
printf " %-36s " "rsync $TARGET_DATE/ → NAS"
rsync -a --ignore-existing \
"$DATA_SRC/" \
"$NAS_DATA/$TARGET_DATE/" \
2>>"$LOG_FILE"
RSYNC_DUR=$(( $(date +%s) - RSYNC_START ))
COPIED_FILES=$(ls "$NAS_DATA/$TARGET_DATE" | wc -l | tr -d ' ')
SRC_FILES=$(ls "$DATA_SRC" | wc -l | tr -d ' ')
COPIED_SIZE=$(du -sh "$NAS_DATA/$TARGET_DATE" | cut -f1)
if [ "$COPIED_FILES" -eq "$SRC_FILES" ]; then
printf "\r %-36s ✓ %dm%02ds (%s files, %s)\n" \
"rsync $TARGET_DATE/ → NAS" \
"$(( RSYNC_DUR / 60 ))" "$(( RSYNC_DUR % 60 ))" \
"$COPIED_FILES" "$COPIED_SIZE" | tee -a "$LOG_FILE"
else
printf "\r %-36s ✗ %s / %s files\n" \
"rsync $TARGET_DATE/ → NAS" "$COPIED_FILES" "$SRC_FILES" | tee -a "$LOG_FILE"
fi
else
printf " %-36s %s\n" "rsync $TARGET_DATE/ → NAS" "skipped (no source dir)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
TOTAL_ELAPSED=$(( $(date +%s) - SCRIPT_START ))
DB_SIZE=$(du -sh "$NAS_DB" | cut -f1)
echo ""
log "Archive DB size: $DB_SIZE"
log "Total time: $(( TOTAL_ELAPSED / 60 ))m$(( TOTAL_ELAPSED % 60 ))s"
log "Sync complete for $TARGET_DATE"
log "========================================"
lets add ability to jump…, Editor Group 2
Problems (⇧⌘M)
PROBLEMS
Output (⇧⌘U)
OUTPUT
Debug Console (⇧⌘Y)
DEBUG CONSOLE
Terminal (⌃`)
TERMINAL
Ports
PORTS
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
No Ports Forwarded
0
Notifications
Signed out
Signed out
Shell Script
Editor Language Status: $(copilot) No inline suggestion available, Inline suggestions
LF
UTF-8
Spaces: 2
Ln 18, Col 36
Screen Reader Optimized
git-commit Lukas Kovalik (23 hours ago)
Lukas Kovalik (23 hours ago)
Info: Downloading VS Code Server...
lets add ability to jump fro,m search to timeline so we can see the exact screen (also based on monitor and time
Session history
New session
Message actions
This session is being continued from a previous conversation that ran out of context. The summary below covers the earlier portion of the conversation.
Summary:
1. Primary Request and Intent:
The user has been developing a Screenpipe dashboard on a Synology NAS. Requests in chronological order:
- **Q1**: Are db.sqlite-shm and db.sqlite-wal used? → Explained WAL mode; cleaned up files.
- **Q2**: AND combination search (term1 + term2 must both appear) → Added "AND also" input field.
- **Q3**: Explain UTC time issue, show date in results, make Only/Skip apps use multiselect → Implemented all three.
- **Q4**: Point sqlite-web at archive.db, add second sqlite-web for db.sqlite → Updated docker-compose.yml, added two services on ports 8767/8768.
- **Q5**: "still the same" (container not picking up config) → Explained `up -d` vs `restart`.
- **Q6**: Add git, push to gitea.com/lakylak/screenpipe.git → Initialized repo, committed, pushed.
- **Q7**: Add Timetable tab with video playback and timeline → Full implementation with click-to-seek, auto-advancing chunks, legend.
- **Q8**: Add scroll/zoom on timeline, jump to specific time, better awareness → Implemented zoom (1×–32×), scrollable timeline, overview minimap, viewport indicator, Jump-to-time input, screenshot thumbnail.
- **Q9 (most recent)**: Make playing speed more than 8×, fix speed not working, show position on timeline → CSS fix done (wider playhead + time label style), remainder in progress.
2. Key Technical Concepts:
- **SQLite WAL mode**: db.sqlite-shm and db.sqlite-wal are WAL companion files; cleaned with `PRAGMA wal_checkpoint(TRUNCATE)`.
- **SQLite FTS5**: Space-separated terms = AND; `MATCH 'term1 term2'` requires both; OR requires explicit `OR` keyword.
- **FastAPI**: Python backend with route handlers in main.py, consumers pattern for DB queries.
- **Docker Compose**: App image is built (code baked in), not volume-mounted → requires `build` + `up -d` for code changes. `restart` doesn't re-read compose file — need `up -d`.
- **sqlite-web**: Read-only flag `-r`, pre-built image, no rebuild needed for config changes.
- **Video playback**: screenpipe records at 0.1–0.3 fps (timelapse). `seek = offset_index / fps` gives seconds into video chunk. ~245 chunks/day across 2 monitors. Videos may be encoded at standard fps making them very short at native speed.
- **Timeline rendering**: App-colored segments built by merging consecutive frames with same `app_name`. Percentage positions: `((ts - dayStart) / span * 100)%`.
- **Zoom/scroll**: Inner div width = `zoom × 100%`, outer wrapper has `overflow-x:auto`. Playhead position stays as % of inner div, which is correct at all zoom levels.
- **Timer-based speed**: For speed > 2×, browser `playbackRate` is unreliable on low-FPS video; correct approach is `setInterval` advancing `video.currentTime` by `speed * interval_ms / 1000` seconds per tick.
- **UTC vs local time**: Backend treats `time_from`/`time_to` as UTC. Frontend converts with `localTimeToUtc()` before sending.
- **Git**: `#recycle/` in .gitignore treated as comment — must escape as `\#recycle/`.
3. Files and Code Sections:
- **`/volume1/screenpipe/app/main.py`**
- Added `/api/apps` endpoint (all unique app names from frames table)
- Added `/api/timetable` endpoint (frames + video URLs + screenshot URLs per device per date)
- `/api/timetable` response structure: `{frames: [{ts, app, win, video_url, seek, screenshot_url}], devices: [...], device: "..."}`
- Key snippet:
```python
@app.get("/api/timetable"
)
async def timetable_data(d: str | None = Query(None), device: str | None = Query(None)):
...
rows = conn.execute(f"""
SELECT f.timestamp AS ts, f.app_name AS app, f.window_name AS win,
f.offset_index, f.snapshot_path,
vc.file_path AS video_path, vc.fps AS video_fps
FROM frames f
JOIN video_chunks vc ON f.video_chunk_id = vc.id
WHERE f.timestamp >= ? AND f.timestamp < ?
AND f.video_chunk_id IS NOT NULL {dev_clause}
ORDER BY f.timestamp
""", params).fetchall()
# seek = offset_index / fps, screenshot_url from _snapshot_to_url(snapshot_path)
```
- **`/volume1/screenpipe/app/docker-compose.yml`**
- Changed sqlite-web service name to `sqlite-web-archive` → port 8767 → `/data/archive.db`
- Added `sqlite-web-live` → port 8768 → `/data/db.sqlite`
- screenpipe-app: port 8766, `DB_PATH: /data/db.sqlite`, `TZ: Europe/Sofia`
- **`/volume1/screenpipe/app/static/index.html`** (single large file with all CSS/HTML/JS)
- **Search enhancements**:
- Added `id="sq2"` "AND also" input between search-row1 and search-row2
- Replaced `sOnlyApps`/`sSkipApps` text inputs with custom multiselect components (`id="msOnlyApps"`, `id="msSkipApps"`)
- Updated `buildUrl()` to combine `q + " " + q2` and convert times with `localTimeToUtc()`
- Added `fmtDateTime(ts)` showing "Apr 20 14:08" format
- Added `localTimeToUtc(timeStr)` converting local HH:MM to UTC
- Multiselect state: `const _msState = { msOnlyApps: new Set(), msSkipApps: new Set() }`
- **Timetable tab** (new page):
- Tab button added between Work Report and AI Summary
- `showPage` array updated: `['activity','search','audio','report','timetable','summary']`
- `refresh()` calls `loadTimetable()` when on timetable page
- **Timetable CSS** (key styles):
```css
.tt-scroll-wrap { overflow-x:auto; ... scrollbar-width:thin; }
.tt-inner { position:relative; height:52px; } /* width set dynamically */
.tt-playhead { position:absolute; top:0; width:3px; height:36px; background:white; box-shadow:0 0 8px rgba(255,255,255,.9); z-index:10; pointer-events:none; display:none; }
.tt-playhead-time { position:absolute; top:2px; font-size:9px; font-weight:600; color:white; background:rgba(0,0,0,.75); padding:1px 4px; border-radius:2px; white-space:nowrap; transform:translateX(-50%); z-index:12; pointer-events:none; display:none; }
.tt-overview-wrap { position:relative; height:14px; ... cursor:pointer; }
.tt-overview-vp { position:absolute; background:rgba(255,255,255,0.12); border:1px solid rgba(255,255,255,0.4); }
```
- **Timetable JS state variables**:
```javascript
let _ttFrames = [], _ttChunks = [], _ttCurChunk = -1;
let _ttDayStart = 0, _ttDayEnd = 0, _ttZoom = 1;
const _ttAppColors = {};
const TT_ZOOMS = [1, 2, 4, 8, 16, 32];
const TT_TICK_MIN = {1:30, 2:15, 4:10, 8:5, 16:2, 32:1};
```
- **Key JS functions**:
- `loadTimetable()` — fetches `/api/timetable`, groups chunks, renders
- `ttZoom(dir)` — changes zoom level, updates inner width, re-renders ticks, scrolls to playhead
- `ttTimelineClick(e)` — uses `inner.getBoundingClientRect()` (works correctly when scrolled)
- `ttOverviewClick(e)` — scrolls timeline + seeks video
- `ttUpdateOverviewVp()` — updates white viewport rect using `wrap.scrollLeft / inner.scrollWidth`
- `ttJumpToTime()` — parses time input, converts to ms, calls `ttSeekToMs`
- `ttSeekToMs(tsMs)` — binary-searches nearest frame, loads chunk, seeks video
- `_ttScrollToPlayhead(force)` — scrolls wrap so playhead stays at ~35% from left when Follow is checked
- `_ttMovePlayhead(tsMs)` — sets `ph.style.left` as percentage, calls `_ttScrollToPlayhead`
- `_ttShowNow(f)` — updates screenshot thumbnail + now-text div
- `ttSyncBtn()` — syncs play/pause button text
- Keyboard: Space=play/pause, ←/→=±10s, Ctrl+←/→=±30s, +/-=zoom
- **`/volume1/screenpipe/.gitignore`**
```
*.db, *.sqlite, *.sqlite-shm, *.sqlite-wal
data/, \#recycle/,
@eaDir/
app_settings.json, app/.env
__pycache__/, *.pyc, .DS_Store
```
4. Errors and Fixes:
- **`#recycle/` in .gitignore treated as comment**: `#` starts a comment in .gitignore. Fixed by escaping: `\#recycle/`. Also had to `git rm --cached "#recycle/desktop.ini"` to unstage it.
- **`sudo docker compose restart sqlite-web` didn't apply config change**: `restart` reuses existing container config, doesn't re-read compose file. Fix: `sudo docker compose up -d` recreates containers with new config.
- **Orphan container holding port 8767**: Old `screenpipe-sqlweb` container still running after rename. Fix: `sudo docker compose up -d --remove-orphans`.
- **`sudo docker` not accessible from Claude Code**: Interactive sudo required. User runs commands in NAS terminal.
- **`git config --global --add safe.directory /volume1/screenpipe`**: Required due to dubious ownership of NAS volume directory.
5. Problem Solving:
- **Time zone confusion in search**: Backend uses UTC for time_from/time_to; frontend displays local time. Solved by `localTimeToUtc()` converting before API call, and showing date+time in results.
- **sqlite-web not showing April 17–21 data**: Container was pointing at db.sqlite (old config), not archive.db. Fixed by updating docker-compose.yml + `up -d`.
- **Video playback speed**: Browser `video.playbackRate` is capped (~16× max in Chrome) and performs poorly for very low FPS (0.1–0.3 fps) screenpipe videos. Each chunk may only be 1–2 seconds of wall-clock encoded video, playing through instantly. Solution: implement timer-based frame-jumping for speed > 2× (in progress).
- **Playhead visibility**: White 2px line was hard to see. Fixed CSS to 3px width + stronger box-shadow + added `.tt-playhead-time` overlay label style.
6. All User Messages:
- "do we use db.sqlite-shm and db.sqlite-wal for anything right now? [image of search UI] Lets add ability to search with combination... Explain how does the search work time seems to work in utc maybe display date next to the time in results. Make only apps and skip apps multiselect with all available apps."
- "doi I need to restart?"
- "there is sudo docker compose"
- "no still the same"
- "add git. I have created gitea repo https://gitea.com/lakylak/screenpipe.git"
- "just do it" (re: git push)
- "how to make sure data in :8767 are accurate and point to archive.db"
- "I can't see older than 16th there should 21st of april. In http://[IP_ADDRESS]:8766/ I can see all but not on sqlite viewer http://[IP_ADDRESS]:8767"
- "ok lets add additional port to read db.sqlite, I would like to see the structure of official db that reads db.sqlite db and one for archive"
- [docker compose output showing orphan container error]
- "looks great. I want to have ability to scroll left and right and also to jump to specific time. I want to be more aware to what I see. Still it should be fast"
- "lets make the playing speed more than 8x"
- "still playing speed is not showing properly still just in one second. also I want to see in timeline where I am"
7. Pending Tasks:
- **Playback speed fix** (in progress, partially done):
- Add `<div class="tt-playhead-time" id="ttPlayheadTime"></div>` inside `ttInner` HTML
- Implement `_ttStartSpeedTimer(speed)` / `_ttStopSpeedTimer()` / `ttSetSpeed(speed)` functions
- Update speed select `onchange` to call `ttSetSpeed(+this.value)`
- Add 64× option to speed select
- Update `_ttMovePlayhead` to also update `ttPlayheadTime` label
- Update `ttSyncBtn` to start/stop timer based on play state + speed
- Update `ttNextChunk` and `ttSeekToMs` to stop timer (restarted by onplay → ttSyncBtn)
- Rebuild Docker image after changes
8. Current Work:
Working on fixing two issues with the Timetable tab:
1. **Playback speed**: `video.playbackRate` doesn't work well for low-FPS screenpipe videos. The plan is to implement a `setInterval`-based frame-jumper for speed > 2× that advances `video.currentTime` by `speed * intervalMs / 1000` every 100–200ms, bypassing browser playbackRate limits.
2. **Timeline position indicator**: Playhead not prominent enough.
**CSS already changed** in `/volume1/screenpipe/app/static/index.html`:
```css
.tt-playhead { position:absolute; top:0; width:3px; height:36px; background:white; box-shadow:0 0 8px rgba(255,255,255,.9); z-index:10; pointer-events:none; display:none; }
.tt-playhead-time { position:absolute; top:2px; font-size:9px; font-weight:600; color:white; background:rgba(0,0,0,.75); padding:1px 4px; border-radius:2px; white-space:nowrap; transform:translateX(-50%); z-index:12; pointer-events:none; display:none; }
```
Session was interrupted by summary request after this CSS edit, mid-implementation.
9. Optional Next Step:
Continuing the fix for: "still playing speed is not showing properly still just in one second. also I want to see in timeline where I am"
The next steps in order are:
1. Add `<div class="tt-playhead-time" id="ttPlayheadTime"></div>` to the HTML inside `#ttInner` (after the existing `.tt-playhead` div)
2. Update `_ttMovePlayhead` to set `ttPlayheadTime` position and text content with `fmtTime()`
3. Add timer-based speed system to JS (new functions `_ttStartSpeedTimer`, `_ttStopSpeedTimer`, `ttSetSpeed`)
4. Update speed select's `onchange` to `ttSetSpeed(+this.value)` and add 64× option
5. Update `ttSyncBtn`, `ttNextChunk`, `ttSeekToMs` to integrate with timer
6. Rebuild: `sudo docker compose build screenpipe-app && sudo docker compose up -d screenpipe-app`
If you need specific details from before compaction (like exact code snippets, error messages, or content you generated), read the full transcript at: /home/Adm1n/.claude/projects/-volume1-screenpipe/7777f46e-1e40-4051-b4bb-f43aedd59556.jsonl
Continue the conversation from where it left off without asking the user any further questions. Resume directly — do not acknowledge the summary, do not recap what was happening, do not preface with "I'll continue" or similar. Pick up the last task as if the break never happened.
Thinking
Thinking
Bash
Find timetable speed and playhead related code
IN
grep -n "tt-playhead\|ttPlayhead\|ttInner\|_ttMovePlayhead\|ttSetSpeed\|_ttStartSpeed\|_ttStopSpeed\|ttSyncBtn\|playbackRate\|speed.*select\|spdSel\|ttSpeed" /volume1/screenpipe/app/static/index.html | head -80
Copy code to clipboard
OUT
207:.tt-playhead { position:absolute; top:0; width:3px; height:36px; background:white; box-shadow:0 0 8px rgba(255,255,255,.9); z-index:10; pointer-events:none; display:none; }
208:.tt-playhead-time { position:absolute; top:2px; font-size:9px; font-weight:600; color:white; background:rgba(0,0,0,.75); padding:1px 4px; border-radius:2px; white-space:nowrap; transform:translateX(-50%); z-index:12; pointer-events:none; display:none; }
580: <div class="tt-inner" id="ttInner" onclick="ttTimelineClick(event)">
583: <div class="tt-playhead" id="ttPlayhead"></div>
598: onpause="ttSyncBtn()"
599: onplay="ttSyncBtn()">
607: <select id="ttSpeed" onchange="document.getElementById('ttVideo').playbackRate=+this.value">
1624: document.getElementById('ttInner').style.width = '100%';
1632: document.getElementById('ttPlayhead').style.display = 'none';
1694: document.getElementById('ttInner').style.width = (_ttZoom * 100) + '%';
1700: const inner = document.getElementById('ttInner');
1710: const inner = document.getElementById('ttInner');
1718: const inner = document.getElementById('ttInner');
1750: _ttMovePlayhead(new Date(best.ts).getTime());
1772: _ttMovePlayhead(new Date(best.ts).getTime());
1791:function _ttMovePlayhead(tsMs) {
1792: const ph = document.getElementById('ttPlayhead');
1802: const ph = document.getElementById('ttPlayhead');
1805: const inner = document.getElementById('ttInner');
1819:function ttSyncBtn() {
Read
index.html
index.html
(lines 576-625)
Read
index.html
index.html
(lines 1786-1865)
Thinking
Thinking
Bash
Find chunk loading and playhead update functions
IN
grep -n "ttUpdatePlayhead\|ttNextChunk\|ttLoadChunk\|_ttCurChunk\|_ttChunks\|_ttFrames" /volume1/screenpipe/app/static/index.html | head -50
Copy code to clipboard
OUT
596: onended="ttNextChunk()"
597: ontimeupdate="ttUpdatePlayhead()"
1569:let _ttFrames = [];
1570:let _ttChunks = [];
1571:let _ttCurChunk = -1;
1607: _ttFrames = data.frames;
1609: for (const f of _ttFrames) {
1613: _ttChunks = [...chunkMap.values()];
1614: _ttCurChunk = -1;
1616: _ttDayStart = new Date(_ttFrames[0].ts).getTime();
1617: _ttDayEnd = new Date(_ttFrames[_ttFrames.length - 1].ts).getTime();
1620: for (const f of _ttFrames) _ttColor(f.app);
1640: for (const f of _ttFrames) {
1736: if (!_ttFrames.length) return;
1737: let best = _ttFrames[0], minDiff = Infinity;
1738: for (const f of _ttFrames) {
1742: const ci = _ttChunks.findIndex(ch => ch[0].video_url === best.video_url);
1744: _ttCurChunk = ci;
1753:function ttNextChunk() {
1754: if (_ttCurChunk + 1 >= _ttChunks.length) return;
1755: _ttCurChunk++;
1757: video.src = _ttChunks[_ttCurChunk][0].video_url;
1762:function ttUpdatePlayhead() {
1764: if (_ttCurChunk < 0 || _ttCurChunk >= _ttChunks.length) return;
1765: const chunk = _ttChunks[_ttCurChunk];
Read
index.html
index.html
(lines 1754-1793)
Thinking
Thinking
Read
index.html
index.html
(lines 1701-1760)
Thinking
Thinking
Read
index.html
index.html
(lines 1561-1640)
Thinking
Thinking
Bash
Find time formatting functions
IN
grep -n "function fmtTime\|function fmtDate\|function _fmt\|localTimeToUtc\|fmtDateTime" /volume1/screenpipe/app/static/index.html | head -20
Copy code to clipboard...
|
Code
|
screenpipe_sync.sh — screenpipe [SSH: nas]
|
NULL
|
81027
|
|
Explorer (⇧⌘E)
Search (⇧⌘F)
Source Control (⌃⇧ Explorer (⇧⌘E)
Search (⇧⌘F)
Source Control (⌃⇧G) - 2 pending changes
2
Run and Debug (⇧⌘D)
Remote Explorer
Extensions (⇧⌘X) - 2 require update, 1 requires restart
3
Claude Code
Containers
EXPLORER
EXPLORER
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
SCREENPIPE [SSH: NAS]
#recycle
app
data
pipes
.gitignore
app_settings.json
archive.db
db.sqlite
screenpipe_sync.sh
screenpipe.db
Outline Section
OUTLINE
OUTLINE
Timeline Section
TIMELINE
TIMELINE
app_settings.json, Editor Group 1
screenpipe_sync.sh, Editor Group 1
db.sqlite-shm, preview, Editor Group 1
#!/bin/bash
# screenpipe_sync.sh
# Syncs Screenpipe SQLite data to a NAS archive database (append-only, no deletions).
# Also copies the day's video/frame data folder to the NAS.
#
# Usage:
# ./screenpipe_sync.sh # syncs yesterday (default)
# ./screenpipe_sync.sh 2026-04-15 # syncs a specific date
# ./screenpipe_sync.sh today # syncs today so far
#
# Cron example (runs at 3am daily):
# 0 3 * * * /Users/lukas/.screenpipe/screenpipe_sync.sh >> /Users/lukas/.screenpipe/sync.log 2>&1
set -euo pipefail
# ─── CONFIG ───────────────────────────────────────────────────────────────────
DB_SRC="${SCREENPIPE_DB:-$HOME/.screenpipe/db.sqlite}"
NAS_MOUNT="${NAS_MOUNT:-/Volumes/Test/screenpipe}"
NAS_DB="$NAS_MOUNT/archive.db"
NAS_DATA="$NAS_MOUNT/data"
LOG_FILE="$HOME/.screenpipe/sync.log"
# ──────────────────────────────────────────────────────────────────────────────
# ─── HELPERS ──────────────────────────────────────────────────────────────────
SCRIPT_START=$(date +%s)
log() {
local msg="[$(date '+%Y-%m-%d %H:%M:%S')] $*"
echo "$msg" | tee -a "$LOG_FILE"
}
step() {
local now=$(date +%s)
local elapsed=$(( now - SCRIPT_START ))
local min=$(( elapsed / 60 ))
local sec=$(( elapsed % 60 ))
printf "\n[+%02dm%02ds] ▶ %s\n" "$min" "$sec" "$*" | tee -a "$LOG_FILE"
}
run_sqlite_heredoc() {
local label="$1"
local sql="$2"
local start=$(date +%s)
printf " %-36s " "$label"
sqlite3 "$DB_SRC" <<< "$sql" &
local pid=$!
local spin=[PASSWORD] '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏')
local i=0
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# ─── DATE ARGUMENT ────────────────────────────────────────────────────────────
if [ "${1:-}" = "today" ]; then
TARGET_DATE=$(date +%Y-%m-%d)
elif [ -n "${1:-}" ]; then
TARGET_DATE="$1"
if ! [[ "$TARGET_DATE" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
echo "ERROR: Invalid date format. Use YYYY-MM-DD, 'today', or no argument for yesterday."
exit 1
fi
else
TARGET_DATE=$(date -v-1d +%Y-%m-%d)
fi
log "========================================"
log "Screenpipe sync starting for: $TARGET_DATE"
log "========================================"
# ─── PREFLIGHT ────────────────────────────────────────────────────────────────
step "Preflight checks"
if [ ! -f "$DB_SRC" ]; then
log "ERROR: Source DB not found at $DB_SRC"; exit 1
fi
printf " %-20s %s (%s)\n" "Source DB:" "OK" "$(du -sh "$DB_SRC" | cut -f1)"
if [ ! -d "$NAS_MOUNT" ]; then
log "ERROR: NAS not mounted at $NAS_MOUNT"; exit 1
fi
printf " %-20s %s\n" "NAS mount:" "OK $NAS_MOUNT"
# Check if DB already synced for this date
DB_ALREADY_SYNCED=false
if [ -f "$NAS_DB" ]; then
EXISTING=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';" 2>/dev/null || echo "0")
if [ "$EXISTING" -gt "0" ]; then
log "Date $TARGET_DATE already has $EXISTING frames in archive — skipping DB sync"
DB_ALREADY_SYNCED=true
else
printf " %-20s %s (%s)\n" "Archive DB:" "exists" "$(du -sh "$NAS_DB" | cut -f1)"
fi
else
printf " %-20s %s\n" "Archive DB:" "will be created"
fi
# Source data dir for this date
DATA_SRC="$HOME/.screenpipe/data/data/$TARGET_DATE"
if [ -d "$DATA_SRC" ]; then
DATA_SIZE=$(du -sh "$DATA_SRC" | cut -f1)
DATA_FILES=$(ls "$DATA_SRC" | wc -l | tr -d ' ')
printf " %-20s %s (%s files, %s)\n" "Data dir:" "OK" "$DATA_FILES" "$DATA_SIZE"
else
printf " %-20s %s\n" "Data dir:" "not found — skipping file copy"
fi
# ─── DB SYNC ──────────────────────────────────────────────────────────────────
if [ "$DB_ALREADY_SYNCED" = false ]; then
# ─── COUNT SOURCE ROWS ────────────────────────────────────────────────────
step "Counting source rows for $TARGET_DATE"
SRC_FRAMES=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';")
SRC_ELEMENTS=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
SRC_UI=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '$TARGET_DATE';")
SRC_OCR=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM ocr_text WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
SRC_MEETINGS=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '$TARGET_DATE';")
printf " %-20s %s\n" "frames:" "$SRC_FRAMES"
printf " %-20s %s\n" "elements:" "$SRC_ELEMENTS"
printf " %-20s %s\n" "ui_events:" "$SRC_UI"
printf " %-20s %s\n" "ocr_text:" "$SRC_OCR"
printf " %-20s %s\n" "meetings:" "$SRC_MEETINGS"
if [ "$SRC_FRAMES" -eq "0" ]; then
log "No frames found for $TARGET_DATE — skipping DB sync"
DB_ALREADY_SYNCED=true
fi
fi
if [ "$DB_ALREADY_SYNCED" = false ]; then
# ─── INIT TABLES ──────────────────────────────────────────────────────────
step "Initialising tables, indexes, FTS"
run_sqlite_heredoc "creating tables" "
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
DETACH nas;
"
run_sqlite_heredoc "creating indexes" "
ATTACH '$NAS_DB' AS nas;
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestamp ON frames(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_frames_app_name ON frames(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_window_name ON frames(window_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_video_chunk_id ON frames(video_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_id ON elements(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_src_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_timestamp ON ui_events(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_app_name ON ui_events(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_frame_id ON ui_events(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_meetings_start ON meetings(meeting_start);
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
DETACH nas;
"
run_sqlite_heredoc "creating FTS tables" "
ATTACH '$NAS_DB' AS nas;
CREATE VIRTUAL TABLE IF NOT EXISTS nas.elements_fts USING fts5(
text, role, frame_id UNINDEXED,
content='elements', content_rowid='id', tokenize='unicode61'
);
CREATE VIRTUAL TABLE IF NOT EXISTS nas.frames_fts USING fts5(
full_text, app_name, window_name, browser_url, id UNINDEXED,
tokenize='unicode61'
);
CREATE VIRTUAL TABLE IF NOT EXISTS nas.ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
"
# ─── SYNC DATA ────────────────────────────────────────────────────────────
step "Syncing data for $TARGET_DATE"
run_sqlite_heredoc "video_chunks" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.video_chunks
SELECT * FROM main.video_chunks
WHERE id IN (
SELECT DISTINCT video_chunk_id FROM main.frames
WHERE date(timestamp) = '$TARGET_DATE' AND video_chunk_id IS NOT NULL
);
DETACH nas;
"
run_sqlite_heredoc "frames ($SRC_FRAMES rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "ocr_text ($SRC_OCR rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.ocr_text
SELECT o.* FROM main.ocr_text o
JOIN main.frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "ui_events ($SRC_UI rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.ui_events
SELECT * FROM main.ui_events WHERE date(timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "elements ($SRC_ELEMENTS rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.elements
SELECT e.* FROM main.elements e
JOIN main.frames f ON e.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "meetings ($SRC_MEETINGS rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.meetings
SELECT * FROM main.meetings WHERE date(meeting_start) = '$TARGET_DATE';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
step "Updating FTS indexes"
run_sqlite_heredoc "elements_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.elements_fts(rowid, text, role)
SELECT e.id, e.text, e.role
FROM nas.elements e
JOIN nas.frames f ON e.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE'
AND e.text IS NOT NULL;
DETACH nas;
"
run_sqlite_heredoc "frames_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.frames_fts(rowid, full_text, app_name, window_name, browser_url, id)
SELECT id, full_text, app_name, window_name, browser_url, id
FROM nas.frames
WHERE date(timestamp) = '$TARGET_DATE'
AND full_text IS NOT NULL;
DETACH nas;
"
run_sqlite_heredoc "ui_events_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.ui_events_fts(rowid, text_content, app_name, window_title, element_name)
SELECT id, text_content, app_name, window_title, element_name
FROM nas.ui_events
WHERE date(timestamp) = '$TARGET_DATE'
AND text_content IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
step "Verifying DB"
V_FRAMES=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';")
V_ELEMENTS=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
V_UI=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '$TARGET_DATE';")
V_OCR=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM ocr_text WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
V_MEETINGS=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '$TARGET_DATE';")
check "frames" "$V_FRAMES" "$SRC_FRAMES"
check "elements" "$V_ELEMENTS" "$SRC_ELEMENTS"
check "ui_events" "$V_UI" "$SRC_UI"
check "ocr_text" "$V_OCR" "$SRC_OCR"
check "meetings" "$V_MEETINGS" "$SRC_MEETINGS"
fi
# ─── COPY DATA FOLDER ─────────────────────────────────────────────────────────
# Always runs regardless of DB sync status
step "Copying data folder for $TARGET_DATE"
if [ -d "$DATA_SRC" ]; then
mkdir -p "$NAS_DATA/$TARGET_DATE"
RSYNC_START=$(date +%s)
printf " %-36s " "rsync $TARGET_DATE/ → NAS"
rsync -a --ignore-existing \
"$DATA_SRC/" \
"$NAS_DATA/$TARGET_DATE/" \
2>>"$LOG_FILE"
RSYNC_DUR=$(( $(date +%s) - RSYNC_START ))
COPIED_FILES=$(ls "$NAS_DATA/$TARGET_DATE" | wc -l | tr -d ' ')
SRC_FILES=$(ls "$DATA_SRC" | wc -l | tr -d ' ')
COPIED_SIZE=$(du -sh "$NAS_DATA/$TARGET_DATE" | cut -f1)
if [ "$COPIED_FILES" -eq "$SRC_FILES" ]; then
printf "\r %-36s ✓ %dm%02ds (%s files, %s)\n" \
"rsync $TARGET_DATE/ → NAS" \
"$(( RSYNC_DUR / 60 ))" "$(( RSYNC_DUR % 60 ))" \
"$COPIED_FILES" "$COPIED_SIZE" | tee -a "$LOG_FILE"
else
printf "\r %-36s ✗ %s / %s files\n" \
"rsync $TARGET_DATE/ → NAS" "$COPIED_FILES" "$SRC_FILES" | tee -a "$LOG_FILE"
fi
else
printf " %-36s %s\n" "rsync $TARGET_DATE/ → NAS" "skipped (no source dir)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
TOTAL_ELAPSED=$(( $(date +%s) - SCRIPT_START ))
DB_SIZE=$(du -sh "$NAS_DB" | cut -f1)
echo ""
log "Archive DB size: $DB_SIZE"
log "Total time: $(( TOTAL_ELAPSED / 60 ))m$(( TOTAL_ELAPSED % 60 ))s"
log "Sync complete for $TARGET_DATE"
log "========================================"
#!/bin/bash
# screenpipe_sync.sh
# Syncs Screenpipe SQLite data to a NAS archive database (append-only, no deletions).
# Also copies the day's video/frame data folder to the NAS.
#
# Usage:
# ./screenpipe_sync.sh # syncs yesterday (default)
# ./screenpipe_sync.sh 2026-04-15 # syncs a specific date
# ./screenpipe_sync.sh today # syncs today so far
#
# Cron example (runs at 3am daily):
# 0 3 * * * /Users/lukas/.screenpipe/screenpipe_sync.sh >> /Users/lukas/.screenpipe/sync.log 2>&1
set -euo pipefail
# ─── CONFIG ───────────────────────────────────────────────────────────────────
DB_SRC="${SCREENPIPE_DB:-$HOME/.screenpipe/db.sqlite}"
NAS_MOUNT="${NAS_MOUNT:-/Volumes/Test/screenpipe}"
NAS_DB="$NAS_MOUNT/archive.db"
NAS_DATA="$NAS_MOUNT/data"
LOG_FILE="$HOME/.screenpipe/sync.log"
# ──────────────────────────────────────────────────────────────────────────────
# ─── HELPERS ──────────────────────────────────────────────────────────────────
SCRIPT_START=$(date +%s)
log() {
local msg="[$(date '+%Y-%m-%d %H:%M:%S')] $*"
echo "$msg" | tee -a "$LOG_FILE"
}
step() {
local now=$(date +%s)
local elapsed=$(( now - SCRIPT_START ))
local min=$(( elapsed / 60 ))
local sec=$(( elapsed % 60 ))
printf "\n[+%02dm%02ds] ▶ %s\n" "$min" "$sec" "$*" | tee -a "$LOG_FILE"
}
run_sqlite_heredoc() {
local label="$1"
local sql="$2"
local start=$(date +%s)
printf " %-36s " "$label"
sqlite3 "$DB_SRC" <<< "$sql" &
local pid=$!
local spin=[PASSWORD] '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏')
local i=0
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# ─── DATE ARGUMENT ────────────────────────────────────────────────────────────
if [ "${1:-}" = "today" ]; then
TARGET_DATE=$(date +%Y-%m-%d)
elif [ -n "${1:-}" ]; then
TARGET_DATE="$1"
if ! [[ "$TARGET_DATE" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
echo "ERROR: Invalid date format. Use YYYY-MM-DD, 'today', or no argument for yesterday."
exit 1
fi
else
TARGET_DATE=$(date -v-1d +%Y-%m-%d)
fi
log "========================================"
log "Screenpipe sync starting for: $TARGET_DATE"
log "========================================"
# ─── PREFLIGHT ────────────────────────────────────────────────────────────────
step "Preflight checks"
if [ ! -f "$DB_SRC" ]; then
log "ERROR: Source DB not found at $DB_SRC"; exit 1
fi
printf " %-20s %s (%s)\n" "Source DB:" "OK" "$(du -sh "$DB_SRC" | cut -f1)"
if [ ! -d "$NAS_MOUNT" ]; then
log "ERROR: NAS not mounted at $NAS_MOUNT"; exit 1
fi
printf " %-20s %s\n" "NAS mount:" "OK $NAS_MOUNT"
# Check if DB already synced for this date
DB_ALREADY_SYNCED=false
if [ -f "$NAS_DB" ]; then
EXISTING=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';" 2>/dev/null || echo "0")
if [ "$EXISTING" -gt "0" ]; then
log "Date $TARGET_DATE already has $EXISTING frames in archive — skipping DB sync"
DB_ALREADY_SYNCED=true
else
printf " %-20s %s (%s)\n" "Archive DB:" "exists" "$(du -sh "$NAS_DB" | cut -f1)"
fi
else
printf " %-20s %s\n" "Archive DB:" "will be created"
fi
# Source data dir for this date
DATA_SRC="$HOME/.screenpipe/data/data/$TARGET_DATE"
if [ -d "$DATA_SRC" ]; then
DATA_SIZE=$(du -sh "$DATA_SRC" | cut -f1)
DATA_FILES=$(ls "$DATA_SRC" | wc -l | tr -d ' ')
printf " %-20s %s (%s files, %s)\n" "Data dir:" "OK" "$DATA_FILES" "$DATA_SIZE"
else
printf " %-20s %s\n" "Data dir:" "not found — skipping file copy"
fi
# ─── DB SYNC ──────────────────────────────────────────────────────────────────
if [ "$DB_ALREADY_SYNCED" = false ]; then
# ─── COUNT SOURCE ROWS ────────────────────────────────────────────────────
step "Counting source rows for $TARGET_DATE"
SRC_FRAMES=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';")
SRC_ELEMENTS=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
SRC_UI=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '$TARGET_DATE';")
SRC_OCR=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM ocr_text WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
SRC_MEETINGS=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '$TARGET_DATE';")
printf " %-20s %s\n" "frames:" "$SRC_FRAMES"
printf " %-20s %s\n" "elements:" "$SRC_ELEMENTS"
printf " %-20s %s\n" "ui_events:" "$SRC_UI"
printf " %-20s %s\n" "ocr_text:" "$SRC_OCR"
printf " %-20s %s\n" "meetings:" "$SRC_MEETINGS"
if [ "$SRC_FRAMES" -eq "0" ]; then
log "No frames found for $TARGET_DATE — skipping DB sync"
DB_ALREADY_SYNCED=true
fi
fi
if [ "$DB_ALREADY_SYNCED" = false ]; then
# ─── INIT TABLES ──────────────────────────────────────────────────────────
step "Initialising tables, indexes, FTS"
run_sqlite_heredoc "creating tables" "
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
DETACH nas;
"
run_sqlite_heredoc "creating indexes" "
ATTACH '$NAS_DB' AS nas;
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestamp ON frames(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_frames_app_name ON frames(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_window_name ON frames(window_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_video_chunk_id ON frames(video_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_id ON elements(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_src_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_timestamp ON ui_events(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_app_name ON ui_events(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_frame_id ON ui_events(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_meetings_start ON meetings(meeting_start);
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
DETACH nas;
"
run_sqlite_heredoc "creating FTS tables" "
ATTACH '$NAS_DB' AS nas;
CREATE VIRTUAL TABLE IF NOT EXISTS nas.elements_fts USING fts5(
text, role, frame_id UNINDEXED,
content='elements', content_rowid='id', tokenize='unicode61'
);
CREATE VIRTUAL TABLE IF NOT EXISTS nas.frames_fts USING fts5(
full_text, app_name, window_name, browser_url, id UNINDEXED,
tokenize='unicode61'
);
CREATE VIRTUAL TABLE IF NOT EXISTS nas.ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
"
# ─── SYNC DATA ────────────────────────────────────────────────────────────
step "Syncing data for $TARGET_DATE"
run_sqlite_heredoc "video_chunks" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.video_chunks
SELECT * FROM main.video_chunks
WHERE id IN (
SELECT DISTINCT video_chunk_id FROM main.frames
WHERE date(timestamp) = '$TARGET_DATE' AND video_chunk_id IS NOT NULL
);
DETACH nas;
"
run_sqlite_heredoc "frames ($SRC_FRAMES rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "ocr_text ($SRC_OCR rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.ocr_text
SELECT o.* FROM main.ocr_text o
JOIN main.frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "ui_events ($SRC_UI rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.ui_events
SELECT * FROM main.ui_events WHERE date(timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "elements ($SRC_ELEMENTS rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.elements
SELECT e.* FROM main.elements e
JOIN main.frames f ON e.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "meetings ($SRC_MEETINGS rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.meetings
SELECT * FROM main.meetings WHERE date(meeting_start) = '$TARGET_DATE';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
step "Updating FTS indexes"
run_sqlite_heredoc "elements_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.elements_fts(rowid, text, role)
SELECT e.id, e.text, e.role
FROM nas.elements e
JOIN nas.frames f ON e.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE'
AND e.text IS NOT NULL;
DETACH nas;
"
run_sqlite_heredoc "frames_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.frames_fts(rowid, full_text, app_name, window_name, browser_url, id)
SELECT id, full_text, app_name, window_name, browser_url, id
FROM nas.frames
WHERE date(timestamp) = '$TARGET_DATE'
AND full_text IS NOT NULL;
DETACH nas;
"
run_sqlite_heredoc "ui_events_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.ui_events_fts(rowid, text_content, app_name, window_title, element_name)
SELECT id, text_content, app_name, window_title, element_name
FROM nas.ui_events
WHERE date(timestamp) = '$TARGET_DATE'
AND text_content IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
step "Verifying DB"
V_FRAMES=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';")
V_ELEMENTS=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
V_UI=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '$TARGET_DATE';")
V_OCR=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM ocr_text WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
V_MEETINGS=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '$TARGET_DATE';")
check "frames" "$V_FRAMES" "$SRC_FRAMES"
check "elements" "$V_ELEMENTS" "$SRC_ELEMENTS"
check "ui_events" "$V_UI" "$SRC_UI"
check "ocr_text" "$V_OCR" "$SRC_OCR"
check "meetings" "$V_MEETINGS" "$SRC_MEETINGS"
fi
# ─── COPY DATA FOLDER ─────────────────────────────────────────────────────────
# Always runs regardless of DB sync status
step "Copying data folder for $TARGET_DATE"
if [ -d "$DATA_SRC" ]; then
mkdir -p "$NAS_DATA/$TARGET_DATE"
RSYNC_START=$(date +%s)
printf " %-36s " "rsync $TARGET_DATE/ → NAS"
rsync -a --ignore-existing \
"$DATA_SRC/" \
"$NAS_DATA/$TARGET_DATE/" \
2>>"$LOG_FILE"
RSYNC_DUR=$(( $(date +%s) - RSYNC_START ))
COPIED_FILES=$(ls "$NAS_DATA/$TARGET_DATE" | wc -l | tr -d ' ')
SRC_FILES=$(ls "$DATA_SRC" | wc -l | tr -d ' ')
COPIED_SIZE=$(du -sh "$NAS_DATA/$TARGET_DATE" | cut -f1)
if [ "$COPIED_FILES" -eq "$SRC_FILES" ]; then
printf "\r %-36s ✓ %dm%02ds (%s files, %s)\n" \
"rsync $TARGET_DATE/ → NAS" \
"$(( RSYNC_DUR / 60 ))" "$(( RSYNC_DUR % 60 ))" \
"$COPIED_FILES" "$COPIED_SIZE" | tee -a "$LOG_FILE"
else
printf "\r %-36s ✗ %s / %s files\n" \
"rsync $TARGET_DATE/ → NAS" "$COPIED_FILES" "$SRC_FILES" | tee -a "$LOG_FILE"
fi
else
printf " %-36s %s\n" "rsync $TARGET_DATE/ → NAS" "skipped (no source dir)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
TOTAL_ELAPSED=$(( $(date +%s) - SCRIPT_START ))
DB_SIZE=$(du -sh "$NAS_DB" | cut -f1)
echo ""
log "Archive DB size: $DB_SIZE"
log "Total time: $(( TOTAL_ELAPSED / 60 ))m$(( TOTAL_ELAPSED % 60 ))s"
log "Sync complete for $TARGET_DATE"
log "========================================"
lets add ability to jump…, Editor Group 2
Problems (⇧⌘M)
PROBLEMS
Output (⇧⌘U)
OUTPUT
Debug Console (⇧⌘Y)
DEBUG CONSOLE
Terminal (⌃`)
TERMINAL
Ports
PORTS
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
No Ports Forwarded
0
Notifications
Signed out
Signed out
Shell Script
Editor Language Status: $(copilot) No inline suggestion available, Inline suggestions
LF
UTF-8
Spaces: 2
Ln 18, Col 36
Screen Reader Optimized
git-commit Lukas Kovalik (23 hours ago)
Lukas Kovalik (23 hours ago)
Info: Downloading VS Code Server...
lets add ability to jump fro,m search to timeline so we can see the exact screen (also based on monitor and time
Session history
New session
Message actions
This session is being continued from a previous conversation that ran out of context. The summary below covers the earlier portion of the conversation.
Summary:
1. Primary Request and Intent:
The user has been developing a Screenpipe dashboard on a Synology NAS. Requests in chronological order:
- **Q1**: Are db.sqlite-shm and db.sqlite-wal used? → Explained WAL mode; cleaned up files.
- **Q2**: AND combination search (term1 + term2 must both appear) → Added "AND also" input field.
- **Q3**: Explain UTC time issue, show date in results, make Only/Skip apps use multiselect → Implemented all three.
- **Q4**: Point sqlite-web at archive.db, add second sqlite-web for db.sqlite → Updated docker-compose.yml, added two services on ports 8767/8768.
- **Q5**: "still the same" (container not picking up config) → Explained `up -d` vs `restart`.
- **Q6**: Add git, push to gitea.com/lakylak/screenpipe.git → Initialized repo, committed, pushed.
- **Q7**: Add Timetable tab with video playback and timeline → Full implementation with click-to-seek, auto-advancing chunks, legend.
- **Q8**: Add scroll/zoom on timeline, jump to specific time, better awareness → Implemented zoom (1×–32×), scrollable timeline, overview minimap, viewport indicator, Jump-to-time input, screenshot thumbnail.
- **Q9 (most recent)**: Make playing speed more than 8×, fix speed not working, show position on timeline → CSS fix done (wider playhead + time label style), remainder in progress.
2. Key Technical Concepts:
- **SQLite WAL mode**: db.sqlite-shm and db.sqlite-wal are WAL companion files; cleaned with `PRAGMA wal_checkpoint(TRUNCATE)`.
- **SQLite FTS5**: Space-separated terms = AND; `MATCH 'term1 term2'` requires both; OR requires explicit `OR` keyword.
- **FastAPI**: Python backend with route handlers in main.py, consumers pattern for DB queries.
- **Docker Compose**: App image is built (code baked in), not volume-mounted → requires `build` + `up -d` for code changes. `restart` doesn't re-read compose file — need `up -d`.
- **sqlite-web**: Read-only flag `-r`, pre-built image, no rebuild needed for config changes.
- **Video playback**: screenpipe records at 0.1–0.3 fps (timelapse). `seek = offset_index / fps` gives seconds into video chunk. ~245 chunks/day across 2 monitors. Videos may be encoded at standard fps making them very short at native speed.
- **Timeline rendering**: App-colored segments built by merging consecutive frames with same `app_name`. Percentage positions: `((ts - dayStart) / span * 100)%`.
- **Zoom/scroll**: Inner div width = `zoom × 100%`, outer wrapper has `overflow-x:auto`. Playhead position stays as % of inner div, which is correct at all zoom levels.
- **Timer-based speed**: For speed > 2×, browser `playbackRate` is unreliable on low-FPS video; correct approach is `setInterval` advancing `video.currentTime` by `speed * interval_ms / 1000` seconds per tick.
- **UTC vs local time**: Backend treats `time_from`/`time_to` as UTC. Frontend converts with `localTimeToUtc()` before sending.
- **Git**: `#recycle/` in .gitignore treated as comment — must escape as `\#recycle/`.
3. Files and Code Sections:
- **`/volume1/screenpipe/app/main.py`**
- Added `/api/apps` endpoint (all unique app names from frames table)
- Added `/api/timetable` endpoint (frames + video URLs + screenshot URLs per device per date)
- `/api/timetable` response structure: `{frames: [{ts, app, win, video_url, seek, screenshot_url}], devices: [...], device: "..."}`
- Key snippet:
```python
@app.get("/api/timetable"
)
async def timetable_data(d: str | None = Query(None), device: str | None = Query(None)):
...
rows = conn.execute(f"""
SELECT f.timestamp AS ts, f.app_name AS app, f.window_name AS win,
f.offset_index, f.snapshot_path,
vc.file_path AS video_path, vc.fps AS video_fps
FROM frames f
JOIN video_chunks vc ON f.video_chunk_id = vc.id
WHERE f.timestamp >= ? AND f.timestamp < ?
AND f.video_chunk_id IS NOT NULL {dev_clause}
ORDER BY f.timestamp
""", params).fetchall()
# seek = offset_index / fps, screenshot_url from _snapshot_to_url(snapshot_path)
```
- **`/volume1/screenpipe/app/docker-compose.yml`**
- Changed sqlite-web service name to `sqlite-web-archive` → port 8767 → `/data/archive.db`
- Added `sqlite-web-live` → port 8768 → `/data/db.sqlite`
- screenpipe-app: port 8766, `DB_PATH: /data/db.sqlite`, `TZ: Europe/Sofia`
- **`/volume1/screenpipe/app/static/index.html`** (single large file with all CSS/HTML/JS)
- **Search enhancements**:
- Added `id="sq2"` "AND also" input between search-row1 and search-row2
- Replaced `sOnlyApps`/`sSkipApps` text inputs with custom multiselect components (`id="msOnlyApps"`, `id="msSkipApps"`)
- Updated `buildUrl()` to combine `q + " " + q2` and convert times with `localTimeToUtc()`
- Added `fmtDateTime(ts)` showing "Apr 20 14:08" format
- Added `localTimeToUtc(timeStr)` converting local HH:MM to UTC
- Multiselect state: `const _msState = { msOnlyApps: new Set(), msSkipApps: new Set() }`
- **Timetable tab** (new page):
- Tab button added between Work Report and AI Summary
- `showPage` array updated: `['activity','search','audio','report','timetable','summary']`
- `refresh()` calls `loadTimetable()` when on timetable page
- **Timetable CSS** (key styles):
```css
.tt-scroll-wrap { overflow-x:auto; ... scrollbar-width:thin; }
.tt-inner { position:relative; height:52px; } /* width set dynamically */
.tt-playhead { position:absolute; top:0; width:3px; height:36px; background:white; box-shadow:0 0 8px rgba(255,255,255,.9); z-index:10; pointer-events:none; display:none; }
.tt-playhead-time { position:absolute; top:2px; font-size:9px; font-weight:600; color:white; background:rgba(0,0,0,.75); padding:1px 4px; border-radius:2px; white-space:nowrap; transform:translateX(-50%); z-index:12; pointer-events:none; display:none; }
.tt-overview-wrap { position:relative; height:14px; ... cursor:pointer; }
.tt-overview-vp { position:absolute; background:rgba(255,255,255,0.12); border:1px solid rgba(255,255,255,0.4); }
```
- **Timetable JS state variables**:
```javascript
let _ttFrames = [], _ttChunks = [], _ttCurChunk = -1;
let _ttDayStart = 0, _ttDayEnd = 0, _ttZoom = 1;
const _ttAppColors = {};
const TT_ZOOMS = [1, 2, 4, 8, 16, 32];
const TT_TICK_MIN = {1:30, 2:15, 4:10, 8:5, 16:2, 32:1};
```
- **Key JS functions**:
- `loadTimetable()` — fetches `/api/timetable`, groups chunks, renders
- `ttZoom(dir)` — changes zoom level, updates inner width, re-renders ticks, scrolls to playhead
- `ttTimelineClick(e)` — uses `inner.getBoundingClientRect()` (works correctly when scrolled)
- `ttOverviewClick(e)` — scrolls timeline + seeks video
- `ttUpdateOverviewVp()` — updates white viewport rect using `wrap.scrollLeft / inner.scrollWidth`
- `ttJumpToTime()` — parses time input, converts to ms, calls `ttSeekToMs`
- `ttSeekToMs(tsMs)` — binary-searches nearest frame, loads chunk, seeks video
- `_ttScrollToPlayhead(force)` — scrolls wrap so playhead stays at ~35% from left when Follow is checked
- `_ttMovePlayhead(tsMs)` — sets `ph.style.left` as percentage, calls `_ttScrollToPlayhead`
- `_ttShowNow(f)` — updates screenshot thumbnail + now-text div
- `ttSyncBtn()` — syncs play/pause button text
- Keyboard: Space=play/pause, ←/→=±10s, Ctrl+←/→=±30s, +/-=zoom
- **`/volume1/screenpipe/.gitignore`**
```
*.db, *.sqlite, *.sqlite-shm, *.sqlite-wal
data/, \#recycle/,
@eaDir/
app_settings.json, app/.env
__pycache__/, *.pyc, .DS_Store
```
4. Errors and Fixes:
- **`#recycle/` in .gitignore treated as comment**: `#` starts a comment in .gitignore. Fixed by escaping: `\#recycle/`. Also had to `git rm --cached "#recycle/desktop.ini"` to unstage it.
- **`sudo docker compose restart sqlite-web` didn't apply config change**: `restart` reuses existing container config, doesn't re-read compose file. Fix: `sudo docker compose up -d` recreates containers with new config.
- **Orphan container holding port 8767**: Old `screenpipe-sqlweb` container still running after rename. Fix: `sudo docker compose up -d --remove-orphans`.
- **`sudo docker` not accessible from Claude Code**: Interactive sudo required. User runs commands in NAS terminal.
- **`git config --global --add safe.directory /volume1/screenpipe`**: Required due to dubious ownership of NAS volume directory.
5. Problem Solving:
- **Time zone confusion in search**: Backend uses UTC for time_from/time_to; frontend displays local time. Solved by `localTimeToUtc()` converting before API call, and showing date+time in results.
- **sqlite-web not showing April 17–21 data**: Container was pointing at db.sqlite (old config), not archive.db. Fixed by updating docker-compose.yml + `up -d`.
- **Video playback speed**: Browser `video.playbackRate` is capped (~16× max in Chrome) and performs poorly for very low FPS (0.1–0.3 fps) screenpipe videos. Each chunk may only be 1–2 seconds of wall-clock encoded video, playing through instantly. Solution: implement timer-based frame-jumping for speed > 2× (in progress).
- **Playhead visibility**: White 2px line was hard to see. Fixed CSS to 3px width + stronger box-shadow + added `.tt-playhead-time` overlay label style.
6. All User Messages:
- "do we use db.sqlite-shm and db.sqlite-wal for anything right now? [image of search UI] Lets add ability to search with combination... Explain how does the search work time seems to work in utc maybe display date next to the time in results. Make only apps and skip apps multiselect with all available apps."
- "doi I need to restart?"
- "there is sudo docker compose"
- "no still the same"
- "add git. I have created gitea repo https://gitea.com/lakylak/screenpipe.git"
- "just do it" (re: git push)
- "how to make sure data in :8767 are accurate and point to archive.db"
- "I can't see older than 16th there should 21st of april. In http://[IP_ADDRESS]:8766/ I can see all but not on sqlite viewer http://[IP_ADDRESS]:8767"
- "ok lets add additional port to read db.sqlite, I would like to see the structure of official db that reads db.sqlite db and one for archive"
- [docker compose output showing orphan container error]
- "looks great. I want to have ability to scroll left and right and also to jump to specific time. I want to be more aware to what I see. Still it should be fast"
- "lets make the playing speed more than 8x"
- "still playing speed is not showing properly still just in one second. also I want to see in timeline where I am"
7. Pending Tasks:
- **Playback speed fix** (in progress, partially done):
- Add `<div class="tt-playhead-time" id="ttPlayheadTime"></div>` inside `ttInner` HTML
- Implement `_ttStartSpeedTimer(speed)` / `_ttStopSpeedTimer()` / `ttSetSpeed(speed)` functions
- Update speed select `onchange` to call `ttSetSpeed(+this.value)`
- Add 64× option to speed select
- Update `_ttMovePlayhead` to also update `ttPlayheadTime` label
- Update `ttSyncBtn` to start/stop timer based on play state + speed
- Update `ttNextChunk` and `ttSeekToMs` to stop timer (restarted by onplay → ttSyncBtn)
- Rebuild Docker image after changes
8. Current Work:
Working on fixing two issues with the Timetable tab:
1. **Playback speed**: `video.playbackRate` doesn't work well for low-FPS screenpipe videos. The plan is to implement a `setInterval`-based frame-jumper for speed > 2× that advances `video.currentTime` by `speed * intervalMs / 1000` every 100–200ms, bypassing browser playbackRate limits.
2. **Timeline position indicator**: Playhead not prominent enough.
**CSS already changed** in `/volume1/screenpipe/app/static/index.html`:
```css
.tt-playhead { position:absolute; top:0; width:3px; height:36px; background:white; box-shadow:0 0 8px rgba(255,255,255,.9); z-index:10; pointer-events:none; display:none; }
.tt-playhead-time { position:absolute; top:2px; font-size:9px; font-weight:600; color:white; background:rgba(0,0,0,.75); padding:1px 4px; border-radius:2px; white-space:nowrap; transform:translateX(-50%); z-index:12; pointer-events:none; display:none; }
```
Session was interrupted by summary request after this CSS edit, mid-implementation.
9. Optional Next Step:
Continuing the fix for: "still playing speed is not showing properly still just in one second. also I want to see in timeline where I am"
The next steps in order are:
1. Add `<div class="tt-playhead-time" id="ttPlayheadTime"></div>` to the HTML inside `#ttInner` (after the existing `.tt-playhead` div)
2. Update `_ttMovePlayhead` to set `ttPlayheadTime` position and text content with `fmtTime()`
3. Add timer-based speed system to JS (new functions `_ttStartSpeedTimer`, `_ttStopSpeedTimer`, `ttSetSpeed`)
4. Update speed select's `onchange` to `ttSetSpeed(+this.value)` and add 64× option
5. Update `ttSyncBtn`, `ttNextChunk`, `ttSeekToMs` to integrate with timer
6. Rebuild: `sudo docker compose build screenpipe-app && sudo docker compose up -d screenpipe-app`
If you need specific details from before compaction (like exact code snippets, error messages, or content you generated), read the full transcript at: /home/Adm1n/.claude/projects/-volume1-screenpipe/7777f46e-1e40-4051-b4bb-f43aedd59556.jsonl
Continue the conversation from where it left off without asking the user any further questions. Resume directly — do not acknowledge the summary, do not recap what was happening, do not preface with "I'll continue" or similar. Pick up the last task as if the break never happened.
Thinking
Thinking
Bash
Find timetable speed and playhead related code
IN
grep -n "tt-playhead\|ttPlayhead\|ttInner\|_ttMovePlayhead\|ttSetSpeed\|_ttStartSpeed\|_ttStopSpeed\|ttSyncBtn\|playbackRate\|speed.*select\|spdSel\|ttSpeed" /volume1/screenpipe/app/static/index.html | head -80
Copy code to clipboard
OUT
207:.tt-playhead { position:absolute; top:0; width:3px; height:36px; background:white; box-shadow:0 0 8px rgba(255,255,255,.9); z-index:10; pointer-events:none; display:none; }
208:.tt-playhead-time { position:absolute; top:2px; font-size:9px; font-weight:600; color:white; background:rgba(0,0,0,.75); padding:1px 4px; border-radius:2px; white-space:nowrap; transform:translateX(-50%); z-index:12; pointer-events:none; display:none; }
580: <div class="tt-inner" id="ttInner" onclick="ttTimelineClick(event)">
583: <div class="tt-playhead" id="ttPlayhead"></div>
598: onpause="ttSyncBtn()"
599: onplay="ttSyncBtn()">
607: <select id="ttSpeed" onchange="document.getElementById('ttVideo').playbackRate=+this.value">
1624: document.getElementById('ttInner').style.width = '100%';
1632: document.getElementById('ttPlayhead').style.display = 'none';
1694: document.getElementById('ttInner').style.width = (_ttZoom * 100) + '%';
1700: const inner = document.getElementById('ttInner');
1710: const inner = document.getElementById('ttInner');
1718: const inner = document.getElementById('ttInner');
1750: _ttMovePlayhead(new Date(best.ts).getTime());
1772: _ttMovePlayhead(new Date(best.ts).getTime());
1791:function _ttMovePlayhead(tsMs) {
1792: const ph = document.getElementById('ttPlayhead');
1802: const ph = document.getElementById('ttPlayhead');
1805: const inner = document.getElementById('ttInner');
1819:function ttSyncBtn() {
Read
index.html
index.html
(lines 576-625)
Read
index.html
index.html
(lines 1786-1865)
Thinking
Thinking
Bash
Find chunk loading and playhead update functions
IN
grep -n "ttUpdatePlayhead\|ttNextChunk\|ttLoadChunk\|_ttCurChunk\|_ttChunks\|_ttFrames" /volume1/screenpipe/app/static/index.html | head -50
Copy code to clipboard
OUT
596: onended="ttNextChunk()"
597: ontimeupdate="ttUpdatePlayhead()"
1569:let _ttFrames = [];
1570:let _ttChunks = [];
1571:let _ttCurChunk = -1;
1607: _ttFrames = data.frames;
1609: for (const f of _ttFrames) {
1613: _ttChunks = [...chunkMap.values()];
1614: _ttCurChunk = -1;
1616: _ttDayStart = new Date(_ttFrames[0].ts).getTime();
1617: _ttDayEnd = new Date(_ttFrames[_ttFrames.length - 1].ts).getTime();
1620: for (const f of _ttFrames) _ttColor(f.app);
1640: for (const f of _ttFrames) {
1736: if (!_ttFrames.length) return;
1737: let best = _ttFrames[0], minDiff = Infinity;
1738: for (const f of _ttFrames) {
1742: const ci = _ttChunks.findIndex(ch => ch[0].video_url === best.video_url);
1744: _ttCurChunk = ci;
1753:function ttNextChunk() {
1754: if (_ttCurChunk + 1 >= _ttChunks.length) return;
1755: _ttCurChunk++;
1757: video.src = _ttChunks[_ttCurChunk][0].video_url;
1762:function ttUpdatePlayhead() {
1764: if (_ttCurChunk < 0 || _ttCurChunk >= _ttChunks.length) return;
1765: const chunk = _ttChunks[_ttCurChunk];
Read
index.html
index.html
(lines 1754-1793)
Thinking
Thinking
Read
index.html
index.html
(lines 1701-1760)
Thinking
Thinking
Read
index.html
index.html
(lines 1561-1640)
Thinking
Thinking
Bash
Find time formatting functions
IN
grep -n "function fmtTime\|function fmtDate\|function _fmt\|localTimeToUtc\|fmtDateTime" /volume1/screenpipe/app/static/index.html | head -20
Copy code to clipboard
OUT
1088: if (tf) url += `&time_from=${localTimeToUtc(tf)}`;
1089: if (tt) url += `&time_to=${localTimeToUtc(tt)}`;
1153: let meta = `<span style="color:var(--muted)">${fmtDateTime(r.timestamp)}</span>${srcBadge}`;
1166: meta = `<span style="color:var(--muted)">${fmtDateTime(r.timestamp)}</span>${srcBadge} <span class="badge ${r.is_input_device?'mic':'sys'}">${r.is_input_device?'MIC':'SYS'}</span>`;
1307:function fmtTime(ts) {
1312:function fmtDateTime(ts) {
1320:function localTimeToUtc(timeStr) {
1778:function _fmtSec(s) {
1788: `${fmtDateTime(f.ts)} · ${f.app}${f.win ? ' / ' + f.win : ''}`;
Read
index.html
index.html
(lines 1308-1327)
Thinking
Thinking
Now I have everything I need. I'll implement the frame-by-frame timer system that replaces
video.playbackRate
with wall-clock accurate playback, plus add the playhead time label. Let me make the changes:
Edit
index.html
index.html
Added 1 line...
|
Code
|
screenpipe_sync.sh — screenpipe [SSH: nas]
|
NULL
|
81028
|
|
Explorer (⇧⌘E) - 1 unsaved file
1
Search (⇧⌘F)
Explorer (⇧⌘E) - 1 unsaved file
1
Search (⇧⌘F)
Source Control (⌃⇧G) - 2 pending changes
2
Run and Debug (⇧⌘D)
Remote Explorer
Extensions (⇧⌘X) - 2 require update, 1 requires restart
3
Claude Code
Containers
EXPLORER
EXPLORER
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
SCREENPIPE [SSH: NAS]
#recycle
app
data
pipes
.gitignore
app_settings.json
archive.db
db.sqlite
screenpipe_sync.sh
screenpipe.db
Outline Section
OUTLINE
OUTLINE
Timeline Section
TIMELINE
TIMELINE
app_settings.json, Editor Group 1
screenpipe_sync.sh, Editor Group 1
db.sqlite-shm, preview, Editor Group 1
#!/bin/bash
# screenpipe_sync.sh
# Syncs Screenpipe SQLite data to a NAS archive database (append-only, no deletions).
# Also copies the day's video/frame data folder to the NAS.
#
# Usage:
# ./screenpipe_sync.sh # syncs yesterday (default)
# ./screenpipe_sync.sh 2026-04-15 # syncs a specific date
# ./screenpipe_sync.sh today # syncs today so far
#
# Cron example (runs at 3am daily):
# 0 3 * * * /Users/lukas/.screenpipe/screenpipe_sync.sh >> /Users/lukas/.screenpipe/sync.log 2>&1
set -euo pipefail
# ─── CONFIG ───────────────────────────────────────────────────────────────────
DB_SRC="${SCREENPIPE_DB:-$HOME/.screenpipe/db.sqlite}"
NAS_MOUNT="${NAS_MOUNT:-/Volumes/screenpipe}"
NAS_DB="$NAS_MOUNT/archive.db"
NAS_DATA="$NAS_MOUNT/data"
LOG_FILE="$HOME/.screenpipe/sync.log"
# ──────────────────────────────────────────────────────────────────────────────
# ─── HELPERS ──────────────────────────────────────────────────────────────────
SCRIPT_START=$(date +%s)
log() {
local msg="[$(date '+%Y-%m-%d %H:%M:%S')] $*"
echo "$msg" | tee -a "$LOG_FILE"
}
step() {
local now=$(date +%s)
local elapsed=$(( now - SCRIPT_START ))
local min=$(( elapsed / 60 ))
local sec=$(( elapsed % 60 ))
printf "\n[+%02dm%02ds] ▶ %s\n" "$min" "$sec" "$*" | tee -a "$LOG_FILE"
}
run_sqlite_heredoc() {
local label="$1"
local sql="$2"
local start=$(date +%s)
printf " %-36s " "$label"
sqlite3 "$DB_SRC" <<< "$sql" &
local pid=$!
local spin=[PASSWORD] '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏')
local i=0
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# ─── DATE ARGUMENT ────────────────────────────────────────────────────────────
if [ "${1:-}" = "today" ]; then
TARGET_DATE=$(date +%Y-%m-%d)
elif [ -n "${1:-}" ]; then
TARGET_DATE="$1"
if ! [[ "$TARGET_DATE" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
echo "ERROR: Invalid date format. Use YYYY-MM-DD, 'today', or no argument for yesterday."
exit 1
fi
else
TARGET_DATE=$(date -v-1d +%Y-%m-%d)
fi
log "========================================"
log "Screenpipe sync starting for: $TARGET_DATE"
log "========================================"
# ─── PREFLIGHT ────────────────────────────────────────────────────────────────
step "Preflight checks"
if [ ! -f "$DB_SRC" ]; then
log "ERROR: Source DB not found at $DB_SRC"; exit 1
fi
printf " %-20s %s (%s)\n" "Source DB:" "OK" "$(du -sh "$DB_SRC" | cut -f1)"
if [ ! -d "$NAS_MOUNT" ]; then
log "ERROR: NAS not mounted at $NAS_MOUNT"; exit 1
fi
printf " %-20s %s\n" "NAS mount:" "OK $NAS_MOUNT"
# Check if DB already synced for this date
DB_ALREADY_SYNCED=false
if [ -f "$NAS_DB" ]; then
EXISTING=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';" 2>/dev/null || echo "0")
if [ "$EXISTING" -gt "0" ]; then
log "Date $TARGET_DATE already has $EXISTING frames in archive — skipping DB sync"
DB_ALREADY_SYNCED=true
else
printf " %-20s %s (%s)\n" "Archive DB:" "exists" "$(du -sh "$NAS_DB" | cut -f1)"
fi
else
printf " %-20s %s\n" "Archive DB:" "will be created"
fi
# Source data dir for this date
DATA_SRC="$HOME/.screenpipe/data/data/$TARGET_DATE"
if [ -d "$DATA_SRC" ]; then
DATA_SIZE=$(du -sh "$DATA_SRC" | cut -f1)
DATA_FILES=$(ls "$DATA_SRC" | wc -l | tr -d ' ')
printf " %-20s %s (%s files, %s)\n" "Data dir:" "OK" "$DATA_FILES" "$DATA_SIZE"
else
printf " %-20s %s\n" "Data dir:" "not found — skipping file copy"
fi
# ─── DB SYNC ──────────────────────────────────────────────────────────────────
if [ "$DB_ALREADY_SYNCED" = false ]; then
# ─── COUNT SOURCE ROWS ────────────────────────────────────────────────────
step "Counting source rows for $TARGET_DATE"
SRC_FRAMES=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';")
SRC_ELEMENTS=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
SRC_UI=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '$TARGET_DATE';")
SRC_OCR=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM ocr_text WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
SRC_MEETINGS=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '$TARGET_DATE';")
printf " %-20s %s\n" "frames:" "$SRC_FRAMES"
printf " %-20s %s\n" "elements:" "$SRC_ELEMENTS"
printf " %-20s %s\n" "ui_events:" "$SRC_UI"
printf " %-20s %s\n" "ocr_text:" "$SRC_OCR"
printf " %-20s %s\n" "meetings:" "$SRC_MEETINGS"
if [ "$SRC_FRAMES" -eq "0" ]; then
log "No frames found for $TARGET_DATE — skipping DB sync"
DB_ALREADY_SYNCED=true
fi
fi
if [ "$DB_ALREADY_SYNCED" = false ]; then
# ─── INIT TABLES ──────────────────────────────────────────────────────────
step "Initialising tables, indexes, FTS"
run_sqlite_heredoc "creating tables" "
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
DETACH nas;
"
run_sqlite_heredoc "creating indexes" "
ATTACH '$NAS_DB' AS nas;
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestamp ON frames(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_frames_app_name ON frames(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_window_name ON frames(window_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_video_chunk_id ON frames(video_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_id ON elements(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_src_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_timestamp ON ui_events(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_app_name ON ui_events(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_frame_id ON ui_events(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_meetings_start ON meetings(meeting_start);
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
DETACH nas;
"
run_sqlite_heredoc "creating FTS tables" "
ATTACH '$NAS_DB' AS nas;
CREATE VIRTUAL TABLE IF NOT EXISTS nas.elements_fts USING fts5(
text, role, frame_id UNINDEXED,
content='elements', content_rowid='id', tokenize='unicode61'
);
CREATE VIRTUAL TABLE IF NOT EXISTS nas.frames_fts USING fts5(
full_text, app_name, window_name, browser_url, id UNINDEXED,
tokenize='unicode61'
);
CREATE VIRTUAL TABLE IF NOT EXISTS nas.ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
"
# ─── SYNC DATA ────────────────────────────────────────────────────────────
step "Syncing data for $TARGET_DATE"
run_sqlite_heredoc "video_chunks" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.video_chunks
SELECT * FROM main.video_chunks
WHERE id IN (
SELECT DISTINCT video_chunk_id FROM main.frames
WHERE date(timestamp) = '$TARGET_DATE' AND video_chunk_id IS NOT NULL
);
DETACH nas;
"
run_sqlite_heredoc "frames ($SRC_FRAMES rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "ocr_text ($SRC_OCR rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.ocr_text
SELECT o.* FROM main.ocr_text o
JOIN main.frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "ui_events ($SRC_UI rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.ui_events
SELECT * FROM main.ui_events WHERE date(timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "elements ($SRC_ELEMENTS rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.elements
SELECT e.* FROM main.elements e
JOIN main.frames f ON e.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "meetings ($SRC_MEETINGS rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.meetings
SELECT * FROM main.meetings WHERE date(meeting_start) = '$TARGET_DATE';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
step "Updating FTS indexes"
run_sqlite_heredoc "elements_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.elements_fts(rowid, text, role)
SELECT e.id, e.text, e.role
FROM nas.elements e
JOIN nas.frames f ON e.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE'
AND e.text IS NOT NULL;
DETACH nas;
"
run_sqlite_heredoc "frames_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.frames_fts(rowid, full_text, app_name, window_name, browser_url, id)
SELECT id, full_text, app_name, window_name, browser_url, id
FROM nas.frames
WHERE date(timestamp) = '$TARGET_DATE'
AND full_text IS NOT NULL;
DETACH nas;
"
run_sqlite_heredoc "ui_events_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.ui_events_fts(rowid, text_content, app_name, window_title, element_name)
SELECT id, text_content, app_name, window_title, element_name
FROM nas.ui_events
WHERE date(timestamp) = '$TARGET_DATE'
AND text_content IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
step "Verifying DB"
V_FRAMES=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';")
V_ELEMENTS=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
V_UI=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '$TARGET_DATE';")
V_OCR=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM ocr_text WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
V_MEETINGS=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '$TARGET_DATE';")
check "frames" "$V_FRAMES" "$SRC_FRAMES"
check "elements" "$V_ELEMENTS" "$SRC_ELEMENTS"
check "ui_events" "$V_UI" "$SRC_UI"
check "ocr_text" "$V_OCR" "$SRC_OCR"
check "meetings" "$V_MEETINGS" "$SRC_MEETINGS"
fi
# ─── COPY DATA FOLDER ─────────────────────────────────────────────────────────
# Always runs regardless of DB sync status
step "Copying data folder for $TARGET_DATE"
if [ -d "$DATA_SRC" ]; then
mkdir -p "$NAS_DATA/$TARGET_DATE"
RSYNC_START=$(date +%s)
printf " %-36s " "rsync $TARGET_DATE/ → NAS"
rsync -a --ignore-existing \
"$DATA_SRC/" \
"$NAS_DATA/$TARGET_DATE/" \
2>>"$LOG_FILE"
RSYNC_DUR=$(( $(date +%s) - RSYNC_START ))
COPIED_FILES=$(ls "$NAS_DATA/$TARGET_DATE" | wc -l | tr -d ' ')
SRC_FILES=$(ls "$DATA_SRC" | wc -l | tr -d ' ')
COPIED_SIZE=$(du -sh "$NAS_DATA/$TARGET_DATE" | cut -f1)
if [ "$COPIED_FILES" -eq "$SRC_FILES" ]; then
printf "\r %-36s ✓ %dm%02ds (%s files, %s)\n" \
"rsync $TARGET_DATE/ → NAS" \
"$(( RSYNC_DUR / 60 ))" "$(( RSYNC_DUR % 60 ))" \
"$COPIED_FILES" "$COPIED_SIZE" | tee -a "$LOG_FILE"
else
printf "\r %-36s ✗ %s / %s files\n" \
"rsync $TARGET_DATE/ → NAS" "$COPIED_FILES" "$SRC_FILES" | tee -a "$LOG_FILE"
fi
else
printf " %-36s %s\n" "rsync $TARGET_DATE/ → NAS" "skipped (no source dir)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
TOTAL_ELAPSED=$(( $(date +%s) - SCRIPT_START ))
DB_SIZE=$(du -sh "$NAS_DB" | cut -f1)
echo ""
log "Archive DB size: $DB_SIZE"
log "Total time: $(( TOTAL_ELAPSED / 60 ))m$(( TOTAL_ELAPSED % 60 ))s"
log "Sync complete for $TARGET_DATE"
log "========================================"
#!/bin/bash
# screenpipe_sync.sh
# Syncs Screenpipe SQLite data to a NAS archive database (append-only, no deletions).
# Also copies the day's video/frame data folder to the NAS.
#
# Usage:
# ./screenpipe_sync.sh # syncs yesterday (default)
# ./screenpipe_sync.sh 2026-04-15 # syncs a specific date
# ./screenpipe_sync.sh today # syncs today so far
#
# Cron example (runs at 3am daily):
# 0 3 * * * /Users/lukas/.screenpipe/screenpipe_sync.sh >> /Users/lukas/.screenpipe/sync.log 2>&1
set -euo pipefail
# ─── CONFIG ───────────────────────────────────────────────────────────────────
DB_SRC="${SCREENPIPE_DB:-$HOME/.screenpipe/db.sqlite}"
NAS_MOUNT="${NAS_MOUNT:-/Volumes/screenpipe}"
NAS_DB="$NAS_MOUNT/archive.db"
NAS_DATA="$NAS_MOUNT/data"
LOG_FILE="$HOME/.screenpipe/sync.log"
# ──────────────────────────────────────────────────────────────────────────────
# ─── HELPERS ──────────────────────────────────────────────────────────────────
SCRIPT_START=$(date +%s)
log() {
local msg="[$(date '+%Y-%m-%d %H:%M:%S')] $*"
echo "$msg" | tee -a "$LOG_FILE"
}
step() {
local now=$(date +%s)
local elapsed=$(( now - SCRIPT_START ))
local min=$(( elapsed / 60 ))
local sec=$(( elapsed % 60 ))
printf "\n[+%02dm%02ds] ▶ %s\n" "$min" "$sec" "$*" | tee -a "$LOG_FILE"
}
run_sqlite_heredoc() {
local label="$1"
local sql="$2"
local start=$(date +%s)
printf " %-36s " "$label"
sqlite3 "$DB_SRC" <<< "$sql" &
local pid=$!
local spin=[PASSWORD] '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏')
local i=0
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# ─── DATE ARGUMENT ────────────────────────────────────────────────────────────
if [ "${1:-}" = "today" ]; then
TARGET_DATE=$(date +%Y-%m-%d)
elif [ -n "${1:-}" ]; then
TARGET_DATE="$1"
if ! [[ "$TARGET_DATE" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
echo "ERROR: Invalid date format. Use YYYY-MM-DD, 'today', or no argument for yesterday."
exit 1
fi
else
TARGET_DATE=$(date -v-1d +%Y-%m-%d)
fi
log "========================================"
log "Screenpipe sync starting for: $TARGET_DATE"
log "========================================"
# ─── PREFLIGHT ────────────────────────────────────────────────────────────────
step "Preflight checks"
if [ ! -f "$DB_SRC" ]; then
log "ERROR: Source DB not found at $DB_SRC"; exit 1
fi
printf " %-20s %s (%s)\n" "Source DB:" "OK" "$(du -sh "$DB_SRC" | cut -f1)"
if [ ! -d "$NAS_MOUNT" ]; then
log "ERROR: NAS not mounted at $NAS_MOUNT"; exit 1
fi
printf " %-20s %s\n" "NAS mount:" "OK $NAS_MOUNT"
# Check if DB already synced for this date
DB_ALREADY_SYNCED=false
if [ -f "$NAS_DB" ]; then
EXISTING=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';" 2>/dev/null || echo "0")
if [ "$EXISTING" -gt "0" ]; then
log "Date $TARGET_DATE already has $EXISTING frames in archive — skipping DB sync"
DB_ALREADY_SYNCED=true
else
printf " %-20s %s (%s)\n" "Archive DB:" "exists" "$(du -sh "$NAS_DB" | cut -f1)"
fi
else
printf " %-20s %s\n" "Archive DB:" "will be created"
fi
# Source data dir for this date
DATA_SRC="$HOME/.screenpipe/data/data/$TARGET_DATE"
if [ -d "$DATA_SRC" ]; then
DATA_SIZE=$(du -sh "$DATA_SRC" | cut -f1)
DATA_FILES=$(ls "$DATA_SRC" | wc -l | tr -d ' ')
printf " %-20s %s (%s files, %s)\n" "Data dir:" "OK" "$DATA_FILES" "$DATA_SIZE"
else
printf " %-20s %s\n" "Data dir:" "not found — skipping file copy"
fi
# ─── DB SYNC ──────────────────────────────────────────────────────────────────
if [ "$DB_ALREADY_SYNCED" = false ]; then
# ─── COUNT SOURCE ROWS ────────────────────────────────────────────────────
step "Counting source rows for $TARGET_DATE"
SRC_FRAMES=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';")
SRC_ELEMENTS=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
SRC_UI=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '$TARGET_DATE';")
SRC_OCR=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM ocr_text WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
SRC_MEETINGS=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '$TARGET_DATE';")
printf " %-20s %s\n" "frames:" "$SRC_FRAMES"
printf " %-20s %s\n" "elements:" "$SRC_ELEMENTS"
printf " %-20s %s\n" "ui_events:" "$SRC_UI"
printf " %-20s %s\n" "ocr_text:" "$SRC_OCR"
printf " %-20s %s\n" "meetings:" "$SRC_MEETINGS"
if [ "$SRC_FRAMES" -eq "0" ]; then
log "No frames found for $TARGET_DATE — skipping DB sync"
DB_ALREADY_SYNCED=true
fi
fi
if [ "$DB_ALREADY_SYNCED" = false ]; then
# ─── INIT TABLES ──────────────────────────────────────────────────────────
step "Initialising tables, indexes, FTS"
run_sqlite_heredoc "creating tables" "
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
DETACH nas;
"
run_sqlite_heredoc "creating indexes" "
ATTACH '$NAS_DB' AS nas;
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestamp ON frames(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_frames_app_name ON frames(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_window_name ON frames(window_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_video_chunk_id ON frames(video_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_id ON elements(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_src_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_timestamp ON ui_events(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_app_name ON ui_events(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_frame_id ON ui_events(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_meetings_start ON meetings(meeting_start);
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
DETACH nas;
"
run_sqlite_heredoc "creating FTS tables" "
ATTACH '$NAS_DB' AS nas;
CREATE VIRTUAL TABLE IF NOT EXISTS nas.elements_fts USING fts5(
text, role, frame_id UNINDEXED,
content='elements', content_rowid='id', tokenize='unicode61'
);
CREATE VIRTUAL TABLE IF NOT EXISTS nas.frames_fts USING fts5(
full_text, app_name, window_name, browser_url, id UNINDEXED,
tokenize='unicode61'
);
CREATE VIRTUAL TABLE IF NOT EXISTS nas.ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
"
# ─── SYNC DATA ────────────────────────────────────────────────────────────
step "Syncing data for $TARGET_DATE"
run_sqlite_heredoc "video_chunks" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.video_chunks
SELECT * FROM main.video_chunks
WHERE id IN (
SELECT DISTINCT video_chunk_id FROM main.frames
WHERE date(timestamp) = '$TARGET_DATE' AND video_chunk_id IS NOT NULL
);
DETACH nas;
"
run_sqlite_heredoc "frames ($SRC_FRAMES rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "ocr_text ($SRC_OCR rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.ocr_text
SELECT o.* FROM main.ocr_text o
JOIN main.frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "ui_events ($SRC_UI rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.ui_events
SELECT * FROM main.ui_events WHERE date(timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "elements ($SRC_ELEMENTS rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.elements
SELECT e.* FROM main.elements e
JOIN main.frames f ON e.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "meetings ($SRC_MEETINGS rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.meetings
SELECT * FROM main.meetings WHERE date(meeting_start) = '$TARGET_DATE';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
step "Updating FTS indexes"
run_sqlite_heredoc "elements_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.elements_fts(rowid, text, role)
SELECT e.id, e.text, e.role
FROM nas.elements e
JOIN nas.frames f ON e.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE'
AND e.text IS NOT NULL;
DETACH nas;
"
run_sqlite_heredoc "frames_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.frames_fts(rowid, full_text, app_name, window_name, browser_url, id)
SELECT id, full_text, app_name, window_name, browser_url, id
FROM nas.frames
WHERE date(timestamp) = '$TARGET_DATE'
AND full_text IS NOT NULL;
DETACH nas;
"
run_sqlite_heredoc "ui_events_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.ui_events_fts(rowid, text_content, app_name, window_title, element_name)
SELECT id, text_content, app_name, window_title, element_name
FROM nas.ui_events
WHERE date(timestamp) = '$TARGET_DATE'
AND text_content IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
step "Verifying DB"
V_FRAMES=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';")
V_ELEMENTS=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
V_UI=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '$TARGET_DATE';")
V_OCR=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM ocr_text WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
V_MEETINGS=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '$TARGET_DATE';")
check "frames" "$V_FRAMES" "$SRC_FRAMES"
check "elements" "$V_ELEMENTS" "$SRC_ELEMENTS"
check "ui_events" "$V_UI" "$SRC_UI"
check "ocr_text" "$V_OCR" "$SRC_OCR"
check "meetings" "$V_MEETINGS" "$SRC_MEETINGS"
fi
# ─── COPY DATA FOLDER ─────────────────────────────────────────────────────────
# Always runs regardless of DB sync status
step "Copying data folder for $TARGET_DATE"
if [ -d "$DATA_SRC" ]; then
mkdir -p "$NAS_DATA/$TARGET_DATE"
RSYNC_START=$(date +%s)
printf " %-36s " "rsync $TARGET_DATE/ → NAS"
rsync -a --ignore-existing \
"$DATA_SRC/" \
"$NAS_DATA/$TARGET_DATE/" \
2>>"$LOG_FILE"
RSYNC_DUR=$(( $(date +%s) - RSYNC_START ))
COPIED_FILES=$(ls "$NAS_DATA/$TARGET_DATE" | wc -l | tr -d ' ')
SRC_FILES=$(ls "$DATA_SRC" | wc -l | tr -d ' ')
COPIED_SIZE=$(du -sh "$NAS_DATA/$TARGET_DATE" | cut -f1)
if [ "$COPIED_FILES" -eq "$SRC_FILES" ]; then
printf "\r %-36s ✓ %dm%02ds (%s files, %s)\n" \
"rsync $TARGET_DATE/ → NAS" \
"$(( RSYNC_DUR / 60 ))" "$(( RSYNC_DUR % 60 ))" \
"$COPIED_FILES" "$COPIED_SIZE" | tee -a "$LOG_FILE"
else
printf "\r %-36s ✗ %s / %s files\n" \
"rsync $TARGET_DATE/ → NAS" "$COPIED_FILES" "$SRC_FILES" | tee -a "$LOG_FILE"
fi
else
printf " %-36s %s\n" "rsync $TARGET_DATE/ → NAS" "skipped (no source dir)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
TOTAL_ELAPSED=$(( $(date +%s) - SCRIPT_START ))
DB_SIZE=$(du -sh "$NAS_DB" | cut -f1)
echo ""
log "Archive DB size: $DB_SIZE"
log "Total time: $(( TOTAL_ELAPSED / 60 ))m$(( TOTAL_ELAPSED % 60 ))s"
log "Sync complete for $TARGET_DATE"
log "========================================"
lets add ability to jump…, Editor Group 2
Problems (⇧⌘M)
PROBLEMS
Output (⇧⌘U)
OUTPUT
Debug Console (⇧⌘Y)
DEBUG CONSOLE
Terminal (⌃`)
TERMINAL
Ports
PORTS
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
No Ports Forwarded
0
Notifications
Signed out
Signed out
Shell Script
Editor Language Status: Inline Suggestions, next: $(copilot) No inline suggestion available, Inline suggestions
LF
UTF-8
Spaces: 2
Ln 352, Col 47 (13091 selected)
Screen Reader Optimized
git-commit Lukas Kovalik (23 hours ago)
Lukas Kovalik (23 hours ago)
Info: Downloading VS Code Server...
lets add ability to jump fro,m search to timeline so we can see the exact screen (also based on monitor and time
Session history
New session
Message actions
This session is being continued from a previous conversation that ran out of context. The summary below covers the earlier portion of the conversation.
Summary:
1. Primary Request and Intent:
The user has been developing a Screenpipe dashboard on a Synology NAS. Requests in chronological order:
- **Q1**: Are db.sqlite-shm and db.sqlite-wal used? → Explained WAL mode; cleaned up files.
- **Q2**: AND combination search (term1 + term2 must both appear) → Added "AND also" input field.
- **Q3**: Explain UTC time issue, show date in results, make Only/Skip apps use multiselect → Implemented all three.
- **Q4**: Point sqlite-web at archive.db, add second sqlite-web for db.sqlite → Updated docker-compose.yml, added two services on ports 8767/8768.
- **Q5**: "still the same" (container not picking up config) → Explained `up -d` vs `restart`.
- **Q6**: Add git, push to gitea.com/lakylak/screenpipe.git → Initialized repo, committed, pushed.
- **Q7**: Add Timetable tab with video playback and timeline → Full implementation with click-to-seek, auto-advancing chunks, legend.
- **Q8**: Add scroll/zoom on timeline, jump to specific time, better awareness → Implemented zoom (1×–32×), scrollable timeline, overview minimap, viewport indicator, Jump-to-time input, screenshot thumbnail.
- **Q9 (most recent)**: Make playing speed more than 8×, fix speed not working, show position on timeline → CSS fix done (wider playhead + time label style), remainder in progress.
2. Key Technical Concepts:
- **SQLite WAL mode**: db.sqlite-shm and db.sqlite-wal are WAL companion files; cleaned with `PRAGMA wal_checkpoint(TRUNCATE)`.
- **SQLite FTS5**: Space-separated terms = AND; `MATCH 'term1 term2'` requires both; OR requires explicit `OR` keyword.
- **FastAPI**: Python backend with route handlers in main.py, consumers pattern for DB queries.
- **Docker Compose**: App image is built (code baked in), not volume-mounted → requires `build` + `up -d` for code changes. `restart` doesn't re-read compose file — need `up -d`.
- **sqlite-web**: Read-only flag `-r`, pre-built image, no rebuild needed for config changes.
- **Video playback**: screenpipe records at 0.1–0.3 fps (timelapse). `seek = offset_index / fps` gives seconds into video chunk. ~245 chunks/day across 2 monitors. Videos may be encoded at standard fps making them very short at native speed.
- **Timeline rendering**: App-colored segments built by merging consecutive frames with same `app_name`. Percentage positions: `((ts - dayStart) / span * 100)%`.
- **Zoom/scroll**: Inner div width = `zoom × 100%`, outer wrapper has `overflow-x:auto`. Playhead position stays as % of inner div, which is correct at all zoom levels.
- **Timer-based speed**: For speed > 2×, browser `playbackRate` is unreliable on low-FPS video; correct approach is `setInterval` advancing `video.currentTime` by `speed * interval_ms / 1000` seconds per tick.
- **UTC vs local time**: Backend treats `time_from`/`time_to` as UTC. Frontend converts with `localTimeToUtc()` before sending.
- **Git**: `#recycle/` in .gitignore treated as comment — must escape as `\#recycle/`.
3. Files and Code Sections:
- **`/volume1/screenpipe/app/main.py`**
- Added `/api/apps` endpoint (all unique app names from frames table)
- Added `/api/timetable` endpoint (frames + video URLs + screenshot URLs per device per date)
- `/api/timetable` response structure: `{frames: [{ts, app, win, video_url, seek, screenshot_url}], devices: [...], device: "..."}`
- Key snippet:
```python
@app.get("/api/timetable"
)
async def timetable_data(d: str | None = Query(None), device: str | None = Query(None)):
...
rows = conn.execute(f"""
SELECT f.timestamp AS ts, f.app_name AS app, f.window_name AS win,
f.offset_index, f.snapshot_path,
vc.file_path AS video_path, vc.fps AS video_fps
FROM frames f
JOIN video_chunks vc ON f.video_chunk_id = vc.id
WHERE f.timestamp >= ? AND f.timestamp < ?
AND f.video_chunk_id IS NOT NULL {dev_clause}
ORDER BY f.timestamp
""", params).fetchall()
# seek = offset_index / fps, screenshot_url from _snapshot_to_url(snapshot_path)
```
- **`/volume1/screenpipe/app/docker-compose.yml`**
- Changed sqlite-web service name to `sqlite-web-archive` → port 8767 → `/data/archive.db`
- Added `sqlite-web-live` → port 8768 → `/data/db.sqlite`
- screenpipe-app: port 8766, `DB_PATH: /data/db.sqlite`, `TZ: Europe/Sofia`
- **`/volume1/screenpipe/app/static/index.html`** (single large file with all CSS/HTML/JS)
- **Search enhancements**:
- Added `id="sq2"` "AND also" input between search-row1 and search-row2
- Replaced `sOnlyApps`/`sSkipApps` text inputs with custom multiselect components (`id="msOnlyApps"`, `id="msSkipApps"`)
- Updated `buildUrl()` to combine `q + " " + q2` and convert times with `localTimeToUtc()`
- Added `fmtDateTime(ts)` showing "Apr 20 14:08" format
- Added `localTimeToUtc(timeStr)` converting local HH:MM to UTC
- Multiselect state: `const _msState = { msOnlyApps: new Set(), msSkipApps: new Set() }`
- **Timetable tab** (new page):
- Tab button added between Work Report and AI Summary
- `showPage` array updated: `['activity','search','audio','report','timetable','summary']`
- `refresh()` calls `loadTimetable()` when on timetable page
- **Timetable CSS** (key styles):
```css
.tt-scroll-wrap { overflow-x:auto; ... scrollbar-width:thin; }
.tt-inner { position:relative; height:52px; } /* width set dynamically */
.tt-playhead { position:absolute; top:0; width:3px; height:36px; background:white; box-shadow:0 0 8px rgba(255,255,255,.9); z-index:10; pointer-events:none; display:none; }
.tt-playhead-time { position:absolute; top:2px; font-size:9px; font-weight:600; color:white; background:rgba(0,0,0,.75); padding:1px 4px; border-radius:2px; white-space:nowrap; transform:translateX(-50%); z-index:12; pointer-events:none; display:none; }
.tt-overview-wrap { position:relative; height:14px; ... cursor:pointer; }
.tt-overview-vp { position:absolute; background:rgba(255,255,255,0.12); border:1px solid rgba(255,255,255,0.4); }
```
- **Timetable JS state variables**:
```javascript
let _ttFrames = [], _ttChunks = [], _ttCurChunk = -1;
let _ttDayStart = 0, _ttDayEnd = 0, _ttZoom = 1;
const _ttAppColors = {};
const TT_ZOOMS = [1, 2, 4, 8, 16, 32];
const TT_TICK_MIN = {1:30, 2:15, 4:10, 8:5, 16:2, 32:1};
```
- **Key JS functions**:
- `loadTimetable()` — fetches `/api/timetable`, groups chunks, renders
- `ttZoom(dir)` — changes zoom level, updates inner width, re-renders ticks, scrolls to playhead
- `ttTimelineClick(e)` — uses `inner.getBoundingClientRect()` (works correctly when scrolled)
- `ttOverviewClick(e)` — scrolls timeline + seeks video
- `ttUpdateOverviewVp()` — updates white viewport rect using `wrap.scrollLeft / inner.scrollWidth`
- `ttJumpToTime()` — parses time input, converts to ms, calls `ttSeekToMs`
- `ttSeekToMs(tsMs)` — binary-searches nearest frame, loads chunk, seeks video
- `_ttScrollToPlayhead(force)` — scrolls wrap so playhead stays at ~35% from left when Follow is checked
- `_ttMovePlayhead(tsMs)` — sets `ph.style.left` as percentage, calls `_ttScrollToPlayhead`
- `_ttShowNow(f)` — updates screenshot thumbnail + now-text div
- `ttSyncBtn()` — syncs play/pause button text
- Keyboard: Space=play/pause, ←/→=±10s, Ctrl+←/→=±30s, +/-=zoom
- **`/volume1/screenpipe/.gitignore`**
```
*.db, *.sqlite, *.sqlite-shm, *.sqlite-wal
data/, \#recycle/,
@eaDir/
app_settings.json, app/.env
__pycache__/, *.pyc, .DS_Store
```
4. Errors and Fixes:
- **`#recycle/` in .gitignore treated as comment**: `#` starts a comment in .gitignore. Fixed by escaping: `\#recycle/`. Also had to `git rm --cached "#recycle/desktop.ini"` to unstage it.
- **`sudo docker compose restart sqlite-web` didn't apply config change**: `restart` reuses existing container config, doesn't re-read compose file. Fix: `sudo docker compose up -d` recreates containers with new config.
- **Orphan container holding port 8767**: Old `screenpipe-sqlweb` container still running after rename. Fix: `sudo docker compose up -d --remove-orphans`.
- **`sudo docker` not accessible from Claude Code**: Interactive sudo required. User runs commands in NAS terminal.
- **`git config --global --add safe.directory /volume1/screenpipe`**: Required due to dubious ownership of NAS volume directory.
5. Problem Solving:
- **Time zone confusion in search**: Backend uses UTC for time_from/time_to; frontend displays local time. Solved by `localTimeToUtc()` converting before API call, and showing date+time in results.
- **sqlite-web not showing April 17–21 data**: Container was pointing at db.sqlite (old config), not archive.db. Fixed by updating docker-compose.yml + `up -d`.
- **Video playback speed**: Browser `video.playbackRate` is capped (~16× max in Chrome) and performs poorly for very low FPS (0.1–0.3 fps) screenpipe videos. Each chunk may only be 1–2 seconds of wall-clock encoded video, playing through instantly. Solution: implement timer-based frame-jumping for speed > 2× (in progress).
- **Playhead visibility**: White 2px line was hard to see. Fixed CSS to 3px width + stronger box-shadow + added `.tt-playhead-time` overlay label style.
6. All User Messages:
- "do we use db.sqlite-shm and db.sqlite-wal for anything right now? [image of search UI] Lets add ability to search with combination... Explain how does the search work time seems to work in utc maybe display date next to the time in results. Make only apps and skip apps multiselect with all available apps."
- "doi I need to restart?"
- "there is sudo docker compose"
- "no still the same"
- "add git. I have created gitea repo https://gitea.com/lakylak/screenpipe.git"
- "just do it" (re: git push)
- "how to make sure data in :8767 are accurate and point to archive.db"
- "I can't see older than 16th there should 21st of april. In http://[IP_ADDRESS]:8766/ I can see all but not on sqlite viewer http://[IP_ADDRESS]:8767"
- "ok lets add additional port to read db.sqlite, I would like to see the structure of official db that reads db.sqlite db and one for archive"
- [docker compose output showing orphan container error]
- "looks great. I want to have ability to scroll left and right and also to jump to specific time. I want to be more aware to what I see. Still it should be fast"
- "lets make the playing speed more than 8x"
- "still playing speed is not showing properly still just in one second. also I want to see in timeline where I am"
7. Pending Tasks:
- **Playback speed fix** (in progress, partially done):
- Add `<div class="tt-playhead-time" id="ttPlayheadTime"></div>` inside `ttInner` HTML
- Implement `_ttStartSpeedTimer(speed)` / `_ttStopSpeedTimer()` / `ttSetSpeed(speed)` functions
- Update speed select `onchange` to call `ttSetSpeed(+this.value)`
- Add 64× option to speed select
- Update `_ttMovePlayhead` to also update `ttPlayheadTime` label
- Update `ttSyncBtn` to start/stop timer based on play state + speed
- Update `ttNextChunk` and `ttSeekToMs` to stop timer (restarted by onplay → ttSyncBtn)
- Rebuild Docker image after changes
8. Current Work:
Working on fixing two issues with the Timetable tab:
1. **Playback speed**: `video.playbackRate` doesn't work well for low-FPS screenpipe videos. The plan is to implement a `setInterval`-based frame-jumper for speed > 2× that advances `video.currentTime` by `speed * intervalMs / 1000` every 100–200ms, bypassing browser playbackRate limits.
2. **Timeline position indicator**: Playhead not prominent enough.
**CSS already changed** in `/volume1/screenpipe/app/static/index.html`:
```css
.tt-playhead { position:absolute; top:0; width:3px; height:36px; background:white; box-shadow:0 0 8px rgba(255,255,255,.9); z-index:10; pointer-events:none; display:none; }
.tt-playhead-time { position:absolute; top:2px; font-size:9px; font-weight:600; color:white; background:rgba(0,0,0,.75); padding:1px 4px; border-radius:2px; white-space:nowrap; transform:translateX(-50%); z-index:12; pointer-events:none; display:none; }
```
Session was interrupted by summary request after this CSS edit, mid-implementation.
9. Optional Next Step:
Continuing the fix for: "still playing speed is not showing properly still just in one second. also I want to see in timeline where I am"
The next steps in order are:
1. Add `<div class="tt-playhead-time" id="ttPlayheadTime"></div>` to the HTML inside `#ttInner` (after the existing `.tt-playhead` div)
2. Update `_ttMovePlayhead` to set `ttPlayheadTime` position and text content with `fmtTime()`
3. Add timer-based speed system to JS (new functions `_ttStartSpeedTimer`, `_ttStopSpeedTimer`, `ttSetSpeed`)
4. Update speed select's `onchange` to `ttSetSpeed(+this.value)` and add 64× option
5. Update `ttSyncBtn`, `ttNextChunk`, `ttSeekToMs` to integrate with timer
6. Rebuild: `sudo docker compose build screenpipe-app && sudo docker compose up -d screenpipe-app`
If you need specific details from before compaction (like exact code snippets, error messages, or content you generated), read the full transcript at: /home/Adm1n/.claude/projects/-volume1-screenpipe/7777f46e-1e40-4051-b4bb-f43aedd59556.jsonl
Continue the conversation from where it left off without asking the user any further questions. Resume directly — do not acknowledge the summary, do not recap what was happening, do not preface with "I'll continue" or similar. Pick up the last task as if the break never happened.
Thinking
Thinking
Bash
Find timetable speed and playhead related code
IN
grep -n "tt-playhead\|ttPlayhead\|ttInner\|_ttMovePlayhead\|ttSetSpeed\|_ttStartSpeed\|_ttStopSpeed\|ttSyncBtn\|playbackRate\|speed.*select\|spdSel\|ttSpeed" /volume1/screenpipe/app/static/index.html | head -80
Copy code to clipboard
OUT
207:.tt-playhead { position:absolute; top:0; width:3px; height:36px; background:white; box-shadow:0 0 8px rgba(255,255,255,.9); z-index:10; pointer-events:none; display:none; }
208:.tt-playhead-time { position:absolute; top:2px; font-size:9px; font-weight:600; color:white; background:rgba(0,0,0,.75); padding:1px 4px; border-radius:2px; white-space:nowrap; transform:translateX(-50%); z-index:12; pointer-events:none; display:none; }
580: <div class="tt-inner" id="ttInner" onclick="ttTimelineClick(event)">
583: <div class="tt-playhead" id="ttPlayhead"></div>
598: onpause="ttSyncBtn()"
599: onplay="ttSyncBtn()">
607: <select id="ttSpeed" onchange="document.getElementById('ttVideo').playbackRate=+this.value">
1624: document.getElementById('ttInner').style.width = '100%';
1632: document.getElementById('ttPlayhead').style.display = 'none';
1694: document.getElementById('ttInner').style.width = (_ttZoom * 100) + '%';
1700: const inner = document.getElementById('ttInner');
1710: const inner = document.getElementById('ttInner');
1718: const inner = document.getElementById('ttInner');
1750: _ttMovePlayhead(new Date(best.ts).getTime());
1772: _ttMovePlayhead(new Date(best.ts).getTime());
1791:function _ttMovePlayhead(tsMs) {
1792: const ph = document.getElementById('ttPlayhead');
1802: const ph = document.getElementById('ttPlayhead');
1805: const inner = document.getElementById('ttInner');
1819:function ttSyncBtn() {
Read
index.html
index.html
(lines 576-625)
Read
index.html
index.html
(lines 1786-1865)
Thinking
Thinking
Bash
Find chunk loading and playhead update functions
IN
grep -n "ttUpdatePlayhead\|ttNextChunk\|ttLoadChunk\|_ttCurChunk\|_ttChunks\|_ttFrames" /volume1/screenpipe/app/static/index.html | head -50
Copy code to clipboard
OUT
596: onended="ttNextChunk()"
597: ontimeupdate="ttUpdatePlayhead()"
1569:let _ttFrames = [];
1570:let _ttChunks = [];
1571:let _ttCurChunk = -1;
1607: _ttFrames = data.frames;
1609: for (const f of _ttFrames) {
1613: _ttChunks = [...chunkMap.values()];
1614: _ttCurChunk = -1;
1616: _ttDayStart = new Date(_ttFrames[0].ts).getTime();
1617: _ttDayEnd = new Date(_ttFrames[_ttFrames.length - 1].ts).getTime();
1620: for (const f of _ttFrames) _ttColor(f.app);
1640: for (const f of _ttFrames) {
1736: if (!_ttFrames.length) return;
1737: let best = _ttFrames[0], minDiff = Infinity;
1738: for (const f of _ttFrames) {
1742: const ci = _ttChunks.findIndex(ch => ch[0].video_url === best.video_url);
1744: _ttCurChunk = ci;
1753:function ttNextChunk() {
1754: if (_ttCurChunk + 1 >= _ttChunks.length) return;
1755: _ttCurChunk++;
1757: video.src = _ttChunks[_ttCurChunk][0].video_url;
1762:function ttUpdatePlayhead() {
1764: if (_ttCurChunk < 0 || _ttCurChunk >= _ttChunks.length) return;
1765: const chunk = _ttChunks[_ttCurChunk];
Read
index.html
index.html
(lines 1754-1793)
Thinking
Thinking
Read
index.html
index.html
(lines 1701-1760)
Thinking
Thinking
Read
index.html
index.html
(lines 1561-1640)
Thinking
Thinking
Bash
Find time formatting functions
IN
grep -n "function fmtTime\|function fmtDate\|function _fmt\|localTimeToUtc\|fmtDateTime" /volume1/screenpipe/app/static/index.html | head -20
Copy code to clipboard
OUT
1088: if (tf) url += `&time_from=${localTimeToUtc(tf)}`;
1089: if (tt) url += `&time_to=${localTimeToUtc(tt)}`;
1153: let meta = `<span style="color:var(--muted)">${fmtDateTime(r.timestamp)}</span>${srcBadge}`;
1166: meta = `<span style="color:var(--muted)">${fmtDateTime(r.timestamp)}</span>${srcBadge} <span class="badge ${r.is_input_device?'mic':'sys'}">${r.is_input_device?'MIC':'SYS'}</span>`;
1307:function fmtTime(ts) {
1312:function fmtDateTime(ts) {
1320:function localTimeToUtc(timeStr) {
1778:function _fmtSec(s) {
1788: `${fmtDateTime(f.ts)} · ${f.app}${f.win ? ' / ' + f.win : ''}`;
Read
index.html
index.html
(lines 1308-1327)
Thinking
Thinking
Now I have everything I need. I'll implement the frame-by-frame timer system that replaces
video.playbackRate
with wall-clock accurate playback, plus add the playhead time label. Let me make the changes:
Edit
index.html
index.html
Added 1 line...
|
Code
|
screenpipe_sync.sh — screenpipe [SSH: nas]
|
NULL
|
81312
|
|
Explorer (⇧⌘E) - 1 unsaved file
1
Search (⇧⌘F)
Explorer (⇧⌘E) - 1 unsaved file
1
Search (⇧⌘F)
Source Control (⌃⇧G) - 2 pending changes
2
Run and Debug (⇧⌘D)
Remote Explorer
Extensions (⇧⌘X) - 2 require update, 1 requires restart
3
Claude Code
Containers
EXPLORER
EXPLORER
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
SCREENPIPE [SSH: NAS]
#recycle
app
data
pipes
.gitignore
app_settings.json
archive.db
db.sqlite
screenpipe_sync.sh
screenpipe.db
Outline Section
OUTLINE
OUTLINE
Timeline Section
TIMELINE
TIMELINE
app_settings.json, Editor Group 1
screenpipe_sync.sh, Editor Group 1
db.sqlite-shm, preview, Editor Group 1
#!/bin/bash
# screenpipe_sync.sh
# Syncs Screenpipe SQLite data to a NAS archive database (append-only, no deletions).
# Also copies the day's video/frame data folder to the NAS.
#
# Usage:
# ./screenpipe_sync.sh # syncs yesterday (default)
# ./screenpipe_sync.sh 2026-04-15 # syncs a specific date
# ./screenpipe_sync.sh today # syncs today so far
#
# Cron example (runs at 3am daily):
# 0 3 * * * /Users/lukas/.screenpipe/screenpipe_sync.sh >> /Users/lukas/.screenpipe/sync.log 2>&1
set -euo pipefail
# ─── CONFIG ───────────────────────────────────────────────────────────────────
DB_SRC="${SCREENPIPE_DB:-$HOME/.screenpipe/db.sqlite}"
NAS_MOUNT="${NAS_MOUNT:-/Volumes/screenpipe}"
NAS_DB="$NAS_MOUNT/archive.db"
NAS_DATA="$NAS_MOUNT/data"
LOG_FILE="$HOME/.screenpipe/sync.log"
# ──────────────────────────────────────────────────────────────────────────────
# ─── HELPERS ──────────────────────────────────────────────────────────────────
SCRIPT_START=$(date +%s)
log() {
local msg="[$(date '+%Y-%m-%d %H:%M:%S')] $*"
echo "$msg" | tee -a "$LOG_FILE"
}
step() {
local now=$(date +%s)
local elapsed=$(( now - SCRIPT_START ))
local min=$(( elapsed / 60 ))
local sec=$(( elapsed % 60 ))
printf "\n[+%02dm%02ds] ▶ %s\n" "$min" "$sec" "$*" | tee -a "$LOG_FILE"
}
run_sqlite_heredoc() {
local label="$1"
local sql="$2"
local start=$(date +%s)
printf " %-36s " "$label"
sqlite3 "$DB_SRC" <<< "$sql" &
local pid=$!
local spin=[PASSWORD] '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏')
local i=0
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# ─── DATE ARGUMENT ────────────────────────────────────────────────────────────
if [ "${1:-}" = "today" ]; then
TARGET_DATE=$(date +%Y-%m-%d)
elif [ -n "${1:-}" ]; then
TARGET_DATE="$1"
if ! [[ "$TARGET_DATE" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
echo "ERROR: Invalid date format. Use YYYY-MM-DD, 'today', or no argument for yesterday."
exit 1
fi
else
TARGET_DATE=$(date -v-1d +%Y-%m-%d)
fi
log "========================================"
log "Screenpipe sync starting for: $TARGET_DATE"
log "========================================"
# ─── PREFLIGHT ────────────────────────────────────────────────────────────────
step "Preflight checks"
if [ ! -f "$DB_SRC" ]; then
log "ERROR: Source DB not found at $DB_SRC"; exit 1
fi
printf " %-20s %s (%s)\n" "Source DB:" "OK" "$(du -sh "$DB_SRC" | cut -f1)"
if [ ! -d "$NAS_MOUNT" ]; then
log "ERROR: NAS not mounted at $NAS_MOUNT"; exit 1
fi
printf " %-20s %s\n" "NAS mount:" "OK $NAS_MOUNT"
# Check if DB already synced for this date
DB_ALREADY_SYNCED=false
if [ -f "$NAS_DB" ]; then
EXISTING=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';" 2>/dev/null || echo "0")
if [ "$EXISTING" -gt "0" ]; then
log "Date $TARGET_DATE already has $EXISTING frames in archive — skipping DB sync"
DB_ALREADY_SYNCED=true
else
printf " %-20s %s (%s)\n" "Archive DB:" "exists" "$(du -sh "$NAS_DB" | cut -f1)"
fi
else
printf " %-20s %s\n" "Archive DB:" "will be created"
fi
# Source data dir for this date
DATA_SRC="$HOME/.screenpipe/data/data/$TARGET_DATE"
if [ -d "$DATA_SRC" ]; then
DATA_SIZE=$(du -sh "$DATA_SRC" | cut -f1)
DATA_FILES=$(ls "$DATA_SRC" | wc -l | tr -d ' ')
printf " %-20s %s (%s files, %s)\n" "Data dir:" "OK" "$DATA_FILES" "$DATA_SIZE"
else
printf " %-20s %s\n" "Data dir:" "not found — skipping file copy"
fi
# ─── DB SYNC ──────────────────────────────────────────────────────────────────
if [ "$DB_ALREADY_SYNCED" = false ]; then
# ─── COUNT SOURCE ROWS ────────────────────────────────────────────────────
step "Counting source rows for $TARGET_DATE"
SRC_FRAMES=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';")
SRC_ELEMENTS=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
SRC_UI=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '$TARGET_DATE';")
SRC_OCR=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM ocr_text WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
SRC_MEETINGS=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '$TARGET_DATE';")
printf " %-20s %s\n" "frames:" "$SRC_FRAMES"
printf " %-20s %s\n" "elements:" "$SRC_ELEMENTS"
printf " %-20s %s\n" "ui_events:" "$SRC_UI"
printf " %-20s %s\n" "ocr_text:" "$SRC_OCR"
printf " %-20s %s\n" "meetings:" "$SRC_MEETINGS"
if [ "$SRC_FRAMES" -eq "0" ]; then
log "No frames found for $TARGET_DATE — skipping DB sync"
DB_ALREADY_SYNCED=true
fi
fi
if [ "$DB_ALREADY_SYNCED" = false ]; then
# ─── INIT TABLES ──────────────────────────────────────────────────────────
step "Initialising tables, indexes, FTS"
run_sqlite_heredoc "creating tables" "
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
DETACH nas;
"
run_sqlite_heredoc "creating indexes" "
ATTACH '$NAS_DB' AS nas;
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestamp ON frames(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_frames_app_name ON frames(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_window_name ON frames(window_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_video_chunk_id ON frames(video_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_id ON elements(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_src_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_timestamp ON ui_events(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_app_name ON ui_events(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_frame_id ON ui_events(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_meetings_start ON meetings(meeting_start);
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
DETACH nas;
"
run_sqlite_heredoc "creating FTS tables" "
ATTACH '$NAS_DB' AS nas;
CREATE VIRTUAL TABLE IF NOT EXISTS nas.elements_fts USING fts5(
text, role, frame_id UNINDEXED,
content='elements', content_rowid='id', tokenize='unicode61'
);
CREATE VIRTUAL TABLE IF NOT EXISTS nas.frames_fts USING fts5(
full_text, app_name, window_name, browser_url, id UNINDEXED,
tokenize='unicode61'
);
CREATE VIRTUAL TABLE IF NOT EXISTS nas.ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
"
# ─── SYNC DATA ────────────────────────────────────────────────────────────
step "Syncing data for $TARGET_DATE"
run_sqlite_heredoc "video_chunks" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.video_chunks
SELECT * FROM main.video_chunks
WHERE id IN (
SELECT DISTINCT video_chunk_id FROM main.frames
WHERE date(timestamp) = '$TARGET_DATE' AND video_chunk_id IS NOT NULL
);
DETACH nas;
"
run_sqlite_heredoc "frames ($SRC_FRAMES rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "ocr_text ($SRC_OCR rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.ocr_text
SELECT o.* FROM main.ocr_text o
JOIN main.frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "ui_events ($SRC_UI rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.ui_events
SELECT * FROM main.ui_events WHERE date(timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "elements ($SRC_ELEMENTS rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.elements
SELECT e.* FROM main.elements e
JOIN main.frames f ON e.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "meetings ($SRC_MEETINGS rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.meetings
SELECT * FROM main.meetings WHERE date(meeting_start) = '$TARGET_DATE';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
step "Updating FTS indexes"
run_sqlite_heredoc "elements_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.elements_fts(rowid, text, role)
SELECT e.id, e.text, e.role
FROM nas.elements e
JOIN nas.frames f ON e.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE'
AND e.text IS NOT NULL;
DETACH nas;
"
run_sqlite_heredoc "frames_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.frames_fts(rowid, full_text, app_name, window_name, browser_url, id)
SELECT id, full_text, app_name, window_name, browser_url, id
FROM nas.frames
WHERE date(timestamp) = '$TARGET_DATE'
AND full_text IS NOT NULL;
DETACH nas;
"
run_sqlite_heredoc "ui_events_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.ui_events_fts(rowid, text_content, app_name, window_title, element_name)
SELECT id, text_content, app_name, window_title, element_name
FROM nas.ui_events
WHERE date(timestamp) = '$TARGET_DATE'
AND text_content IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
step "Verifying DB"
V_FRAMES=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';")
V_ELEMENTS=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
V_UI=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '$TARGET_DATE';")
V_OCR=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM ocr_text WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
V_MEETINGS=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '$TARGET_DATE';")
check "frames" "$V_FRAMES" "$SRC_FRAMES"
check "elements" "$V_ELEMENTS" "$SRC_ELEMENTS"
check "ui_events" "$V_UI" "$SRC_UI"
check "ocr_text" "$V_OCR" "$SRC_OCR"
check "meetings" "$V_MEETINGS" "$SRC_MEETINGS"
fi
# ─── COPY DATA FOLDER ─────────────────────────────────────────────────────────
# Always runs regardless of DB sync status
step "Copying data folder for $TARGET_DATE"
if [ -d "$DATA_SRC" ]; then
mkdir -p "$NAS_DATA/$TARGET_DATE"
RSYNC_START=$(date +%s)
printf " %-36s " "rsync $TARGET_DATE/ → NAS"
rsync -a --ignore-existing \
"$DATA_SRC/" \
"$NAS_DATA/$TARGET_DATE/" \
2>>"$LOG_FILE"
RSYNC_DUR=$(( $(date +%s) - RSYNC_START ))
COPIED_FILES=$(ls "$NAS_DATA/$TARGET_DATE" | wc -l | tr -d ' ')
SRC_FILES=$(ls "$DATA_SRC" | wc -l | tr -d ' ')
COPIED_SIZE=$(du -sh "$NAS_DATA/$TARGET_DATE" | cut -f1)
if [ "$COPIED_FILES" -eq "$SRC_FILES" ]; then
printf "\r %-36s ✓ %dm%02ds (%s files, %s)\n" \
"rsync $TARGET_DATE/ → NAS" \
"$(( RSYNC_DUR / 60 ))" "$(( RSYNC_DUR % 60 ))" \
"$COPIED_FILES" "$COPIED_SIZE" | tee -a "$LOG_FILE"
else
printf "\r %-36s ✗ %s / %s files\n" \
"rsync $TARGET_DATE/ → NAS" "$COPIED_FILES" "$SRC_FILES" | tee -a "$LOG_FILE"
fi
else
printf " %-36s %s\n" "rsync $TARGET_DATE/ → NAS" "skipped (no source dir)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
TOTAL_ELAPSED=$(( $(date +%s) - SCRIPT_START ))
DB_SIZE=$(du -sh "$NAS_DB" | cut -f1)
echo ""
log "Archive DB size: $DB_SIZE"
log "Total time: $(( TOTAL_ELAPSED / 60 ))m$(( TOTAL_ELAPSED % 60 ))s"
log "Sync complete for $TARGET_DATE"
log "========================================"
#!/bin/bash
# screenpipe_sync.sh
# Syncs Screenpipe SQLite data to a NAS archive database (append-only, no deletions).
# Also copies the day's video/frame data folder to the NAS.
#
# Usage:
# ./screenpipe_sync.sh # syncs yesterday (default)
# ./screenpipe_sync.sh 2026-04-15 # syncs a specific date
# ./screenpipe_sync.sh today # syncs today so far
#
# Cron example (runs at 3am daily):
# 0 3 * * * /Users/lukas/.screenpipe/screenpipe_sync.sh >> /Users/lukas/.screenpipe/sync.log 2>&1
set -euo pipefail
# ─── CONFIG ───────────────────────────────────────────────────────────────────
DB_SRC="${SCREENPIPE_DB:-$HOME/.screenpipe/db.sqlite}"
NAS_MOUNT="${NAS_MOUNT:-/Volumes/screenpipe}"
NAS_DB="$NAS_MOUNT/archive.db"
NAS_DATA="$NAS_MOUNT/data"
LOG_FILE="$HOME/.screenpipe/sync.log"
# ──────────────────────────────────────────────────────────────────────────────
# ─── HELPERS ──────────────────────────────────────────────────────────────────
SCRIPT_START=$(date +%s)
log() {
local msg="[$(date '+%Y-%m-%d %H:%M:%S')] $*"
echo "$msg" | tee -a "$LOG_FILE"
}
step() {
local now=$(date +%s)
local elapsed=$(( now - SCRIPT_START ))
local min=$(( elapsed / 60 ))
local sec=$(( elapsed % 60 ))
printf "\n[+%02dm%02ds] ▶ %s\n" "$min" "$sec" "$*" | tee -a "$LOG_FILE"
}
run_sqlite_heredoc() {
local label="$1"
local sql="$2"
local start=$(date +%s)
printf " %-36s " "$label"
sqlite3 "$DB_SRC" <<< "$sql" &
local pid=$!
local spin=[PASSWORD] '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏')
local i=0
while kill -0 "$pid" 2>/dev/null; do
printf "\r %-36s %s " "$label" "${spin[$i]}"
i=$(( (i + 1) % 10 ))
sleep 0.2
done
wait "$pid"
local rc=$?
if [ $rc -ne 0 ]; then
printf "\r %-36s ✗ FAILED\n" "$label" | tee -a "$LOG_FILE"
exit $rc
fi
local dur=$(( $(date +%s) - start ))
printf "\r %-36s ✓ %dm%02ds\n" "$label" "$(( dur / 60 ))" "$(( dur % 60 ))" | tee -a "$LOG_FILE"
}
check() {
local label="$1" got="$2" expected="$3"
if [ "$got" -eq "$expected" ]; then
printf " %-20s %s / %s ✓\n" "$label:" "$got" "$expected"
else
printf " %-20s %s / %s ✗ MISMATCH\n" "$label:" "$got" "$expected"
fi
}
# ──────────────────────────────────────────────────────────────────────────────
# ─── DATE ARGUMENT ────────────────────────────────────────────────────────────
if [ "${1:-}" = "today" ]; then
TARGET_DATE=$(date +%Y-%m-%d)
elif [ -n "${1:-}" ]; then
TARGET_DATE="$1"
if ! [[ "$TARGET_DATE" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
echo "ERROR: Invalid date format. Use YYYY-MM-DD, 'today', or no argument for yesterday."
exit 1
fi
else
TARGET_DATE=$(date -v-1d +%Y-%m-%d)
fi
log "========================================"
log "Screenpipe sync starting for: $TARGET_DATE"
log "========================================"
# ─── PREFLIGHT ────────────────────────────────────────────────────────────────
step "Preflight checks"
if [ ! -f "$DB_SRC" ]; then
log "ERROR: Source DB not found at $DB_SRC"; exit 1
fi
printf " %-20s %s (%s)\n" "Source DB:" "OK" "$(du -sh "$DB_SRC" | cut -f1)"
if [ ! -d "$NAS_MOUNT" ]; then
log "ERROR: NAS not mounted at $NAS_MOUNT"; exit 1
fi
printf " %-20s %s\n" "NAS mount:" "OK $NAS_MOUNT"
# Check if DB already synced for this date
DB_ALREADY_SYNCED=false
if [ -f "$NAS_DB" ]; then
EXISTING=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';" 2>/dev/null || echo "0")
if [ "$EXISTING" -gt "0" ]; then
log "Date $TARGET_DATE already has $EXISTING frames in archive — skipping DB sync"
DB_ALREADY_SYNCED=true
else
printf " %-20s %s (%s)\n" "Archive DB:" "exists" "$(du -sh "$NAS_DB" | cut -f1)"
fi
else
printf " %-20s %s\n" "Archive DB:" "will be created"
fi
# Source data dir for this date
DATA_SRC="$HOME/.screenpipe/data/data/$TARGET_DATE"
if [ -d "$DATA_SRC" ]; then
DATA_SIZE=$(du -sh "$DATA_SRC" | cut -f1)
DATA_FILES=$(ls "$DATA_SRC" | wc -l | tr -d ' ')
printf " %-20s %s (%s files, %s)\n" "Data dir:" "OK" "$DATA_FILES" "$DATA_SIZE"
else
printf " %-20s %s\n" "Data dir:" "not found — skipping file copy"
fi
# ─── DB SYNC ──────────────────────────────────────────────────────────────────
if [ "$DB_ALREADY_SYNCED" = false ]; then
# ─── COUNT SOURCE ROWS ────────────────────────────────────────────────────
step "Counting source rows for $TARGET_DATE"
SRC_FRAMES=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';")
SRC_ELEMENTS=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
SRC_UI=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '$TARGET_DATE';")
SRC_OCR=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM ocr_text WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
SRC_MEETINGS=$(sqlite3 "$DB_SRC" "SELECT COUNT(*) FROM meetings WHERE date(meeting_start) = '$TARGET_DATE';")
printf " %-20s %s\n" "frames:" "$SRC_FRAMES"
printf " %-20s %s\n" "elements:" "$SRC_ELEMENTS"
printf " %-20s %s\n" "ui_events:" "$SRC_UI"
printf " %-20s %s\n" "ocr_text:" "$SRC_OCR"
printf " %-20s %s\n" "meetings:" "$SRC_MEETINGS"
if [ "$SRC_FRAMES" -eq "0" ]; then
log "No frames found for $TARGET_DATE — skipping DB sync"
DB_ALREADY_SYNCED=true
fi
fi
if [ "$DB_ALREADY_SYNCED" = false ]; then
# ─── INIT TABLES ──────────────────────────────────────────────────────────
step "Initialising tables, indexes, FTS"
run_sqlite_heredoc "creating tables" "
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
DETACH nas;
"
run_sqlite_heredoc "creating indexes" "
ATTACH '$NAS_DB' AS nas;
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestamp ON frames(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_frames_app_name ON frames(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_window_name ON frames(window_name);
CREATE INDEX IF NOT EXISTS nas.idx_frames_video_chunk_id ON frames(video_chunk_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_id ON elements(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_elements_frame_src_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_timestamp ON ui_events(timestamp);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_app_name ON ui_events(app_name);
CREATE INDEX IF NOT EXISTS nas.idx_ui_events_frame_id ON ui_events(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX IF NOT EXISTS nas.idx_meetings_start ON meetings(meeting_start);
CREATE INDEX IF NOT EXISTS nas.idx_video_chunks_device ON video_chunks(device_name);
DETACH nas;
"
run_sqlite_heredoc "creating FTS tables" "
ATTACH '$NAS_DB' AS nas;
CREATE VIRTUAL TABLE IF NOT EXISTS nas.elements_fts USING fts5(
text, role, frame_id UNINDEXED,
content='elements', content_rowid='id', tokenize='unicode61'
);
CREATE VIRTUAL TABLE IF NOT EXISTS nas.frames_fts USING fts5(
full_text, app_name, window_name, browser_url, id UNINDEXED,
tokenize='unicode61'
);
CREATE VIRTUAL TABLE IF NOT EXISTS nas.ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
);
DETACH nas;
"
# ─── SYNC DATA ────────────────────────────────────────────────────────────
step "Syncing data for $TARGET_DATE"
run_sqlite_heredoc "video_chunks" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.video_chunks
SELECT * FROM main.video_chunks
WHERE id IN (
SELECT DISTINCT video_chunk_id FROM main.frames
WHERE date(timestamp) = '$TARGET_DATE' AND video_chunk_id IS NOT NULL
);
DETACH nas;
"
run_sqlite_heredoc "frames ($SRC_FRAMES rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "ocr_text ($SRC_OCR rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.ocr_text
SELECT o.* FROM main.ocr_text o
JOIN main.frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "ui_events ($SRC_UI rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.ui_events
SELECT * FROM main.ui_events WHERE date(timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "elements ($SRC_ELEMENTS rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.elements
SELECT e.* FROM main.elements e
JOIN main.frames f ON e.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE';
DETACH nas;
"
run_sqlite_heredoc "meetings ($SRC_MEETINGS rows)" "
ATTACH '$NAS_DB' AS nas;
INSERT OR IGNORE INTO nas.meetings
SELECT * FROM main.meetings WHERE date(meeting_start) = '$TARGET_DATE';
DETACH nas;
"
# ─── FTS UPDATE ───────────────────────────────────────────────────────────
step "Updating FTS indexes"
run_sqlite_heredoc "elements_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.elements_fts(rowid, text, role)
SELECT e.id, e.text, e.role
FROM nas.elements e
JOIN nas.frames f ON e.frame_id = f.id
WHERE date(f.timestamp) = '$TARGET_DATE'
AND e.text IS NOT NULL;
DETACH nas;
"
run_sqlite_heredoc "frames_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.frames_fts(rowid, full_text, app_name, window_name, browser_url, id)
SELECT id, full_text, app_name, window_name, browser_url, id
FROM nas.frames
WHERE date(timestamp) = '$TARGET_DATE'
AND full_text IS NOT NULL;
DETACH nas;
"
run_sqlite_heredoc "ui_events_fts" "
ATTACH '$NAS_DB' AS nas;
INSERT INTO nas.ui_events_fts(rowid, text_content, app_name, window_title, element_name)
SELECT id, text_content, app_name, window_title, element_name
FROM nas.ui_events
WHERE date(timestamp) = '$TARGET_DATE'
AND text_content IS NOT NULL;
DETACH nas;
"
# ─── VERIFY DB ────────────────────────────────────────────────────────────
step "Verifying DB"
V_FRAMES=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM frames WHERE date(timestamp) = '$TARGET_DATE';")
V_ELEMENTS=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
V_UI=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '$TARGET_DATE';")
V_OCR=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM ocr_text WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE');")
V_MEETINGS=$(sqlite3 "$NAS_DB" "SELECT COUNT(*) FROM meetings WHERE date(meeting_start)= '$TARGET_DATE';")
check "frames" "$V_FRAMES" "$SRC_FRAMES"
check "elements" "$V_ELEMENTS" "$SRC_ELEMENTS"
check "ui_events" "$V_UI" "$SRC_UI"
check "ocr_text" "$V_OCR" "$SRC_OCR"
check "meetings" "$V_MEETINGS" "$SRC_MEETINGS"
fi
# ─── COPY DATA FOLDER ─────────────────────────────────────────────────────────
# Always runs regardless of DB sync status
step "Copying data folder for $TARGET_DATE"
if [ -d "$DATA_SRC" ]; then
mkdir -p "$NAS_DATA/$TARGET_DATE"
RSYNC_START=$(date +%s)
printf " %-36s " "rsync $TARGET_DATE/ → NAS"
rsync -a --ignore-existing \
"$DATA_SRC/" \
"$NAS_DATA/$TARGET_DATE/" \
2>>"$LOG_FILE"
RSYNC_DUR=$(( $(date +%s) - RSYNC_START ))
COPIED_FILES=$(ls "$NAS_DATA/$TARGET_DATE" | wc -l | tr -d ' ')
SRC_FILES=$(ls "$DATA_SRC" | wc -l | tr -d ' ')
COPIED_SIZE=$(du -sh "$NAS_DATA/$TARGET_DATE" | cut -f1)
if [ "$COPIED_FILES" -eq "$SRC_FILES" ]; then
printf "\r %-36s ✓ %dm%02ds (%s files, %s)\n" \
"rsync $TARGET_DATE/ → NAS" \
"$(( RSYNC_DUR / 60 ))" "$(( RSYNC_DUR % 60 ))" \
"$COPIED_FILES" "$COPIED_SIZE" | tee -a "$LOG_FILE"
else
printf "\r %-36s ✗ %s / %s files\n" \
"rsync $TARGET_DATE/ → NAS" "$COPIED_FILES" "$SRC_FILES" | tee -a "$LOG_FILE"
fi
else
printf " %-36s %s\n" "rsync $TARGET_DATE/ → NAS" "skipped (no source dir)"
fi
# ─── SUMMARY ──────────────────────────────────────────────────────────────────
TOTAL_ELAPSED=$(( $(date +%s) - SCRIPT_START ))
DB_SIZE=$(du -sh "$NAS_DB" | cut -f1)
echo ""
log "Archive DB size: $DB_SIZE"
log "Total time: $(( TOTAL_ELAPSED / 60 ))m$(( TOTAL_ELAPSED % 60 ))s"
log "Sync complete for $TARGET_DATE"
log "========================================"
lets add ability to jump…, Editor Group 2
Problems (⇧⌘M)
PROBLEMS
Output (⇧⌘U)
OUTPUT
Debug Console (⇧⌘Y)
DEBUG CONSOLE
Terminal (⌃`)
TERMINAL
Ports
PORTS
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
No Ports Forwarded
0
Notifications
Signed out
Signed out
Shell Script
Editor Language Status: Inline Suggestions, next: $(copilot) No inline suggestion available, Inline suggestions
LF
UTF-8
Spaces: 2
Ln 352, Col 47 (13091 selected)
Screen Reader Optimized
git-commit Lukas Kovalik (23 hours ago)
Lukas Kovalik (23 hours ago)
Info: Downloading VS Code Server...
lets add ability to jump fro,m search to timeline so we can see the exact screen (also based on monitor and time
Session history
New session
Message actions
This session is being continued from a previous conversation that ran out of context. The summary below covers the earlier portion of the conversation.
Summary:
1. Primary Request and Intent:
The user has been developing a Screenpipe dashboard on a Synology NAS. Requests in chronological order:
- **Q1**: Are db.sqlite-shm and db.sqlite-wal used? → Explained WAL mode; cleaned up files.
- **Q2**: AND combination search (term1 + term2 must both appear) → Added "AND also" input field.
- **Q3**: Explain UTC time issue, show date in results, make Only/Skip apps use multiselect → Implemented all three.
- **Q4**: Point sqlite-web at archive.db, add second sqlite-web for db.sqlite → Updated docker-compose.yml, added two services on ports 8767/8768.
- **Q5**: "still the same" (container not picking up config) → Explained `up -d` vs `restart`.
- **Q6**: Add git, push to gitea.com/lakylak/screenpipe.git → Initialized repo, committed, pushed.
- **Q7**: Add Timetable tab with video playback and timeline → Full implementation with click-to-seek, auto-advancing chunks, legend.
- **Q8**: Add scroll/zoom on timeline, jump to specific time, better awareness → Implemented zoom (1×–32×), scrollable timeline, overview minimap, viewport indicator, Jump-to-time input, screenshot thumbnail.
- **Q9 (most recent)**: Make playing speed more than 8×, fix speed not working, show position on timeline → CSS fix done (wider playhead + time label style), remainder in progress.
2. Key Technical Concepts:
- **SQLite WAL mode**: db.sqlite-shm and db.sqlite-wal are WAL companion files; cleaned with `PRAGMA wal_checkpoint(TRUNCATE)`.
- **SQLite FTS5**: Space-separated terms = AND; `MATCH 'term1 term2'` requires both; OR requires explicit `OR` keyword.
- **FastAPI**: Python backend with route handlers in main.py, consumers pattern for DB queries.
- **Docker Compose**: App image is built (code baked in), not volume-mounted → requires `build` + `up -d` for code changes. `restart` doesn't re-read compose file — need `up -d`.
- **sqlite-web**: Read-only flag `-r`, pre-built image, no rebuild needed for config changes.
- **Video playback**: screenpipe records at 0.1–0.3 fps (timelapse). `seek = offset_index / fps` gives seconds into video chunk. ~245 chunks/day across 2 monitors. Videos may be encoded at standard fps making them very short at native speed.
- **Timeline rendering**: App-colored segments built by merging consecutive frames with same `app_name`. Percentage positions: `((ts - dayStart) / span * 100)%`.
- **Zoom/scroll**: Inner div width = `zoom × 100%`, outer wrapper has `overflow-x:auto`. Playhead position stays as % of inner div, which is correct at all zoom levels.
- **Timer-based speed**: For speed > 2×, browser `playbackRate` is unreliable on low-FPS video; correct approach is `setInterval` advancing `video.currentTime` by `speed * interval_ms / 1000` seconds per tick.
- **UTC vs local time**: Backend treats `time_from`/`time_to` as UTC. Frontend converts with `localTimeToUtc()` before sending.
- **Git**: `#recycle/` in .gitignore treated as comment — must escape as `\#recycle/`.
3. Files and Code Sections:
- **`/volume1/screenpipe/app/main.py`**
- Added `/api/apps` endpoint (all unique app names from frames table)
- Added `/api/timetable` endpoint (frames + video URLs + screenshot URLs per device per date)
- `/api/timetable` response structure: `{frames: [{ts, app, win, video_url, seek, screenshot_url}], devices: [...], device: "..."}`
- Key snippet:
```python
@app.get("/api/timetable"
)
async def timetable_data(d: str | None = Query(None), device: str | None = Query(None)):
...
rows = conn.execute(f"""
SELECT f.timestamp AS ts, f.app_name AS app, f.window_name AS win,
f.offset_index, f.snapshot_path,
vc.file_path AS video_path, vc.fps AS video_fps
FROM frames f
JOIN video_chunks vc ON f.video_chunk_id = vc.id
WHERE f.timestamp >= ? AND f.timestamp < ?
AND f.video_chunk_id IS NOT NULL {dev_clause}
ORDER BY f.timestamp
""", params).fetchall()
# seek = offset_index / fps, screenshot_url from _snapshot_to_url(snapshot_path)
```
- **`/volume1/screenpipe/app/docker-compose.yml`**
- Changed sqlite-web service name to `sqlite-web-archive` → port 8767 → `/data/archive.db`
- Added `sqlite-web-live` → port 8768 → `/data/db.sqlite`
- screenpipe-app: port 8766, `DB_PATH: /data/db.sqlite`, `TZ: Europe/Sofia`
- **`/volume1/screenpipe/app/static/index.html`** (single large file with all CSS/HTML/JS)
- **Search enhancements**:
- Added `id="sq2"` "AND also" input between search-row1 and search-row2
- Replaced `sOnlyApps`/`sSkipApps` text inputs with custom multiselect components (`id="msOnlyApps"`, `id="msSkipApps"`)
- Updated `buildUrl()` to combine `q + " " + q2` and convert times with `localTimeToUtc()`
- Added `fmtDateTime(ts)` showing "Apr 20 14:08" format
- Added `localTimeToUtc(timeStr)` converting local HH:MM to UTC
- Multiselect state: `const _msState = { msOnlyApps: new Set(), msSkipApps: new Set() }`
- **Timetable tab** (new page):
- Tab button added between Work Report and AI Summary
- `showPage` array updated: `['activity','search','audio','report','timetable','summary']`
- `refresh()` calls `loadTimetable()` when on timetable page
- **Timetable CSS** (key styles):
```css
.tt-scroll-wrap { overflow-x:auto; ... scrollbar-width:thin; }
.tt-inner { position:relative; height:52px; } /* width set dynamically */
.tt-playhead { position:absolute; top:0; width:3px; height:36px; background:white; box-shadow:0 0 8px rgba(255,255,255,.9); z-index:10; pointer-events:none; display:none; }
.tt-playhead-time { position:absolute; top:2px; font-size:9px; font-weight:600; color:white; background:rgba(0,0,0,.75); padding:1px 4px; border-radius:2px; white-space:nowrap; transform:translateX(-50%); z-index:12; pointer-events:none; display:none; }
.tt-overview-wrap { position:relative; height:14px; ... cursor:pointer; }
.tt-overview-vp { position:absolute; background:rgba(255,255,255,0.12); border:1px solid rgba(255,255,255,0.4); }
```
- **Timetable JS state variables**:
```javascript
let _ttFrames = [], _ttChunks = [], _ttCurChunk = -1;
let _ttDayStart = 0, _ttDayEnd = 0, _ttZoom = 1;
const _ttAppColors = {};
const TT_ZOOMS = [1, 2, 4, 8, 16, 32];
const TT_TICK_MIN = {1:30, 2:15, 4:10, 8:5, 16:2, 32:1};
```
- **Key JS functions**:
- `loadTimetable()` — fetches `/api/timetable`, groups chunks, renders
- `ttZoom(dir)` — changes zoom level, updates inner width, re-renders ticks, scrolls to playhead
- `ttTimelineClick(e)` — uses `inner.getBoundingClientRect()` (works correctly when scrolled)
- `ttOverviewClick(e)` — scrolls timeline + seeks video
- `ttUpdateOverviewVp()` — updates white viewport rect using `wrap.scrollLeft / inner.scrollWidth`
- `ttJumpToTime()` — parses time input, converts to ms, calls `ttSeekToMs`
- `ttSeekToMs(tsMs)` — binary-searches nearest frame, loads chunk, seeks video
- `_ttScrollToPlayhead(force)` — scrolls wrap so playhead stays at ~35% from left when Follow is checked
- `_ttMovePlayhead(tsMs)` — sets `ph.style.left` as percentage, calls `_ttScrollToPlayhead`
- `_ttShowNow(f)` — updates screenshot thumbnail + now-text div
- `ttSyncBtn()` — syncs play/pause button text
- Keyboard: Space=play/pause, ←/→=±10s, Ctrl+←/→=±30s, +/-=zoom
- **`/volume1/screenpipe/.gitignore`**
```
*.db, *.sqlite, *.sqlite-shm, *.sqlite-wal
data/, \#recycle/,
@eaDir/
app_settings.json, app/.env
__pycache__/, *.pyc, .DS_Store
```
4. Errors and Fixes:
- **`#recycle/` in .gitignore treated as comment**: `#` starts a comment in .gitignore. Fixed by escaping: `\#recycle/`. Also had to `git rm --cached "#recycle/desktop.ini"` to unstage it.
- **`sudo docker compose restart sqlite-web` didn't apply config change**: `restart` reuses existing container config, doesn't re-read compose file. Fix: `sudo docker compose up -d` recreates containers with new config.
- **Orphan container holding port 8767**: Old `screenpipe-sqlweb` container still running after rename. Fix: `sudo docker compose up -d --remove-orphans`.
- **`sudo docker` not accessible from Claude Code**: Interactive sudo required. User runs commands in NAS terminal.
- **`git config --global --add safe.directory /volume1/screenpipe`**: Required due to dubious ownership of NAS volume directory.
5. Problem Solving:
- **Time zone confusion in search**: Backend uses UTC for time_from/time_to; frontend displays local time. Solved by `localTimeToUtc()` converting before API call, and showing date+time in results.
- **sqlite-web not showing April 17–21 data**: Container was pointing at db.sqlite (old config), not archive.db. Fixed by updating docker-compose.yml + `up -d`.
- **Video playback speed**: Browser `video.playbackRate` is capped (~16× max in Chrome) and performs poorly for very low FPS (0.1–0.3 fps) screenpipe videos. Each chunk may only be 1–2 seconds of wall-clock encoded video, playing through instantly. Solution: implement timer-based frame-jumping for speed > 2× (in progress).
- **Playhead visibility**: White 2px line was hard to see. Fixed CSS to 3px width + stronger box-shadow + added `.tt-playhead-time` overlay label style.
6. All User Messages:
- "do we use db.sqlite-shm and db.sqlite-wal for anything right now? [image of search UI] Lets add ability to search with combination... Explain how does the search work time seems to work in utc maybe display date next to the time in results. Make only apps and skip apps multiselect with all available apps."
- "doi I need to restart?"
- "there is sudo docker compose"
- "no still the same"
- "add git. I have created gitea repo https://gitea.com/lakylak/screenpipe.git"
- "just do it" (re: git push)
- "how to make sure data in :8767 are accurate and point to archive.db"
- "I can't see older than 16th there should 21st of april. In http://[IP_ADDRESS]:8766/ I can see all but not on sqlite viewer http://[IP_ADDRESS]:8767"
- "ok lets add additional port to read db.sqlite, I would like to see the structure of official db that reads db.sqlite db and one for archive"
- [docker compose output showing orphan container error]
- "looks great. I want to have ability to scroll left and right and also to jump to specific time. I want to be more aware to what I see. Still it should be fast"
- "lets make the playing speed more than 8x"
- "still playing speed is not showing properly still just in one second. also I want to see in timeline where I am"
7. Pending Tasks:
- **Playback speed fix** (in progress, partially done):
- Add `<div class="tt-playhead-time" id="ttPlayheadTime"></div>` inside `ttInner` HTML
- Implement `_ttStartSpeedTimer(speed)` / `_ttStopSpeedTimer()` / `ttSetSpeed(speed)` functions
- Update speed select `onchange` to call `ttSetSpeed(+this.value)`
- Add 64× option to speed select
- Update `_ttMovePlayhead` to also update `ttPlayheadTime` label
- Update `ttSyncBtn` to start/stop timer based on play state + speed
- Update `ttNextChunk` and `ttSeekToMs` to stop timer (restarted by onplay → ttSyncBtn)
- Rebuild Docker image after changes
8. Current Work:
Working on fixing two issues with the Timetable tab:
1. **Playback speed**: `video.playbackRate` doesn't work well for low-FPS screenpipe videos. The plan is to implement a `setInterval`-based frame-jumper for speed > 2× that advances `video.currentTime` by `speed * intervalMs / 1000` every 100–200ms, bypassing browser playbackRate limits.
2. **Timeline position indicator**: Playhead not prominent enough.
**CSS already changed** in `/volume1/screenpipe/app/static/index.html`:
```css
.tt-playhead { position:absolute; top:0; width:3px; height:36px; background:white; box-shadow:0 0 8px rgba(255,255,255,.9); z-index:10; pointer-events:none; display:none; }
.tt-playhead-time { position:absolute; top:2px; font-size:9px; font-weight:600; color:white; background:rgba(0,0,0,.75); padding:1px 4px; border-radius:2px; white-space:nowrap; transform:translateX(-50%); z-index:12; pointer-events:none; display:none; }
```
Session was interrupted by summary request after this CSS edit, mid-implementation.
9. Optional Next Step:
Continuing the fix for: "still playing speed is not showing properly still just in one second. also I want to see in timeline where I am"
The next steps in order are:
1. Add `<div class="tt-playhead-time" id="ttPlayheadTime"></div>` to the HTML inside `#ttInner` (after the existing `.tt-playhead` div)
2. Update `_ttMovePlayhead` to set `ttPlayheadTime` position and text content with `fmtTime()`
3. Add timer-based speed system to JS (new functions `_ttStartSpeedTimer`, `_ttStopSpeedTimer`, `ttSetSpeed`)
4. Update speed select's `onchange` to `ttSetSpeed(+this.value)` and add 64× option
5. Update `ttSyncBtn`, `ttNextChunk`, `ttSeekToMs` to integrate with timer
6. Rebuild: `sudo docker compose build screenpipe-app && sudo docker compose up -d screenpipe-app`
If you need specific details from before compaction (like exact code snippets, error messages, or content you generated), read the full transcript at: /home/Adm1n/.claude/projects/-volume1-screenpipe/7777f46e-1e40-4051-b4bb-f43aedd59556.jsonl
Continue the conversation from where it left off without asking the user any further questions. Resume directly — do not acknowledge the summary, do not recap what was happening, do not preface with "I'll continue" or similar. Pick up the last task as if the break never happened.
Thinking
Thinking
Bash
Find timetable speed and playhead related code
IN
grep -n "tt-playhead\|ttPlayhead\|ttInner\|_ttMovePlayhead\|ttSetSpeed\|_ttStartSpeed\|_ttStopSpeed\|ttSyncBtn\|playbackRate\|speed.*select\|spdSel\|ttSpeed" /volume1/screenpipe/app/static/index.html | head -80
Copy code to clipboard
OUT
207:.tt-playhead { position:absolute; top:0; width:3px; height:36px; background:white; box-shadow:0 0 8px rgba(255,255,255,.9); z-index:10; pointer-events:none; display:none; }
208:.tt-playhead-time { position:absolute; top:2px; font-size:9px; font-weight:600; color:white; background:rgba(0,0,0,.75); padding:1px 4px; border-radius:2px; white-space:nowrap; transform:translateX(-50%); z-index:12; pointer-events:none; display:none; }
580: <div class="tt-inner" id="ttInner" onclick="ttTimelineClick(event)">
583: <div class="tt-playhead" id="ttPlayhead"></div>
598: onpause="ttSyncBtn()"
599: onplay="ttSyncBtn()">
607: <select id="ttSpeed" onchange="document.getElementById('ttVideo').playbackRate=+this.value">
1624: document.getElementById('ttInner').style.width = '100%';
1632: document.getElementById('ttPlayhead').style.display = 'none';
1694: document.getElementById('ttInner').style.width = (_ttZoom * 100) + '%';
1700: const inner = document.getElementById('ttInner');
1710: const inner = document.getElementById('ttInner');
1718: const inner = document.getElementById('ttInner');
1750: _ttMovePlayhead(new Date(best.ts).getTime());
1772: _ttMovePlayhead(new Date(best.ts).getTime());
1791:function _ttMovePlayhead(tsMs) {
1792: const ph = document.getElementById('ttPlayhead');
1802: const ph = document.getElementById('ttPlayhead');
1805: const inner = document.getElementById('ttInner');
1819:function ttSyncBtn() {
Read
index.html
index.html
(lines 576-625)
Read
index.html
index.html
(lines 1786-1865)
Thinking
Thinking
Bash
Find chunk loading and playhead update functions
IN
grep -n "ttUpdatePlayhead\|ttNextChunk\|ttLoadChunk\|_ttCurChunk\|_ttChunks\|_ttFrames" /volume1/screenpipe/app/static/index.html | head -50
Copy code to clipboard
OUT
596: onended="ttNextChunk()"
597: ontimeupdate="ttUpdatePlayhead()"
1569:let _ttFrames = [];
1570:let _ttChunks = [];
1571:let _ttCurChunk = -1;
1607: _ttFrames = data.frames;
1609: for (const f of _ttFrames) {
1613: _ttChunks = [...chunkMap.values()];
1614: _ttCurChunk = -1;
1616: _ttDayStart = new Date(_ttFrames[0].ts).getTime();
1617: _ttDayEnd = new Date(_ttFrames[_ttFrames.length - 1].ts).getTime();
1620: for (const f of _ttFrames) _ttColor(f.app);
1640: for (const f of _ttFrames) {
1736: if (!_ttFrames.length) return;
1737: let best = _ttFrames[0], minDiff = Infinity;
1738: for (const f of _ttFrames) {
1742: const ci = _ttChunks.findIndex(ch => ch[0].video_url === best.video_url);
1744: _ttCurChunk = ci;
1753:function ttNextChunk() {
1754: if (_ttCurChunk + 1 >= _ttChunks.length) return;
1755: _ttCurChunk++;
1757: video.src = _ttChunks[_ttCurChunk][0].video_url;
1762:function ttUpdatePlayhead() {
1764: if (_ttCurChunk < 0 || _ttCurChunk >= _ttChunks.length) return;
1765: const chunk = _ttChunks[_ttCurChunk];
Read
index.html
index.html
(lines 1754-1793)
Thinking
Thinking
Read
index.html
index.html
(lines 1701-1760)
Thinking
Thinking
Read
index.html
index.html
(lines 1561-1640)
Thinking
Thinking
Bash
Find time formatting functions
IN
grep -n "function fmtTime\|function fmtDate\|function _fmt\|localTimeToUtc\|fmtDateTime" /volume1/screenpipe/app/static/index.html | head -20
Copy code to clipboard
OUT
1088: if (tf) url += `&time_from=${localTimeToUtc(tf)}`;
1089: if (tt) url += `&time_to=${localTimeToUtc(tt)}`;
1153: let meta = `<span style="color:var(--muted)">${fmtDateTime(r.timestamp)}</span>${srcBadge}`;
1166: meta = `<span style="color:var(--muted)">${fmtDateTime(r.timestamp)}</span>${srcBadge} <span class="badge ${r.is_input_device?'mic':'sys'}">${r.is_input_device?'MIC':'SYS'}</span>`;
1307:function fmtTime(ts) {
1312:function fmtDateTime(ts) {
1320:function localTimeToUtc(timeStr) {
1778:function _fmtSec(s) {
1788: `${fmtDateTime(f.ts)} · ${f.app}${f.win ? ' / ' + f.win : ''}`;
Read
index.html
index.html
(lines 1308-1327)
Thinking
Thinking
Now I have everything I need. I'll implement the frame-by-frame timer system that replaces
video.playbackRate
with wall-clock accurate playback, plus add the playhead time label. Let me make the changes:
Edit
index.html
index.html
Added 1 line...
|
Code
|
screenpipe_sync.sh — screenpipe [SSH: nas]
|
NULL
|
81313
|
|
2026-04-23T09:13:09.380863Z INFO sck_rs::stream_m 2026-04-23T09:13:09.380863Z INFO sck_rs::stream_manager: invalidated persistent stream for display 2
2026-04-23T09:13:32.742255Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 3 excluded)
2026-04-23T09:14:01.764079Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4702465002163205464, trigger=click)
2026-04-23T09:14:04.223149Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4702465002163205464, trigger=visual_change)
2026-04-23T09:14:06.953796Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=147 elapsed=6.3719465s
2026-04-23T09:14:06.954006Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 147 eligible frames
2026-04-23T09:14:12.566935Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 70 frames, 10.3MB → 2.7MB (3.8x), 70 JPEGs deleted
2026-04-23T09:14:17.358704Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 75 frames, 9.6MB → 3.0MB (3.2x), 75 JPEGs deleted
2026-04-23T09:15:47.544198Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3660881845293713510, trigger=visual_change)
2026-04-23T09:15:50.997492Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3660881845293713510, trigger=click)
2026-04-23T09:15:51.600725Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3660881845293713510, trigger=click)
2026-04-23T09:15:55.723800Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3660881845293713510, trigger=click)
2026-04-23T09:15:56.933987Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3660881845293713510, trigger=visual_change)
2026-04-23T09:15:59.012409Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3660881845293713510, trigger=visual_change)
2026-04-23T09:16:49.882963Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3759145274440377841, trigger=visual_change)
2026-04-23T09:16:51.405936Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3759145274440377841, trigger=click)
2026-04-23T09:16:52.823011Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3759145274440377841, trigger=click)
2026-04-23T09:16:54.220304Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3759145274440377841, trigger=click)
2026-04-23T09:16:54.887021Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3759145274440377841, trigger=click)
2026-04-23T09:16:58.589203Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3759145274440377841, trigger=visual_change)
2026-04-23T09:18:05.879649Z WARN screenpipe_db::db: wal checkpoint: busy (could not truncate), 5054 pages in WAL
2026-04-23T09:18:05.879619Z WARN sqlx::query: summary="PRAGMA wal_checkpoint(TRUNCATE)" db.statement="" rows_affected=0 rows_returned=1 elapsed=5.220339167s
2026-04-23T09:19:24.740122Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=7.381061833s
2026-04-23T09:19:24.740850Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-23T09:19:36.514406Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2079049776495123607, trigger=click)
2026-04-23T09:24:26.477446Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=11 elapsed=1.729545666s
2026-04-23T09:24:26.477540Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 11 eligible frames
2026-04-23T09:24:27.316363Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 1.4MB → 1.4MB (1.0x), 5 JPEGs deleted
2026-04-23T09:24:27.966623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 0.6MB → 0.2MB (2.7x), 6 JPEGs deleted
2026-04-23T09:24:42.606557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:26:03.160247Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7786631749263421517, trigger=click)
2026-04-23T09:27:26.154494Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:27:34.433056Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:28:06.713361Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:28:33.527151Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5209591986308457575, trigger=click)
2026-04-23T09:28:34.249353Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5209591986308457575, trigger=click)
2026-04-23T09:28:36.237199Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5209591986308457575, trigger=click)
2026-04-23T09:28:42.253183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8747303508868961364, trigger=click)
2026-04-23T09:28:48.282686Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:28:50.613134Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:28:51.314522Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:29:31.961577Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=67 elapsed=3.996031s
2026-04-23T09:29:31.961670Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 67 eligible frames
2026-04-23T09:29:34.332658Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 29 frames, 5.8MB → 2.1MB (2.8x), 29 JPEGs deleted
2026-04-23T09:29:38.223511Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 36 frames, 7.4MB → 3.8MB (2.0x), 36 JPEGs deleted
2026-04-23T09:30:34.230785Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:30:39.665086Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:30:40.299751Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:30:45.663893Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:30:51.622228Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:30:52.321014Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:31:15.021588Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:31:15.691601Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:31:17.946692Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:31:18.653547Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:32:17.960360Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:32:24.051490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:32:29.442560Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:32:30.131038Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:32:32.452540Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:32:36.585069Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:32:39.322258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:33:18.072421Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:33:18.766929Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:33:22.098409Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:33:22.782084Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:34:27.313290Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:34:38.542722Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 89 eligible frames
2026-04-23T09:34:41.684595Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 5.6MB → 0.7MB (7.5x), 38 JPEGs deleted
2026-04-23T09:34:44.933963Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames, 10.6MB → 3.8MB (2.8x), 49 JPEGs deleted
2026-04-23T09:37:57.963204Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:37:58.697604Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:38:02.124214Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:38:53.190171Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:38:59.279885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:39:02.308536Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:39:36.189861Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:39:49.122120Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=50 elapsed=4.188474542s
2026-04-23T09:39:49.122232Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 50 eligible frames
2026-04-23T09:39:51.115025Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 2.9MB → 0.3MB (9.4x), 24 JPEGs deleted
2026-04-23T09:39:53.096763Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 2.3MB (2.2x), 24 JPEGs deleted
2026-04-23T09:40:57.095660Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:40:58.430714Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:01.130926Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:01.840278Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:04.072034Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:09.252541Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:09.972092Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:12.313228Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:13.696141Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:15.723102Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:41:16.452657Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:42:46.382248Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:43:42.993741Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6469703639183038647, trigger=visual_change)
2026-04-23T09:44:17.245560Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7072623502562616708, trigger=visual_change)
2026-04-23T09:44:56.342637Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.944921084s
2026-04-23T09:44:56.343212Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-23T09:44:57.216675Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.2MB → 0.2MB (6.9x), 10 JPEGs deleted
2026-04-23T09:44:58.298212Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 2.1MB → 0.7MB (2.8x), 9 JPEGs deleted
2026-04-23T09:45:10.982752Z INFO screenpipe_engine::meeting_detector: meeting v2: Idle -> Confirming (app=Firefox, signals=2)
2026-04-23T09:45:16.376695Z INFO screenpipe_engine::meeting_detector: meeting v2: Confirming -> Active (app=Firefox, signals=2, browser=true)
2026-04-23T09:45:16.378791Z INFO screenpipe_engine::meeting_detector: meeting v2: meeting started (id=9, app=Firefox, title=None)
2026-04-23T09:50:01.989691Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=23 elapsed=3.688976042s
2026-04-23T09:50:01.989962Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-23T09:50:03.098505Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 1.3MB → 0.2MB (7.4x), 11 JPEGs deleted
2026-04-23T09:50:04.627741Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.4MB → 0.8MB (3.1x), 10 JPEGs deleted
2026-04-23T09:50:07.629323Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4672421675042950776, trigger=click)
2026-04-23T09:52:11.400798Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:52:15.346773Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:52:18.174934Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:52:22.107623Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:52:32.020499Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:53:33.890239Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:53:35.304629Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:53:58.176084Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:54:14.248454Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:54:18.287472Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:54:20.289467Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:54:24.904239Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:54:27.981243Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:54:29.172367Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:54:30.192245Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:54:31.161165Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T09:55:11.821088Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=36 elapsed=7.192436875s
2026-04-23T09:55:11.821248Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 36 eligible frames
2026-04-23T09:55:13.532739Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 2.3MB → 0.5MB (5.0x), 19 JPEGs deleted
2026-04-23T09:55:16.625152Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 15 frames, 3.3MB → 1.4MB (2.4x), 15 JPEGs deleted
2026-04-23T09:56:01.584150Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:56:24.887186Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3078857793355977422, trigger=click)
2026-04-23T09:56:32.005363Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3078857793355977422, trigger=visual_change)
2026-04-23T09:56:41.374227Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3078857793355977422, trigger=visual_change)
2026-04-23T09:56:54.666839Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3078857793355977422, trigger=click)
2026-04-23T09:57:06.486753Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3593283938725328408, trigger=visual_change)
2026-04-23T09:57:14.384178Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5341343601501307187, trigger=visual_change)
2026-04-23T09:57:32.721765Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5341343601501307187, trigger=visual_change)
2026-04-23T09:59:03.111441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T09:59:18.292184Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:59:24.203906Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:59:28.763273Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T09:59:36.189282Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:00:16.817081Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 72 eligible frames
2026-04-23T10:00:21.637421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 7.5MB → 3.5MB (2.1x), 45 JPEGs deleted
2026-04-23T10:00:24.683587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 1.4MB (3.2x), 25 JPEGs deleted
2026-04-23T10:00:40.573974Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6464745230001326344, trigger=visual_change)
2026-04-23T10:02:52.495992Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8171437999531431641, trigger=click)
2026-04-23T10:02:53.374393Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8171437999531431641, trigger=click)
2026-04-23T10:03:37.373391Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1961095499263201650, trigger=click)
2026-04-23T10:04:58.338820Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T10:05:04.300061Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:05:10.114887Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:05:16.104422Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:05:20.754499Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:05:25.933831Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T10:05:30.717296Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=45 elapsed=5.043796209s
2026-04-23T10:05:30.717708Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 45 eligible frames
2026-04-23T10:05:33.129158Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 3.5MB → 1.3MB (2.8x), 21 JPEGs deleted
2026-04-23T10:05:35.719261Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 22 frames, 3.9MB → 1.6MB (2.5x), 22 JPEGs deleted
2026-04-23T10:06:54.427408Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:06:58.568476Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:07:35.294176Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T10:07:36.671700Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=click)
2026-04-23T10:07:46.281682Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3407362332434637772, trigger=click)
2026-04-23T10:10:42.001975Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=40 elapsed=6.278440792s
2026-04-23T10:10:42.002064Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 40 eligible frames
2026-04-23T10:10:45.302375Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 3.7MB → 1.7MB (2.2x), 21 JPEGs deleted
2026-04-23T10:10:47.110830Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 4.4MB → 0.6MB (7.8x), 17 JPEGs deleted
2026-04-23T10:12:18.002465Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7144568667011834365, trigger=click)
2026-04-23T10:13:16.229637Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3362537224271461493, trigger=visual_change)
2026-04-23T10:13:20.127210Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3362537224271461493, trigger=visual_change)
2026-04-23T10:15:43.498044Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)
2026-04-23T10:15:46.873827Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)
2026-04-23T10:15:49.085137Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 32 eligible frames
2026-04-23T10:15:49.496235Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)
2026-04-23T10:15:50.519319Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 3.0MB → 0.9MB (3.3x), 17 JPEGs deleted
2026-04-23T10:15:51.657703Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 3.4MB → 0.5MB (6.7x), 13 JPEGs deleted
2026-04-23T10:15:53.186964Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)
2026-04-23T10:15:55.743993Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-602531024127880156, trigger=visual_change)
2026-04-23T10:16:10.260016Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7730332891388508974, trigger=visual_change)
2026-04-23T10:16:19.398464Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)
2026-04-23T10:16:23.686689Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)
2026-04-23T10:16:27.662719Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)
2026-04-23T10:16:34.159786Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)
2026-04-23T10:17:00.356336Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5862100523266843105, trigger=visual_change)
2026-04-23T10:17:22.481007Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3265723714621232205, trigger=visual_change)
2026-04-23T10:17:29.195939Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3265723714621232205, trigger=visual_change)
2026-04-23T10:17:47.685112Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:17:51.199158Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:17:58.199222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:18:06.327777Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:18:13.175283Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:18:39.739176Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:19:27.720698Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:19:31.148096Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:19:35.991910Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:19:56.855761Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:20:03.521058Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:20:10.069690Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:20:18.117006Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3396265690023637464, trigger=visual_change)
2026-04-23T10:20:54.473088Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=27 elapsed=2.810096209s
2026-04-23T10:20:54.473356Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 27 eligible frames
2026-04-23T10:20:56.920972Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 2.2MB → 0.9MB (2.6x), 14 JPEGs deleted
2026-04-23T10:20:58.678464Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 2.5MB → 0.8MB (3.0x), 11 JPEGs deleted
2026-04-23T10:23:10.727426Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3844820439140861821, trigger=visual_change)
2026-04-23T10:25:16.468416Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:25:32.507777Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3407362332434637772, trigger=visual_change)
2026-04-23T10:26:05.910946Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=33 elapsed=7.132200208s
2026-04-23T10:26:05.912569Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 33 eligible frames
2026-04-23T10:26:09.921886Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 3.0MB → 1.2MB (2.5x), 18 JPEGs deleted
2026-04-23T10:26:13.670275Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 2.6MB → 0.9MB (3.0x), 13 JPEGs deleted
2026-04-23T10:26:20.034712Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:26:22.436991Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:26:25.816727Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:27:46.056157Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1615606372458852745, trigger=click)
2026-04-23T10:28:05.117587Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:16.307383Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:22.684004Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:39.022530Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:44.950116Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:50.090325Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:52.144212Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:28:55.229550Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:28:59.714370Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:29:08.010841Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:29:11.877274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:29:15.515889Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:29:19.052095Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:29:21.109938Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:29:28.551159Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:29:30.947483Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:29:38.350095Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:29:51.477755Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:29:56.846851Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:02.584960Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:06.779849Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:18.311444Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:22.665242Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:29.333028Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:37.983139Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:30:48.829636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:30:59.474314Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3712905987097609358, trigger=visual_change)
2026-04-23T10:31:16.115641Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=34 elapsed=1.523826083s
2026-04-23T10:31:16.115774Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 34 eligible frames
2026-04-23T10:31:19.674413Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 3.4MB → 2.0MB (1.7x), 19 JPEGs deleted
2026-04-23T10:31:20.281876Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:21.222414Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 3.4MB → 0.8MB (4.5x), 13 JPEGs deleted
2026-04-23T10:31:30.589390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:31.649068Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:34.542890Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:35.913592Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:42.222598Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:46.314096Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:31:56.457995Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=visual_change)
2026-04-23T10:32:02.440693Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2090548142966872323, trigger=click)
2026-04-23T10:32:11.844302Z INFO screenpipe_engine::meeting_detector: meeting v2: Active -> Ending (no controls, app=Firefox, id=9, grace=300s)
2026-04-23T10:36:21.778297Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 34 eligible frames
2026-04-23T10:36:23.408803Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 3.2MB → 1.6MB (2.1x), 19 JPEGs deleted
2026-04-23T10:36:24.427188Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 3.4MB → 0.7MB (4.8x), 13 JPEGs deleted
2026-04-23T10:37:15.245266Z INFO screenpipe_engine::meeting_detector: meeting v2: Ending -> Idle (timeout=300s, app=Firefox, id=9)
2026-04-23T10:37:15.499978Z INFO screenpipe_engine::meeting_detector: meeting v2: meeting ended (id=9)
2026-04-23T10:39:08.136849Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7072094695368023128, trigger=visual_change)
2026-04-23T10:40:10.173692Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5626541066854626210, trigger=visual_change)
2026-04-23T10:41:03.187335Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6908211675272154683, trigger=visual_change)
2026-04-23T10:41:27.801144Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=32 elapsed=3.230263875s
2026-04-23T10:41:27.801229Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 32 eligible frames
2026-04-23T10:41:30.240257Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 2.7MB → 1.1MB (2.4x), 17 JPEGs deleted
2026-04-23T10:41:31.414104Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 13 frames, 3.3MB → 1.1MB (3.1x), 13 JPEGs deleted
2026-04-23T10:43:59.795473Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)
2026-04-23T10:44:00.574274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:44:03.353223Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:44:06.333413Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:44:15.554031Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)
2026-04-23T10:44:16.272856Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:44:36.868831Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:44:52.509317Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:45:05.711036Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:45:15.149681Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)
2026-04-23T10:45:15.874930Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:45:18.722067Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:45:27.888960Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:45:32.102259Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:45:47.964284Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-250182447663358748, trigger=click)
2026-04-23T10:45:57.352178Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-250182447663358748, trigger=click)
2026-04-23T10:45:58.059330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-250182447663358748, trigger=click)
2026-04-23T10:46:00.786122Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-250182447663358748, trigger=click)
2026-04-23T10:46:01.515587Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-250182447663358748, trigger=click)
2026-04-23T10:46:32.335524Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 34 eligible frames
2026-04-23T10:46:33.454412Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 15 frames, 1.3MB → 0.3MB (4.3x), 15 JPEGs deleted
2026-04-23T10:46:35.185172Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 4.4MB → 0.8MB (5.1x), 17 JPEGs deleted
2026-04-23T10:49:51.424053Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:49:52.278022Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5090325678268650097, trigger=click)
2026-04-23T10:50:06.945403Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=visual_change)
2026-04-23T10:50:20.071306Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:50:27.322330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5090325678268650097, trigger=click)
2026-04-23T10:50:28.025501Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping captur...
|
iTerm2
|
screenpipe" — 95✕45
|
NULL
|
74140
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
39933
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
39934
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
39937
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
39938
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40009
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40010
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40087
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
2026-04-16T18:21:57.868769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=627428589598300904, trigger=visual_change)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40089
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
2026-04-16T18:21:57.868769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=627428589598300904, trigger=visual_change)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40090
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
2026-04-16T18:21:57.868769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=627428589598300904, trigger=visual_change)
2026-04-16T18:22:03.990449Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7847601528719527534, trigger=visual_change)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40091
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
2026-04-16T18:21:57.868769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=627428589598300904, trigger=visual_change)
2026-04-16T18:22:03.990449Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7847601528719527534, trigger=visual_change)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40092
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
2026-04-16T18:21:57.868769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=627428589598300904, trigger=visual_change)
2026-04-16T18:22:03.990449Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7847601528719527534, trigger=visual_change)
2026-04-16T18:22:09.863801Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4904988847481951993, trigger=click)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40093
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
2026-04-16T18:21:57.868769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=627428589598300904, trigger=visual_change)
2026-04-16T18:22:03.990449Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7847601528719527534, trigger=visual_change)
2026-04-16T18:22:09.863801Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4904988847481951993, trigger=click)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40094
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
2026-04-16T18:21:57.868769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=627428589598300904, trigger=visual_change)
2026-04-16T18:22:03.990449Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7847601528719527534, trigger=visual_change)
2026-04-16T18:22:09.863801Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4904988847481951993, trigger=click)
2026-04-16T18:22:16.293144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3159996471827114191, trigger=visual_change)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40105
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
2026-04-16T18:21:57.868769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=627428589598300904, trigger=visual_change)
2026-04-16T18:22:03.990449Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7847601528719527534, trigger=visual_change)
2026-04-16T18:22:09.863801Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4904988847481951993, trigger=click)
2026-04-16T18:22:16.293144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3159996471827114191, trigger=visual_change)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40106
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
2026-04-16T18:21:57.868769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=627428589598300904, trigger=visual_change)
2026-04-16T18:22:03.990449Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7847601528719527534, trigger=visual_change)
2026-04-16T18:22:09.863801Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4904988847481951993, trigger=click)
2026-04-16T18:22:16.293144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3159996471827114191, trigger=visual_change)
2026-04-16T18:22:52.141333Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6124926365899348608, trigger=visual_change)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40107
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
2026-04-16T18:21:57.868769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=627428589598300904, trigger=visual_change)
2026-04-16T18:22:03.990449Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7847601528719527534, trigger=visual_change)
2026-04-16T18:22:09.863801Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4904988847481951993, trigger=click)
2026-04-16T18:22:16.293144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3159996471827114191, trigger=visual_change)
2026-04-16T18:22:52.141333Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6124926365899348608, trigger=visual_change)
2026-04-16T18:22:53.221218Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:22:55.480199Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7252211048162575462, trigger=visual_change)
2026-04-16T18:22:55.519454Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40110
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
2026-04-16T18:21:57.868769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=627428589598300904, trigger=visual_change)
2026-04-16T18:22:03.990449Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7847601528719527534, trigger=visual_change)
2026-04-16T18:22:09.863801Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4904988847481951993, trigger=click)
2026-04-16T18:22:16.293144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3159996471827114191, trigger=visual_change)
2026-04-16T18:22:52.141333Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6124926365899348608, trigger=visual_change)
2026-04-16T18:22:53.221218Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:22:55.480199Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7252211048162575462, trigger=visual_change)
2026-04-16T18:22:55.519454Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40111
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
2026-04-16T18:21:57.868769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=627428589598300904, trigger=visual_change)
2026-04-16T18:22:03.990449Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7847601528719527534, trigger=visual_change)
2026-04-16T18:22:09.863801Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4904988847481951993, trigger=click)
2026-04-16T18:22:16.293144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3159996471827114191, trigger=visual_change)
2026-04-16T18:22:52.141333Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6124926365899348608, trigger=visual_change)
2026-04-16T18:22:53.221218Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:22:55.480199Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7252211048162575462, trigger=visual_change)
2026-04-16T18:22:55.519454Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:22:58.486565Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6677306331768658366, trigger=visual_change)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40112
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
2026-04-16T18:21:57.868769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=627428589598300904, trigger=visual_change)
2026-04-16T18:22:03.990449Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7847601528719527534, trigger=visual_change)
2026-04-16T18:22:09.863801Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4904988847481951993, trigger=click)
2026-04-16T18:22:16.293144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3159996471827114191, trigger=visual_change)
2026-04-16T18:22:52.141333Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6124926365899348608, trigger=visual_change)
2026-04-16T18:22:53.221218Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:22:55.480199Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7252211048162575462, trigger=visual_change)
2026-04-16T18:22:55.519454Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:22:58.486565Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6677306331768658366, trigger=visual_change)
2026-04-16T18:23:01.214243Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7252211048162575462, trigger=click)
2026-04-16T18:23:01.279315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:23:24.078893Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 9 eligible frames
2026-04-16T18:23:24.698710Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 0.7MB → 0.3MB (2.0x), 5 JPEGs deleted
2026-04-16T18:23:25.299329Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 4 frames, 0.9MB → 0.5MB (1.7x), 4 JPEGs deleted
2026-04-16T18:23:59.398666Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7328863994118092574, trigger=visual_change)
2026-04-16T18:24:02.420346Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7328863994118092574, trigger=visual_change)
2026-04-16T18:24:35.939575Z WARN sqlx::query: summary="SELECT text, app_name, window_name, …" db.statement="\n\nSELECT\n text,\n app_name,\n window_name,\n timestamp\nFROM\n (\n SELECT\n e.text,\n f.app_name,\n COALESCE(f.window_name, '') as window_name,\n f.timestamp,\n ROW_NUMBER() OVER (\n PARTITION BY f.app_name,\n f.window_name\n ORDER BY\n CASE\n WHEN e.role IN ('AXTextArea', 'AXTextField') THEN 0\n ELSE 1\n END,\n LENGTH(e.text) DESC\n ) as rn\n FROM\n elements e\n JOIN frames f ON f.id = e.frame_id\n WHERE\n f.timestamp BETWEEN '2026-04-16T03:24:34Z' AND '2026-04-16T15:24:34Z'\n AND e.text IS NOT NULL\n AND e.source = 'accessibility'\n AND LENGTH(e.text) BETWEEN 30 AND 300\n AND e.text NOT LIKE 'http%'\n AND e.text NOT LIKE 'cdn.%'\n ) ranked\nWHERE\n rn = 1\nORDER BY\n timestamp DESC\nLIMIT\n 20\n" rows_affected=0 rows_returned=20 elapsed=1.558414625s
2026-04-16T18:26:46.604032Z INFO screenpipe_engine::server: api_usage_5min: 12 requests
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40126
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
2026-04-16T18:21:57.868769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=627428589598300904, trigger=visual_change)
2026-04-16T18:22:03.990449Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7847601528719527534, trigger=visual_change)
2026-04-16T18:22:09.863801Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4904988847481951993, trigger=click)
2026-04-16T18:22:16.293144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3159996471827114191, trigger=visual_change)
2026-04-16T18:22:52.141333Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6124926365899348608, trigger=visual_change)
2026-04-16T18:22:53.221218Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:22:55.480199Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7252211048162575462, trigger=visual_change)
2026-04-16T18:22:55.519454Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:22:58.486565Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6677306331768658366, trigger=visual_change)
2026-04-16T18:23:01.214243Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7252211048162575462, trigger=click)
2026-04-16T18:23:01.279315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:23:24.078893Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 9 eligible frames
2026-04-16T18:23:24.698710Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 0.7MB → 0.3MB (2.0x), 5 JPEGs deleted
2026-04-16T18:23:25.299329Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 4 frames, 0.9MB → 0.5MB (1.7x), 4 JPEGs deleted
2026-04-16T18:23:59.398666Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7328863994118092574, trigger=visual_change)
2026-04-16T18:24:02.420346Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7328863994118092574, trigger=visual_change)
2026-04-16T18:24:35.939575Z WARN sqlx::query: summary="SELECT text, app_name, window_name, …" db.statement="\n\nSELECT\n text,\n app_name,\n window_name,\n timestamp\nFROM\n (\n SELECT\n e.text,\n f.app_name,\n COALESCE(f.window_name, '') as window_name,\n f.timestamp,\n ROW_NUMBER() OVER (\n PARTITION BY f.app_name,\n f.window_name\n ORDER BY\n CASE\n WHEN e.role IN ('AXTextArea', 'AXTextField') THEN 0\n ELSE 1\n END,\n LENGTH(e.text) DESC\n ) as rn\n FROM\n elements e\n JOIN frames f ON f.id = e.frame_id\n WHERE\n f.timestamp BETWEEN '2026-04-16T03:24:34Z' AND '2026-04-16T15:24:34Z'\n AND e.text IS NOT NULL\n AND e.source = 'accessibility'\n AND LENGTH(e.text) BETWEEN 30 AND 300\n AND e.text NOT LIKE 'http%'\n AND e.text NOT LIKE 'cdn.%'\n ) ranked\nWHERE\n rn = 1\nORDER BY\n timestamp DESC\nLIMIT\n 20\n" rows_affected=0 rows_returned=20 elapsed=1.558414625s
2026-04-16T18:26:46.604032Z INFO screenpipe_engine::server: api_usage_5min: 12 requests
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40127
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
2026-04-16T18:21:57.868769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=627428589598300904, trigger=visual_change)
2026-04-16T18:22:03.990449Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7847601528719527534, trigger=visual_change)
2026-04-16T18:22:09.863801Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4904988847481951993, trigger=click)
2026-04-16T18:22:16.293144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3159996471827114191, trigger=visual_change)
2026-04-16T18:22:52.141333Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6124926365899348608, trigger=visual_change)
2026-04-16T18:22:53.221218Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:22:55.480199Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7252211048162575462, trigger=visual_change)
2026-04-16T18:22:55.519454Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:22:58.486565Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6677306331768658366, trigger=visual_change)
2026-04-16T18:23:01.214243Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7252211048162575462, trigger=click)
2026-04-16T18:23:01.279315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:23:24.078893Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 9 eligible frames
2026-04-16T18:23:24.698710Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 0.7MB → 0.3MB (2.0x), 5 JPEGs deleted
2026-04-16T18:23:25.299329Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 4 frames, 0.9MB → 0.5MB (1.7x), 4 JPEGs deleted
2026-04-16T18:23:59.398666Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7328863994118092574, trigger=visual_change)
2026-04-16T18:24:02.420346Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7328863994118092574, trigger=visual_change)
2026-04-16T18:24:35.939575Z WARN sqlx::query: summary="SELECT text, app_name, window_name, …" db.statement="\n\nSELECT\n text,\n app_name,\n window_name,\n timestamp\nFROM\n (\n SELECT\n e.text,\n f.app_name,\n COALESCE(f.window_name, '') as window_name,\n f.timestamp,\n ROW_NUMBER() OVER (\n PARTITION BY f.app_name,\n f.window_name\n ORDER BY\n CASE\n WHEN e.role IN ('AXTextArea', 'AXTextField') THEN 0\n ELSE 1\n END,\n LENGTH(e.text) DESC\n ) as rn\n FROM\n elements e\n JOIN frames f ON f.id = e.frame_id\n WHERE\n f.timestamp BETWEEN '2026-04-16T03:24:34Z' AND '2026-04-16T15:24:34Z'\n AND e.text IS NOT NULL\n AND e.source = 'accessibility'\n AND LENGTH(e.text) BETWEEN 30 AND 300\n AND e.text NOT LIKE 'http%'\n AND e.text NOT LIKE 'cdn.%'\n ) ranked\nWHERE\n rn = 1\nORDER BY\n timestamp DESC\nLIMIT\n 20\n" rows_affected=0 rows_returned=20 elapsed=1.558414625s
2026-04-16T18:26:46.604032Z INFO screenpipe_engine::server: api_usage_5min: 12 requests
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40130
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
2026-04-16T18:21:57.868769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=627428589598300904, trigger=visual_change)
2026-04-16T18:22:03.990449Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7847601528719527534, trigger=visual_change)
2026-04-16T18:22:09.863801Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4904988847481951993, trigger=click)
2026-04-16T18:22:16.293144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3159996471827114191, trigger=visual_change)
2026-04-16T18:22:52.141333Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6124926365899348608, trigger=visual_change)
2026-04-16T18:22:53.221218Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:22:55.480199Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7252211048162575462, trigger=visual_change)
2026-04-16T18:22:55.519454Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:22:58.486565Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6677306331768658366, trigger=visual_change)
2026-04-16T18:23:01.214243Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7252211048162575462, trigger=click)
2026-04-16T18:23:01.279315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:23:24.078893Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 9 eligible frames
2026-04-16T18:23:24.698710Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 0.7MB → 0.3MB (2.0x), 5 JPEGs deleted
2026-04-16T18:23:25.299329Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 4 frames, 0.9MB → 0.5MB (1.7x), 4 JPEGs deleted
2026-04-16T18:23:59.398666Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7328863994118092574, trigger=visual_change)
2026-04-16T18:24:02.420346Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7328863994118092574, trigger=visual_change)
2026-04-16T18:24:35.939575Z WARN sqlx::query: summary="SELECT text, app_name, window_name, …" db.statement="\n\nSELECT\n text,\n app_name,\n window_name,\n timestamp\nFROM\n (\n SELECT\n e.text,\n f.app_name,\n COALESCE(f.window_name, '') as window_name,\n f.timestamp,\n ROW_NUMBER() OVER (\n PARTITION BY f.app_name,\n f.window_name\n ORDER BY\n CASE\n WHEN e.role IN ('AXTextArea', 'AXTextField') THEN 0\n ELSE 1\n END,\n LENGTH(e.text) DESC\n ) as rn\n FROM\n elements e\n JOIN frames f ON f.id = e.frame_id\n WHERE\n f.timestamp BETWEEN '2026-04-16T03:24:34Z' AND '2026-04-16T15:24:34Z'\n AND e.text IS NOT NULL\n AND e.source = 'accessibility'\n AND LENGTH(e.text) BETWEEN 30 AND 300\n AND e.text NOT LIKE 'http%'\n AND e.text NOT LIKE 'cdn.%'\n ) ranked\nWHERE\n rn = 1\nORDER BY\n timestamp DESC\nLIMIT\n 20\n" rows_affected=0 rows_returned=20 elapsed=1.558414625s
2026-04-16T18:26:46.604032Z INFO screenpipe_engine::server: api_usage_5min: 12 requests
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40131
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
2026-04-16T18:21:57.868769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=627428589598300904, trigger=visual_change)
2026-04-16T18:22:03.990449Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7847601528719527534, trigger=visual_change)
2026-04-16T18:22:09.863801Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4904988847481951993, trigger=click)
2026-04-16T18:22:16.293144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3159996471827114191, trigger=visual_change)
2026-04-16T18:22:52.141333Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6124926365899348608, trigger=visual_change)
2026-04-16T18:22:53.221218Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:22:55.480199Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7252211048162575462, trigger=visual_change)
2026-04-16T18:22:55.519454Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:22:58.486565Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6677306331768658366, trigger=visual_change)
2026-04-16T18:23:01.214243Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7252211048162575462, trigger=click)
2026-04-16T18:23:01.279315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:23:24.078893Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 9 eligible frames
2026-04-16T18:23:24.698710Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 0.7MB → 0.3MB (2.0x), 5 JPEGs deleted
2026-04-16T18:23:25.299329Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 4 frames, 0.9MB → 0.5MB (1.7x), 4 JPEGs deleted
2026-04-16T18:23:59.398666Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7328863994118092574, trigger=visual_change)
2026-04-16T18:24:02.420346Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7328863994118092574, trigger=visual_change)
2026-04-16T18:24:35.939575Z WARN sqlx::query: summary="SELECT text, app_name, window_name, …" db.statement="\n\nSELECT\n text,\n app_name,\n window_name,\n timestamp\nFROM\n (\n SELECT\n e.text,\n f.app_name,\n COALESCE(f.window_name, '') as window_name,\n f.timestamp,\n ROW_NUMBER() OVER (\n PARTITION BY f.app_name,\n f.window_name\n ORDER BY\n CASE\n WHEN e.role IN ('AXTextArea', 'AXTextField') THEN 0\n ELSE 1\n END,\n LENGTH(e.text) DESC\n ) as rn\n FROM\n elements e\n JOIN frames f ON f.id = e.frame_id\n WHERE\n f.timestamp BETWEEN '2026-04-16T03:24:34Z' AND '2026-04-16T15:24:34Z'\n AND e.text IS NOT NULL\n AND e.source = 'accessibility'\n AND LENGTH(e.text) BETWEEN 30 AND 300\n AND e.text NOT LIKE 'http%'\n AND e.text NOT LIKE 'cdn.%'\n ) ranked\nWHERE\n rn = 1\nORDER BY\n timestamp DESC\nLIMIT\n 20\n" rows_affected=0 rows_returned=20 elapsed=1.558414625s
2026-04-16T18:26:46.604032Z INFO screenpipe_engine::server: api_usage_5min: 12 requests
2026-04-16T18:28:25.518872Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 36 eligible frames
2026-04-16T18:28:27.600578Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 2.9MB → 2.3MB (1.3x), 18 JPEGs deleted
2026-04-16T18:28:28.648190Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 3.3MB → 0.5MB (6.3x), 16 JPEGs deleted
2026-04-16T18:33:28.759319Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 86 eligible frames
2026-04-16T18:33:31.508252Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 7.2MB → 3.1MB (2.3x), 41 JPEGs deleted
2026-04-16T18:33:34.105188Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 43 frames, 9.5MB → 1.1MB (8.7x), 43 JPEGs deleted
2026-04-16T18:38:34.183606Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 30 eligible frames
2026-04-16T18:38:35.631373Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 3.8MB → 2.6MB (1.5x), 14 JPEGs deleted
2026-04-16T18:38:36.560941Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 3.0MB → 0.3MB (8.8x), 14 JPEGs deleted
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40231
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
2026-04-16T18:21:57.868769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=627428589598300904, trigger=visual_change)
2026-04-16T18:22:03.990449Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7847601528719527534, trigger=visual_change)
2026-04-16T18:22:09.863801Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4904988847481951993, trigger=click)
2026-04-16T18:22:16.293144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3159996471827114191, trigger=visual_change)
2026-04-16T18:22:52.141333Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6124926365899348608, trigger=visual_change)
2026-04-16T18:22:53.221218Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:22:55.480199Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7252211048162575462, trigger=visual_change)
2026-04-16T18:22:55.519454Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:22:58.486565Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6677306331768658366, trigger=visual_change)
2026-04-16T18:23:01.214243Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7252211048162575462, trigger=click)
2026-04-16T18:23:01.279315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:23:24.078893Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 9 eligible frames
2026-04-16T18:23:24.698710Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 0.7MB → 0.3MB (2.0x), 5 JPEGs deleted
2026-04-16T18:23:25.299329Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 4 frames, 0.9MB → 0.5MB (1.7x), 4 JPEGs deleted
2026-04-16T18:23:59.398666Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7328863994118092574, trigger=visual_change)
2026-04-16T18:24:02.420346Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7328863994118092574, trigger=visual_change)
2026-04-16T18:24:35.939575Z WARN sqlx::query: summary="SELECT text, app_name, window_name, …" db.statement="\n\nSELECT\n text,\n app_name,\n window_name,\n timestamp\nFROM\n (\n SELECT\n e.text,\n f.app_name,\n COALESCE(f.window_name, '') as window_name,\n f.timestamp,\n ROW_NUMBER() OVER (\n PARTITION BY f.app_name,\n f.window_name\n ORDER BY\n CASE\n WHEN e.role IN ('AXTextArea', 'AXTextField') THEN 0\n ELSE 1\n END,\n LENGTH(e.text) DESC\n ) as rn\n FROM\n elements e\n JOIN frames f ON f.id = e.frame_id\n WHERE\n f.timestamp BETWEEN '2026-04-16T03:24:34Z' AND '2026-04-16T15:24:34Z'\n AND e.text IS NOT NULL\n AND e.source = 'accessibility'\n AND LENGTH(e.text) BETWEEN 30 AND 300\n AND e.text NOT LIKE 'http%'\n AND e.text NOT LIKE 'cdn.%'\n ) ranked\nWHERE\n rn = 1\nORDER BY\n timestamp DESC\nLIMIT\n 20\n" rows_affected=0 rows_returned=20 elapsed=1.558414625s
2026-04-16T18:26:46.604032Z INFO screenpipe_engine::server: api_usage_5min: 12 requests
2026-04-16T18:28:25.518872Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 36 eligible frames
2026-04-16T18:28:27.600578Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 2.9MB → 2.3MB (1.3x), 18 JPEGs deleted
2026-04-16T18:28:28.648190Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 3.3MB → 0.5MB (6.3x), 16 JPEGs deleted
2026-04-16T18:33:28.759319Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 86 eligible frames
2026-04-16T18:33:31.508252Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 7.2MB → 3.1MB (2.3x), 41 JPEGs deleted
2026-04-16T18:33:34.105188Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 43 frames, 9.5MB → 1.1MB (8.7x), 43 JPEGs deleted
2026-04-16T18:38:34.183606Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 30 eligible frames
2026-04-16T18:38:35.631373Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 3.8MB → 2.6MB (1.5x), 14 JPEGs deleted
2026-04-16T18:38:36.560941Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 3.0MB → 0.3MB (8.8x), 14 JPEGs deleted
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
40232
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
2026-04-16T18:21:57.868769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=627428589598300904, trigger=visual_change)
2026-04-16T18:22:03.990449Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7847601528719527534, trigger=visual_change)
2026-04-16T18:22:09.863801Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4904988847481951993, trigger=click)
2026-04-16T18:22:16.293144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3159996471827114191, trigger=visual_change)
2026-04-16T18:22:52.141333Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6124926365899348608, trigger=visual_change)
2026-04-16T18:22:53.221218Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:22:55.480199Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7252211048162575462, trigger=visual_change)
2026-04-16T18:22:55.519454Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:22:58.486565Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6677306331768658366, trigger=visual_change)
2026-04-16T18:23:01.214243Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7252211048162575462, trigger=click)
2026-04-16T18:23:01.279315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:23:24.078893Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 9 eligible frames
2026-04-16T18:23:24.698710Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 0.7MB → 0.3MB (2.0x), 5 JPEGs deleted
2026-04-16T18:23:25.299329Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 4 frames, 0.9MB → 0.5MB (1.7x), 4 JPEGs deleted
2026-04-16T18:23:59.398666Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7328863994118092574, trigger=visual_change)
2026-04-16T18:24:02.420346Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7328863994118092574, trigger=visual_change)
2026-04-16T18:24:35.939575Z WARN sqlx::query: summary="SELECT text, app_name, window_name, …" db.statement="\n\nSELECT\n text,\n app_name,\n window_name,\n timestamp\nFROM\n (\n SELECT\n e.text,\n f.app_name,\n COALESCE(f.window_name, '') as window_name,\n f.timestamp,\n ROW_NUMBER() OVER (\n PARTITION BY f.app_name,\n f.window_name\n ORDER BY\n CASE\n WHEN e.role IN ('AXTextArea', 'AXTextField') THEN 0\n ELSE 1\n END,\n LENGTH(e.text) DESC\n ) as rn\n FROM\n elements e\n JOIN frames f ON f.id = e.frame_id\n WHERE\n f.timestamp BETWEEN '2026-04-16T03:24:34Z' AND '2026-04-16T15:24:34Z'\n AND e.text IS NOT NULL\n AND e.source = 'accessibility'\n AND LENGTH(e.text) BETWEEN 30 AND 300\n AND e.text NOT LIKE 'http%'\n AND e.text NOT LIKE 'cdn.%'\n ) ranked\nWHERE\n rn = 1\nORDER BY\n timestamp DESC\nLIMIT\n 20\n" rows_affected=0 rows_returned=20 elapsed=1.558414625s
2026-04-16T18:26:46.604032Z INFO screenpipe_engine::server: api_usage_5min: 12 requests
2026-04-16T18:28:25.518872Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 36 eligible frames
2026-04-16T18:28:27.600578Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 2.9MB → 2.3MB (1.3x), 18 JPEGs deleted
2026-04-16T18:28:28.648190Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 3.3MB → 0.5MB (6.3x), 16 JPEGs deleted
2026-04-16T18:33:28.759319Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 86 eligible frames
2026-04-16T18:33:31.508252Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 7.2MB → 3.1MB (2.3x), 41 JPEGs deleted
2026-04-16T18:33:34.105188Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 43 frames, 9.5MB → 1.1MB (8.7x), 43 JPEGs deleted
2026-04-16T18:38:34.183606Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 30 eligible frames
2026-04-16T18:38:35.631373Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 3.8MB → 2.6MB (1.5x), 14 JPEGs deleted
2026-04-16T18:38:36.560941Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 3.0MB → 0.3MB (8.8x), 14 JPEGs deleted
2026-04-16T18:38:45.497494Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1378906988739938344, trigger=visual_change)
2026-04-16T18:40:51.465590Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=2583225842061478835, trigger=click)
2026-04-16T18:40:51.519032Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2583225842061478835, trigger=click)
2026-04-16T18:40:52.190445Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2583225842061478835, trigger=click)
2026-04-16T18:40:52.221020Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=2583225842061478835, trigger=click)
2026-04-16T18:41:02.201260Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7870454708749170063, trigger=visual_change)
2026-04-16T18:41:17.313239Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5465255429304826480, trigger=visual_change)
2026-04-16T18:42:59.963178Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6185279136587989316, trigger=click)
2026-04-16T18:43:00.885485Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6185279136587989316, trigger=visual_change)
2026-04-16T18:43:03.908092Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6185279136587989316, trigger=visual_change)
2026-04-16T18:43:05.142859Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6185279136587989316, trigger=click)
2026-04-16T18:43:05.170794Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6185279136587989316, trigger=click)
2026-04-16T18:43:09.281249Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6185279136587989316, trigger=click)
2026-04-16T18:43:09.329893Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6185279136587989316, trigger=click)
2026-04-16T18:43:10.006488Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6185279136587989316, trigger=visual_change)
2026-04-16T18:43:13.020484Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6185279136587989316, trigger=visual_change)
2026-04-16T18:43:36.632625Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 47 eligible frames
2026-04-16T18:43:37.787529Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 4.0MB → 0.4MB (10.4x), 18 JPEGs deleted
2026-04-16T18:43:39.791720Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 5.8MB → 3.5MB (1.7x), 27 JPEGs deleted
2026-04-16T18:48:39.854967Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T18:48:40.880165Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 3.6MB → 0.4MB (9.3x), 16 JPEGs deleted
2026-04-16T18:48:42.493143Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.5MB → 1.9MB (2.4x), 24 JPEGs deleted
2026-04-16T18:53:42.540192Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 49 eligible frames
2026-04-16T18:53:44.248697Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6397373582477392269, trigger=click)
2026-04-16T18:53:44.305973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6397373582477392269, trigger=click)
2026-04-16T18:53:44.636273Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 4.7MB → 3.6MB (1.3x), 28 JPEGs deleted
2026-04-16T18:53:46.005728Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 4.6MB → 0.7MB (6.4x), 19 JPEGs deleted
2026-04-16T18:56:42.851794Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=166444937469535891, trigger=click)
2026-04-16T18:56:45.111929Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=166444937469535891, trigger=visual_change)
2026-04-16T18:58:46.065894Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 11 eligible frames
2026-04-16T18:58:46.483097Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 4 frames, 0.3MB → 0.1MB (2.5x), 4 JPEGs deleted
2026-04-16T18:58:47.162312Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 1.2MB → 0.6MB (2.0x), 5 JPEGs deleted
2026-04-16T19:03:22.040300Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3833211505105625419, trigger=visual_change)
2026-04-16T19:03:47.207403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 100 eligible frames
2026-04-16T19:03:49.733771Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 4.5MB → 0.5MB (9.8x), 42 JPEGs deleted
2026-04-16T19:03:53.163365Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 56 frames, 10.3MB → 3.6MB (2.9x), 56 JPEGs deleted
2026-04-16T19:08:53.251967Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 12 eligible frames
2026-04-16T19:08:53.933186Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 0.8MB → 0.6MB (1.4x), 5 JPEGs deleted
2026-04-16T19:08:54.631822Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 1.0MB → 0.5MB (1.8x), 5 JPEGs deleted
2026-04-16T19:09:06.983845Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5395388649753491723, trigger=click)
2026-04-16T19:09:08.638614Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5395388649753491723, trigger=visual_change)
2026-04-16T19:13:54.712609Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 45 eligible frames
2026-04-16T19:13:55.995233Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 3.8MB → 1.1MB (3.6x), 18 JPEGs deleted
2026-04-16T19:13:57.772413Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.9MB → 1.5MB (3.4x), 25 JPEGs deleted
2026-04-16T19:18:57.869355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 69 eligible frames
2026-04-16T19:18:59.534803Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 3.2MB → 0.4MB (8.8x), 28 JPEGs deleted
2026-04-16T19:19:02.352002Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 39 frames, 8.9MB → 5.1MB (1.7x), 39 JPEGs deleted
2026-04-16T19:19:57.606762Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719510318593329929, trigger=visual_change)
2026-04-16T19:24:02.431308Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 11 eligible frames
2026-04-16T19:24:02.927020Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 4 frames, 0.5MB → 0.3MB (1.9x), 4 JPEGs deleted
2026-04-16T19:24:03.576897Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 0.9MB → 0.4MB (2.1x), 5 JPEGs deleted
2026-04-16T19:24:13.744209Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8889534853835346875, trigger=click)
2026-04-16T19:24:57.091662Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8889534853835346875, trigger=click)
2026-04-16T19:24:57.142375Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8889534853835346875, trigger=click)
2026-04-16T19:27:41.599620Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7909034156660413796, trigger=click)
2026-04-16T19:27:41.647949Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7909034156660413796, trigger=click)
2026-04-16T19:27:52.709943Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7604191407749971769, trigger=visual_change)
2026-04-16T19:28:32.258163Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8021106716519421575, trigger=visual_change)
2026-04-16T19:29:03.653911Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 11 eligible frames
2026-04-16T19:29:04.246968Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 0.6MB → 0.4MB (1.6x), 5 JPEGs deleted
2026-04-16T19:29:04.802579Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 4 frames, 0.9MB → 0.4MB (2.0x), 4 JPEGs deleted
2026-04-16T19:34:04.872907Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 31 eligible frames
2026-04-16T19:34:06.027724Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 2.5MB → 0.9MB (2.8x), 17 JPEGs deleted
2026-04-16T19:34:07.124809Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 2.7MB → 0.9MB (3.1x), 12 JPEGs deleted
2026-04-16T19:36:45.440360Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6902617092167944043, trigger=click)
2026-04-16T19:36:45.526913Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6902617092167944043, trigger=click)
2026-04-16T19:39:07.175454Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 25 eligible frames
2026-04-16T19:39:08.221098Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 2.4MB → 1.1MB (2.2x), 12 JPEGs deleted
2026-04-16T19:39:09.093475Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 2.3MB → 0.4MB (5.8x), 11 JPEGs deleted
2026-04-16T19:40:14.748415Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5274084159066973263, trigger=click)
2026-04-16T19:40:14.810062Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5274084159066973263, trigger=click)
2026-04-16T19:40:16.361839Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5274084159066973263, trigger=click)
2026-04-16T19:40:16.382131Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5274084159066973263, trigger=click)
2026-04-16T19:40:17.077270Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5274084159066973263, trigger=visual_change)
2026-04-16T19:40:32.132394Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4090469266328652451, trigger=visual_change)
2026-04-16T19:40:34.828659Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4090469266328652451, trigger=click)
2026-04-16T19:40:34.855691Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4090469266328652451, trigger=click)
2026-04-16T19:40:35.255108Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4090469266328652451, trigger=visual_change)
2026-04-16T19:43:25.125985Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2645125042129804868, trigger=visual_change)
2026-04-16T19:44:09.161369Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames
2026-04-16T19:44:09.957738Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 1.1MB → 0.2MB (7.5x), 11 JPEGs deleted
2026-04-16T19:44:10.787411Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 2.3MB → 0.3MB (7.1x), 11 JPEGs deleted
2026-04-16T19:45:06.008525Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7311227982380810013, trigger=visual_change)
2026-04-16T19:45:52.662172Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1358996890137522294, trigger=click)
2026-04-16T19:45:54.495775Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1358996890137522294, trigger=visual_change)
2026-04-16T19:48:06.685838Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9045753615802921452, trigger=click)
2026-04-16T19:48:06.737141Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-9045753615802921452, trigger=click)
2026-04-16T19:48:08.860107Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9045753615802921452, trigger=click)
2026-04-16T19:48:09.011800Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-9045753615802921452, trigger=click)
2026-04-16T19:48:10.981786Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9045753615802921452, trigger=visual_change)
2026-04-16T19:49:10.874859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 27 eligible frames
2026-04-16T19:49:11.981922Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 15 frames, 2.6MB → 1.1MB (2.3x), 15 JPEGs deleted
2026-04-16T19:49:12.869064Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.1MB → 0.4MB (5.8x), 10 JPEGs deleted
2026-04-16T19:51:48.499393Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7492878572394577472, trigger=visual_change)
2026-04-16T19:54:12.942737Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 32 eligible frames
2026-04-16T19:54:14.423821Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 3.3MB → 2.2MB (1.5x), 18 JPEGs deleted
2026-04-16T19:54:15.297486Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 2.5MB → 0.4MB (6.0x), 12 JPEGs deleted
2026-04-16T19:55:32.363346Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8509367409362735619, trigger=visual_change)
2026-04-16T19:56:34.555992Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8010755914632952731, trigger=click)
2026-04-16T19:56:36.169717Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8010755914632952731, trigger=visual_change)
2026-04-16T19:57:42.972829Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2493970611368230421, trigger=visual_change)
2026-04-16T19:59:15.371908Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 48 eligible frames
2026-04-16T19:59:17.297342Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 5.5MB → 2.9MB (1.9x), 27 JPEGs deleted
2026-04-16T19:59:18.725041Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 3.9MB → 0.9MB (4.4x), 19 JPEGs deleted
2026-04-16T20:04:18.788215Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 53 eligible frames
2026-04-16T20:04:20.651781Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 5.4MB → 1.3MB (4.0x), 27 JPEGs deleted
2026-04-16T20:04:22.327880Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.3MB → 1.1MB (3.8x), 24 JPEGs deleted
2026-04-16T20:07:58.693240Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)
2026-04-16T20:08:12.336154Z INFO sck_rs::stream_manager: recreating stream for display 2 (resolution change)
2026-04-16T20:08:13.555878Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=app_switch, monitor=1) — DB pool may be saturated
2026-04-16T20:08:26.992954Z INFO sck_rs::stream_manager: recreating stream for display 1 (resolution change)
2026-04-16T20:18:18.566710Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 5 excluded)
2026-04-16T20:18:20.160056Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)
2026-04-16T20:18:20.164730Z INFO screenpipe_engine::event_driven_capture: invalidating persistent streams after unlock/wake for monitor 1
2026-04-16T20:18:20.168456Z INFO sck_rs::stream_manager: stopped 1 persistent stream(s)
2026-04-16T20:18:20.393133Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 2 excluded)
2026-04-16T20:18:20.426172Z WARN screenpipe_engine::event_driven_capture: skipping capture: lock screen app 'loginwindow' on monitor 2
2026-04-16T20:18:20.509467Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 2 excluded)
2026-04-16T20:18:20.821576Z INFO screenpipe_engine::event_driven_capture: monitor 1 capture recovered after 1 consecutive errors
2026-04-16T20:19:03.681861Z ERROR screenpipe_engine::resource_monitor: Failed to send resource usage to PostHog: error sending request for url (https://us.i.posthog.com/capture/)
2026-04-16T20:19:10.050131Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=1.306319333s
2026-04-16T20:19:10.050302Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T20:19:12.039556Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 4.2MB → 1.9MB (2.2x), 34 JPEGs deleted
2026-04-16T20:19:13.766114Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 29 frames, 5.0MB → 0.6MB (8.2x), 29 JPEGs deleted
2026-04-16T20:21:46.710302Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6355728968769571222, trigger=click)
2026-04-16T20:22:03.206532Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8191035082799028318, trigger=click)
2026-04-16T20:22:05.889876Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8191035082799028318, trigger=visual_change)
2026-04-16T20:24:13.822102Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T20:24:27.784388Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7188203100787558147, trigger=click)
2026-04-16T20:24:27.830666Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7188203100787558147, trigger=click)
2026-04-16T20:25:41.238278Z INFO screenpipe_engine::event_driven_capture: ...
|
iTerm2
|
screenpipe"
|
NULL
|
40912
|
|
2026-04-16T16:54:32.724028Z INFO screenpipe_engin 2026-04-16T16:54:32.724028Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 6.0MB → 0.9MB (6.8x), 34 JPEGs deleted
2026-04-16T16:56:53.599557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1983496677248953459, trigger=visual_change)
2026-04-16T16:56:59.596490Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:05.803315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6408299431635311878, trigger=visual_change)
2026-04-16T16:57:31.799183Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:32.987738Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:36.036429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:38.135779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:38.144812Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=click)
2026-04-16T16:57:39.069414Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:57:42.069733Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6216735170207247706, trigger=visual_change)
2026-04-16T16:59:28.618441Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:32.774969Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-16T16:59:36.559992Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 6.2MB → 1.6MB (3.8x), 53 JPEGs deleted
2026-04-16T16:59:38.412716Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1486670987550568571, trigger=click)
2026-04-16T16:59:39.047403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 7.7MB → 0.9MB (8.4x), 42 JPEGs deleted
2026-04-16T17:02:10.554070Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6911811508438415393, trigger=click)
2026-04-16T17:04:39.103528Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 54 eligible frames
2026-04-16T17:04:40.805954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 2.7MB → 0.8MB (3.4x), 28 JPEGs deleted
2026-04-16T17:04:42.331661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.2MB → 0.8MB (5.3x), 24 JPEGs deleted
2026-04-16T17:05:56.286376Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5833391891040312533, trigger=click)
2026-04-16T17:07:25.899258Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=246851100492228743, trigger=visual_change)
2026-04-16T17:07:32.589078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8741429548847252237, trigger=click)
2026-04-16T17:07:32.598288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8741429548847252237, trigger=click)
2026-04-16T17:09:42.418817Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 51 eligible frames
2026-04-16T17:09:44.096791Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 3.4MB → 1.5MB (2.2x), 24 JPEGs deleted
2026-04-16T17:09:45.792167Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.4MB → 0.8MB (5.3x), 25 JPEGs deleted
2026-04-16T17:13:28.721758Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7494741005349090726, trigger=visual_change)
2026-04-16T17:13:42.659883Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:42.667274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.609407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1938898288173053820, trigger=click)
2026-04-16T17:13:46.614744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1938898288173053820, trigger=click)
2026-04-16T17:14:45.839974Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T17:14:46.858859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 2.4MB → 0.2MB (10.5x), 16 JPEGs deleted
2026-04-16T17:14:48.480001Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 5.0MB → 1.0MB (5.1x), 24 JPEGs deleted
2026-04-16T17:18:41.079072Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-473249672349158, trigger=visual_change)
2026-04-16T17:19:48.570457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-16T17:19:50.934643Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 6.2MB → 0.5MB (11.5x), 41 JPEGs deleted
2026-04-16T17:19:53.586587Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.8MB → 1.8MB (4.8x), 45 JPEGs deleted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-stop
screenpipe stopped
[1] + terminated npx screenpipe@latest record --disable-audio
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-16T17:21:45.974417Z INFO screenpipe_engine::cli: api auth enabled — key loaded
checking permissions...
screen recording: ok
accessibility: ok
2026-04-16T17:21:46.050652Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-16T17:21:46.510626Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-16T17:21:46.512156Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-16T17:21:46.512142Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-16T17:21:46.512319Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-16T17:21:46.512326Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-16T17:21:46.512344Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-16T17:21:46.512421Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-16T17:21:46.512417Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-16T17:21:46.513538Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-16T17:21:46.521833Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-16T17:21:46.533414Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-16T17:21:46.533605Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-16T17:21:46.534222Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-16T17:21:46.534386Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-16T17:21:46.534553Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-16T17:21:46.535103Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-16T17:21:46.535119Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
2026-04-16T17:21:46.536081Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-16T17:21:46.540523Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-16T17:21:46.550487Z INFO screenpipe: starting UI event capture
2026-04-16T17:21:46.565082Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-16T17:21:46.582680Z INFO screenpipe_engine::ui_recorder: UI recording session started: 12814e35-58e9-47de-8b51-d97fb023ee4a
2026-04-16T17:21:46.582703Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-15 14:21:46.582698 UTC to 2026-04-16 14:21:46.582698 UTC)
2026-04-16T17:21:46.582579Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-16T17:21:46.583587Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-16T17:21:46.595889Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-16T17:21:46.608092Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-16T17:21:46.629976Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-16T17:21:46.630083Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.630151Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-16T17:21:46.676870Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (2560x1440)
2026-04-16T17:21:46.676907Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.676919Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)
2026-04-16T17:21:46.676959Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-16T17:21:46.728761Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 10000 frame entries, coverage from 2026-04-15 14:21:46.582698 UTC
2026-04-16T17:21:47.394454Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-16T17:21:47.482330Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 1 excluded)
2026-04-16T17:21:47.494405Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=39933, dur=39ms
2026-04-16T17:21:47.630223Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=39934, dur=106ms
2026-04-16T17:22:16.903145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:16.962222Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719183519524636768, trigger=click)
2026-04-16T17:22:46.597499Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 23 eligible frames
2026-04-16T17:22:48.290139Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 1.8MB → 0.8MB (2.1x), 12 JPEGs deleted
2026-04-16T17:22:49.100793Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.6MB → 0.3MB (5.1x), 9 JPEGs deleted
2026-04-16T17:22:54.794743Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4739949273896043654, trigger=visual_change)
2026-04-16T17:27:51.214306Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=60 elapsed=2.113840958s
2026-04-16T17:27:51.214966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 60 eligible frames
2026-04-16T17:27:53.037622Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 3.6MB → 0.7MB (5.0x), 27 JPEGs deleted
2026-04-16T17:27:55.240255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 6.1MB → 2.1MB (2.9x), 31 JPEGs deleted
2026-04-16T17:32:57.459620Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=2.216223s
2026-04-16T17:32:57.460014Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T17:33:00.021293Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 4.7MB → 2.3MB (2.0x), 31 JPEGs deleted
2026-04-16T17:33:02.083465Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 7.0MB → 1.2MB (6.0x), 32 JPEGs deleted
2026-04-16T17:38:04.305404Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=21 elapsed=2.219409208s
2026-04-16T17:38:04.305623Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 21 eligible frames
2026-04-16T17:38:05.252423Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.3MB → 0.5MB (2.9x), 10 JPEGs deleted
2026-04-16T17:38:06.109461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.9MB → 0.3MB (5.7x), 9 JPEGs deleted
2026-04-16T17:43:08.286086Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.181719125s
2026-04-16T17:43:08.286355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T17:46:45.200780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:46:51.254975Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2685652172817760301, trigger=visual_change)
2026-04-16T17:48:10.441256Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.153535209s
2026-04-16T17:53:12.570945Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.12984975s
2026-04-16T17:58:14.714563Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=16 elapsed=2.144209875s
2026-04-16T17:58:14.714757Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 16 eligible frames
2026-04-16T17:58:15.687306Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.4MB → 0.5MB (2.7x), 10 JPEGs deleted
2026-04-16T17:58:16.405667Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.3MB → 0.3MB (4.0x), 6 JPEGs deleted
2026-04-16T18:03:18.647636Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=2.196012958s
2026-04-16T18:03:18.648255Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T18:08:20.770335Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.118292041s
2026-04-16T18:13:22.932968Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=2.159523541s
2026-04-16T18:14:12.914885Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7197250569217515340, trigger=click)
2026-04-16T18:14:21.238723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4913604326885148143, trigger=visual_change)
2026-04-16T18:14:24.039744Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:24.088774Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8457119628236479250, trigger=click)
2026-04-16T18:14:57.520041Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:14:57.574534Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3688414512503736666, trigger=click)
2026-04-16T18:15:21.796289Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=visual_change)
2026-04-16T18:15:23.991636Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7811355879924921461, trigger=click)
2026-04-16T18:15:35.222301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5475897674660063718, trigger=click)
2026-04-16T18:15:35.274330Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5475897674660063718, trigger=click)
2026-04-16T18:17:32.423833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:17:32.474543Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1514603215522113679, trigger=click)
2026-04-16T18:18:24.002496Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=0 elapsed=1.067424083s
2026-04-16T18:19:37.211633Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:37.439390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8864415387169714352, trigger=visual_change)
2026-04-16T18:19:43.270973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1823404633043484762, trigger=visual_change)
2026-04-16T18:21:57.868769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=627428589598300904, trigger=visual_change)
2026-04-16T18:22:03.990449Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7847601528719527534, trigger=visual_change)
2026-04-16T18:22:09.863801Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4904988847481951993, trigger=click)
2026-04-16T18:22:16.293144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3159996471827114191, trigger=visual_change)
2026-04-16T18:22:52.141333Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6124926365899348608, trigger=visual_change)
2026-04-16T18:22:53.221218Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:22:55.480199Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7252211048162575462, trigger=visual_change)
2026-04-16T18:22:55.519454Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:22:58.486565Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6677306331768658366, trigger=visual_change)
2026-04-16T18:23:01.214243Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7252211048162575462, trigger=click)
2026-04-16T18:23:01.279315Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7252211048162575462, trigger=click)
2026-04-16T18:23:24.078893Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 9 eligible frames
2026-04-16T18:23:24.698710Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 0.7MB → 0.3MB (2.0x), 5 JPEGs deleted
2026-04-16T18:23:25.299329Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 4 frames, 0.9MB → 0.5MB (1.7x), 4 JPEGs deleted
2026-04-16T18:23:59.398666Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7328863994118092574, trigger=visual_change)
2026-04-16T18:24:02.420346Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7328863994118092574, trigger=visual_change)
2026-04-16T18:24:35.939575Z WARN sqlx::query: summary="SELECT text, app_name, window_name, …" db.statement="\n\nSELECT\n text,\n app_name,\n window_name,\n timestamp\nFROM\n (\n SELECT\n e.text,\n f.app_name,\n COALESCE(f.window_name, '') as window_name,\n f.timestamp,\n ROW_NUMBER() OVER (\n PARTITION BY f.app_name,\n f.window_name\n ORDER BY\n CASE\n WHEN e.role IN ('AXTextArea', 'AXTextField') THEN 0\n ELSE 1\n END,\n LENGTH(e.text) DESC\n ) as rn\n FROM\n elements e\n JOIN frames f ON f.id = e.frame_id\n WHERE\n f.timestamp BETWEEN '2026-04-16T03:24:34Z' AND '2026-04-16T15:24:34Z'\n AND e.text IS NOT NULL\n AND e.source = 'accessibility'\n AND LENGTH(e.text) BETWEEN 30 AND 300\n AND e.text NOT LIKE 'http%'\n AND e.text NOT LIKE 'cdn.%'\n ) ranked\nWHERE\n rn = 1\nORDER BY\n timestamp DESC\nLIMIT\n 20\n" rows_affected=0 rows_returned=20 elapsed=1.558414625s
2026-04-16T18:26:46.604032Z INFO screenpipe_engine::server: api_usage_5min: 12 requests
2026-04-16T18:28:25.518872Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 36 eligible frames
2026-04-16T18:28:27.600578Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 2.9MB → 2.3MB (1.3x), 18 JPEGs deleted
2026-04-16T18:28:28.648190Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 3.3MB → 0.5MB (6.3x), 16 JPEGs deleted
2026-04-16T18:33:28.759319Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 86 eligible frames
2026-04-16T18:33:31.508252Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 7.2MB → 3.1MB (2.3x), 41 JPEGs deleted
2026-04-16T18:33:34.105188Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 43 frames, 9.5MB → 1.1MB (8.7x), 43 JPEGs deleted
2026-04-16T18:38:34.183606Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 30 eligible frames
2026-04-16T18:38:35.631373Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 3.8MB → 2.6MB (1.5x), 14 JPEGs deleted
2026-04-16T18:38:36.560941Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 3.0MB → 0.3MB (8.8x), 14 JPEGs deleted
2026-04-16T18:38:45.497494Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1378906988739938344, trigger=visual_change)
2026-04-16T18:40:51.465590Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=2583225842061478835, trigger=click)
2026-04-16T18:40:51.519032Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2583225842061478835, trigger=click)
2026-04-16T18:40:52.190445Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2583225842061478835, trigger=click)
2026-04-16T18:40:52.221020Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=2583225842061478835, trigger=click)
2026-04-16T18:41:02.201260Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7870454708749170063, trigger=visual_change)
2026-04-16T18:41:17.313239Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5465255429304826480, trigger=visual_change)
2026-04-16T18:42:59.963178Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6185279136587989316, trigger=click)
2026-04-16T18:43:00.885485Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6185279136587989316, trigger=visual_change)
2026-04-16T18:43:03.908092Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6185279136587989316, trigger=visual_change)
2026-04-16T18:43:05.142859Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6185279136587989316, trigger=click)
2026-04-16T18:43:05.170794Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6185279136587989316, trigger=click)
2026-04-16T18:43:09.281249Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6185279136587989316, trigger=click)
2026-04-16T18:43:09.329893Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6185279136587989316, trigger=click)
2026-04-16T18:43:10.006488Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6185279136587989316, trigger=visual_change)
2026-04-16T18:43:13.020484Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6185279136587989316, trigger=visual_change)
2026-04-16T18:43:36.632625Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 47 eligible frames
2026-04-16T18:43:37.787529Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 4.0MB → 0.4MB (10.4x), 18 JPEGs deleted
2026-04-16T18:43:39.791720Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 5.8MB → 3.5MB (1.7x), 27 JPEGs deleted
2026-04-16T18:48:39.854967Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 42 eligible frames
2026-04-16T18:48:40.880165Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 3.6MB → 0.4MB (9.3x), 16 JPEGs deleted
2026-04-16T18:48:42.493143Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.5MB → 1.9MB (2.4x), 24 JPEGs deleted
2026-04-16T18:53:42.540192Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 49 eligible frames
2026-04-16T18:53:44.248697Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6397373582477392269, trigger=click)
2026-04-16T18:53:44.305973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6397373582477392269, trigger=click)
2026-04-16T18:53:44.636273Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 4.7MB → 3.6MB (1.3x), 28 JPEGs deleted
2026-04-16T18:53:46.005728Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 4.6MB → 0.7MB (6.4x), 19 JPEGs deleted
2026-04-16T18:56:42.851794Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=166444937469535891, trigger=click)
2026-04-16T18:56:45.111929Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=166444937469535891, trigger=visual_change)
2026-04-16T18:58:46.065894Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 11 eligible frames
2026-04-16T18:58:46.483097Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 4 frames, 0.3MB → 0.1MB (2.5x), 4 JPEGs deleted
2026-04-16T18:58:47.162312Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 1.2MB → 0.6MB (2.0x), 5 JPEGs deleted
2026-04-16T19:03:22.040300Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3833211505105625419, trigger=visual_change)
2026-04-16T19:03:47.207403Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 100 eligible frames
2026-04-16T19:03:49.733771Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 4.5MB → 0.5MB (9.8x), 42 JPEGs deleted
2026-04-16T19:03:53.163365Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 56 frames, 10.3MB → 3.6MB (2.9x), 56 JPEGs deleted
2026-04-16T19:08:53.251967Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 12 eligible frames
2026-04-16T19:08:53.933186Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 0.8MB → 0.6MB (1.4x), 5 JPEGs deleted
2026-04-16T19:08:54.631822Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 1.0MB → 0.5MB (1.8x), 5 JPEGs deleted
2026-04-16T19:09:06.983845Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5395388649753491723, trigger=click)
2026-04-16T19:09:08.638614Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5395388649753491723, trigger=visual_change)
2026-04-16T19:13:54.712609Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 45 eligible frames
2026-04-16T19:13:55.995233Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 3.8MB → 1.1MB (3.6x), 18 JPEGs deleted
2026-04-16T19:13:57.772413Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 4.9MB → 1.5MB (3.4x), 25 JPEGs deleted
2026-04-16T19:18:57.869355Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 69 eligible frames
2026-04-16T19:18:59.534803Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 3.2MB → 0.4MB (8.8x), 28 JPEGs deleted
2026-04-16T19:19:02.352002Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 39 frames, 8.9MB → 5.1MB (1.7x), 39 JPEGs deleted
2026-04-16T19:19:57.606762Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1719510318593329929, trigger=visual_change)
2026-04-16T19:24:02.431308Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 11 eligible frames
2026-04-16T19:24:02.927020Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 4 frames, 0.5MB → 0.3MB (1.9x), 4 JPEGs deleted
2026-04-16T19:24:03.576897Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 0.9MB → 0.4MB (2.1x), 5 JPEGs deleted
2026-04-16T19:24:13.744209Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8889534853835346875, trigger=click)
2026-04-16T19:24:57.091662Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8889534853835346875, trigger=click)
2026-04-16T19:24:57.142375Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8889534853835346875, trigger=click)
2026-04-16T19:27:41.599620Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7909034156660413796, trigger=click)
2026-04-16T19:27:41.647949Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7909034156660413796, trigger=click)
2026-04-16T19:27:52.709943Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7604191407749971769, trigger=visual_change)
2026-04-16T19:28:32.258163Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8021106716519421575, trigger=visual_change)
2026-04-16T19:29:03.653911Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 11 eligible frames
2026-04-16T19:29:04.246968Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 5 frames, 0.6MB → 0.4MB (1.6x), 5 JPEGs deleted
2026-04-16T19:29:04.802579Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 4 frames, 0.9MB → 0.4MB (2.0x), 4 JPEGs deleted
2026-04-16T19:34:04.872907Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 31 eligible frames
2026-04-16T19:34:06.027724Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 2.5MB → 0.9MB (2.8x), 17 JPEGs deleted
2026-04-16T19:34:07.124809Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 2.7MB → 0.9MB (3.1x), 12 JPEGs deleted
2026-04-16T19:36:45.440360Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6902617092167944043, trigger=click)
2026-04-16T19:36:45.526913Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6902617092167944043, trigger=click)
2026-04-16T19:39:07.175454Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 25 eligible frames
2026-04-16T19:39:08.221098Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 2.4MB → 1.1MB (2.2x), 12 JPEGs deleted
2026-04-16T19:39:09.093475Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 2.3MB → 0.4MB (5.8x), 11 JPEGs deleted
2026-04-16T19:40:14.748415Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5274084159066973263, trigger=click)
2026-04-16T19:40:14.810062Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5274084159066973263, trigger=click)
2026-04-16T19:40:16.361839Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5274084159066973263, trigger=click)
2026-04-16T19:40:16.382131Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5274084159066973263, trigger=click)
2026-04-16T19:40:17.077270Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5274084159066973263, trigger=visual_change)
2026-04-16T19:40:32.132394Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4090469266328652451, trigger=visual_change)
2026-04-16T19:40:34.828659Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4090469266328652451, trigger=click)
2026-04-16T19:40:34.855691Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4090469266328652451, trigger=click)
2026-04-16T19:40:35.255108Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4090469266328652451, trigger=visual_change)
2026-04-16T19:43:25.125985Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2645125042129804868, trigger=visual_change)
2026-04-16T19:44:09.161369Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames
2026-04-16T19:44:09.957738Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 1.1MB → 0.2MB (7.5x), 11 JPEGs deleted
2026-04-16T19:44:10.787411Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 2.3MB → 0.3MB (7.1x), 11 JPEGs deleted
2026-04-16T19:45:06.008525Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7311227982380810013, trigger=visual_change)
2026-04-16T19:45:52.662172Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1358996890137522294, trigger=click)
2026-04-16T19:45:54.495775Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1358996890137522294, trigger=visual_change)
2026-04-16T19:48:06.685838Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9045753615802921452, trigger=click)
2026-04-16T19:48:06.737141Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-9045753615802921452, trigger=click)
2026-04-16T19:48:08.860107Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9045753615802921452, trigger=click)
2026-04-16T19:48:09.011800Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-9045753615802921452, trigger=click)
2026-04-16T19:48:10.981786Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9045753615802921452, trigger=visual_change)
2026-04-16T19:49:10.874859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 27 eligible frames
2026-04-16T19:49:11.981922Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 15 frames, 2.6MB → 1.1MB (2.3x), 15 JPEGs deleted
2026-04-16T19:49:12.869064Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.1MB → 0.4MB (5.8x), 10 JPEGs deleted
2026-04-16T19:51:48.499393Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7492878572394577472, trigger=visual_change)
2026-04-16T19:54:12.942737Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 32 eligible frames
2026-04-16T19:54:14.423821Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 3.3MB → 2.2MB (1.5x), 18 JPEGs deleted
2026-04-16T19:54:15.297486Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 12 frames, 2.5MB → 0.4MB (6.0x), 12 JPEGs deleted
2026-04-16T19:55:32.363346Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8509367409362735619, trigger=visual_change)
2026-04-16T19:56:34.555992Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8010755914632952731, trigger=click)
2026-04-16T19:56:36.169717Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8010755914632952731, trigger=visual_change)
2026-04-16T19:57:42.972829Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2493970611368230421, trigger=visual_change)
2026-04-16T19:59:15.371908Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 48 eligible frames
2026-04-16T19:59:17.297342Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 5.5MB → 2.9MB (1.9x), 27 JPEGs deleted
2026-04-16T19:59:18.725041Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 3.9MB → 0.9MB (4.4x), 19 JPEGs deleted
2026-04-16T20:04:18.788215Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 53 eligible frames
2026-04-16T20:04:20.651781Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 5.4MB → 1.3MB (4.0x), 27 JPEGs deleted
2026-04-16T20:04:22.327880Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 4.3MB → 1.1MB (3.8x), 24 JPEGs deleted
2026-04-16T20:07:58.693240Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)
2026-04-16T20:08:12.336154Z INFO sck_rs::stream_manager: recreating stream for display 2 (resolution change)
2026-04-16T20:08:13.555878Z WARN screenpipe_engine::event_driven_capture: event capture timed out (trigger=app_switch, monitor=1) — DB pool may be saturated
2026-04-16T20:08:26.992954Z INFO sck_rs::stream_manager: recreating stream for display 1 (resolution change)
2026-04-16T20:18:18.566710Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 5 excluded)
2026-04-16T20:18:20.160056Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)
2026-04-16T20:18:20.164730Z INFO screenpipe_engine::event_driven_capture: invalidating persistent streams after unlock/wake for monitor 1
2026-04-16T20:18:20.168456Z INFO sck_rs::stream_manager: stopped 1 persistent stream(s)
2026-04-16T20:18:20.393133Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 2 excluded)
2026-04-16T20:18:20.426172Z WARN screenpipe_engine::event_driven_capture: skipping capture: lock screen app 'loginwindow' on monitor 2
2026-04-16T20:18:20.509467Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 2 excluded)
2026-04-16T20:18:20.821576Z INFO screenpipe_engine::event_driven_capture: monitor 1 capture recovered after 1 consecutive errors
2026-04-16T20:19:03.681861Z ERROR screenpipe_engine::resource_monitor: Failed to send resource usage to PostHog: error sending request for url (https://us.i.posthog.com/capture/)
2026-04-16T20:19:10.050131Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=65 elapsed=1.306319333s
2026-04-16T20:19:10.050302Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 65 eligible frames
2026-04-16T20:19:12.039556Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 4.2MB → 1.9MB (2.2x), 34 JPEGs deleted
2026-04-16T20:19:13.766114Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 29 frames, 5.0MB → 0.6MB (8.2x), 29 JPEGs deleted
2026-04-16T20:21:46.710302Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6355728968769571222, trigger=click)
2026-04-16T20:22:03.206532Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8191035082799028318, trigger=click)
2026-04-16T20:22:05.889876Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8191035082799028318, trigger=visual_change)
2026-04-16T20:24:13.822102Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-16T20:24:27.784388Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7188203100787558147, trigger=click)
2026-04-16T20:24:27.830666Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7188203100787558147, trigger=click)
2026-04-16T20:25:41.238278Z INFO screenpipe_engine::event_driven_capture: ...
|
iTerm2
|
screenpipe"
|
NULL
|
40913
|
|
2026-04-17T11:34:37.067595Z INFO screenpipe_engin 2026-04-17T11:34:37.067595Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 84 frames, 16.7MB → 5.2MB (3.2x), 84 JPEGs deleted
2026-04-17T11:36:21.582162Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3636375476660928346, trigger=visual_change)
2026-04-17T11:36:27.652465Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3636375476660928346, trigger=visual_change)
2026-04-17T11:39:42.586546Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=146 elapsed=5.50440575s
2026-04-17T11:39:42.593179Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 146 eligible frames
2026-04-17T11:39:54.820496Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 86 frames, 17.3MB → 8.8MB (2.0x), 86 JPEGs deleted
2026-04-17T11:40:00.213353Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 57 frames, 10.3MB → 2.7MB (3.9x), 57 JPEGs deleted
2026-04-17T11:45:05.403027Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=167 elapsed=5.175965584s
2026-04-17T11:45:05.403796Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 167 eligible frames
2026-04-17T11:45:23.920217Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 89 frames, 18.1MB → 8.0MB (2.3x), 89 JPEGs deleted
2026-04-17T11:45:39.404156Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 76 frames, 15.1MB → 5.2MB (2.9x), 76 JPEGs deleted
2026-04-17T11:47:40.403897Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8449116274740776858, trigger=visual_change)
2026-04-17T11:47:43.440723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8449116274740776858, trigger=visual_change)
2026-04-17T11:50:41.774396Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=118 elapsed=2.354790459s
2026-04-17T11:50:41.776220Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 118 eligible frames
2026-04-17T11:50:59.256756Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 70 frames, 13.9MB → 6.9MB (2.0x), 70 JPEGs deleted
2026-04-17T11:51:07.629800Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 46 frames, 13.0MB → 3.8MB (3.4x), 46 JPEGs deleted
2026-04-17T11:56:14.641254Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=104 elapsed=6.940613291s
2026-04-17T11:56:14.655230Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 104 eligible frames
2026-04-17T11:56:27.260405Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 64 frames, 12.4MB → 5.9MB (2.1x), 64 JPEGs deleted
2026-04-17T11:56:32.454420Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 11.4MB → 2.5MB (4.6x), 38 JPEGs deleted
2026-04-17T11:56:36.052813Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2897688846273938228, trigger=visual_change)
2026-04-17T11:56:39.125180Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2897688846273938228, trigger=visual_change)
2026-04-17T11:56:48.884595Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2897688846273938228, trigger=click)
2026-04-17T11:59:10.684033Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1187659190810667004, trigger=click)
2026-04-17T12:00:26.161484Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1187659190810667004, trigger=click)
2026-04-17T12:01:24.015698Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1187659190810667004, trigger=visual_change)
2026-04-17T12:01:37.484033Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=143 elapsed=5.013868584s
2026-04-17T12:01:37.484775Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 143 eligible frames
2026-04-17T12:01:54.962475Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 84 frames, 18.5MB → 11.2MB (1.7x), 84 JPEGs deleted
2026-04-17T12:02:09.701348Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 57 frames, 14.0MB → 5.0MB (2.8x), 57 JPEGs deleted
2026-04-17T12:04:52.068001Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1187659190810667004, trigger=click)
2026-04-17T12:06:01.171915Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1187659190810667004, trigger=visual_change)
2026-04-17T12:06:08.346769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1187659190810667004, trigger=click)
2026-04-17T12:06:40.246144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3230856144763016035, trigger=visual_change)
2026-04-17T12:07:14.586229Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=127 elapsed=4.93565275s
2026-04-17T12:07:14.587477Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 127 eligible frames
2026-04-17T12:07:26.001585Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 74 frames, 14.4MB → 6.7MB (2.2x), 74 JPEGs deleted
2026-04-17T12:07:32.330737Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 51 frames, 14.0MB → 3.5MB (4.1x), 51 JPEGs deleted
2026-04-17T12:09:44.692549Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-613971393924370495, trigger=visual_change)
2026-04-17T12:09:50.683046Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-613971393924370495, trigger=visual_change)
2026-04-17T12:09:53.718316Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-613971393924370495, trigger=visual_change)
2026-04-17T12:09:56.768856Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-613971393924370495, trigger=visual_change)
2026-04-17T12:12:37.753666Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=88 elapsed=5.414904667s
2026-04-17T12:12:37.753896Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-17T12:12:52.340444Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 52 frames, 9.7MB → 4.1MB (2.4x), 52 JPEGs deleted
2026-04-17T12:12:59.919500Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 10.2MB → 4.8MB (2.1x), 34 JPEGs deleted
2026-04-17T12:18:01.425343Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=77 elapsed=1.499634167s
2026-04-17T12:18:01.425741Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 77 eligible frames
2026-04-17T12:18:12.274223Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 46 frames, 8.4MB → 3.6MB (2.3x), 46 JPEGs deleted
2026-04-17T12:18:17.326612Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 29 frames, 8.2MB → 2.8MB (2.9x), 29 JPEGs deleted
2026-04-17T12:20:37.499495Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5858924638011024147, trigger=visual_change)
2026-04-17T12:23:22.133060Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=107 elapsed=4.695834792s
2026-04-17T12:23:22.134527Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 107 eligible frames
2026-04-17T12:23:30.575383Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 68 frames, 12.7MB → 5.3MB (2.4x), 68 JPEGs deleted
2026-04-17T12:23:35.540067Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 37 frames, 11.3MB → 3.8MB (3.0x), 37 JPEGs deleted
2026-04-17T12:24:26.708194Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1431084806293675067, trigger=visual_change)
2026-04-17T12:24:44.922890Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7156380177257339616, trigger=visual_change)
2026-04-17T12:24:47.959927Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7156380177257339616, trigger=visual_change)
2026-04-17T12:24:57.082676Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7156380177257339616, trigger=visual_change)
2026-04-17T12:25:06.162411Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=99156994807997409, trigger=visual_change)
2026-04-17T12:25:50.923162Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9094715609502343279, trigger=visual_change)
2026-04-17T12:28:39.907308Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=130 elapsed=4.35280675s
2026-04-17T12:28:39.908059Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 130 eligible frames
2026-04-17T12:28:52.289524Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 74 frames, 13.5MB → 5.4MB (2.5x), 74 JPEGs deleted
2026-04-17T12:29:03.322190Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 54 frames, 14.8MB → 4.1MB (3.6x), 54 JPEGs deleted
2026-04-17T12:29:41.523344Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9094715609502343279, trigger=visual_change)
2026-04-17T12:31:13.627356Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1187659190810667004, trigger=click)
2026-04-17T12:34:03.505841Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 133 eligible frames
2026-04-17T12:34:12.370434Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 83 frames, 17.0MB → 8.4MB (2.0x), 83 JPEGs deleted
2026-04-17T12:34:18.709761Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 48 frames, 12.4MB → 4.5MB (2.8x), 48 JPEGs deleted
2026-04-17T12:39:21.700676Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=94 elapsed=2.994116667s
2026-04-17T12:39:21.701475Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 94 eligible frames
2026-04-17T12:39:28.551006Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 60 frames, 11.9MB → 5.2MB (2.3x), 60 JPEGs deleted
2026-04-17T12:39:33.119092Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 8.9MB → 3.0MB (3.0x), 32 JPEGs deleted
2026-04-17T12:41:55.518740Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4645364130590448795, trigger=visual_change)
2026-04-17T12:44:31.486942Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5268491633263651922, trigger=visual_change)
2026-04-17T12:44:34.083563Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 80 eligible frames
2026-04-17T12:44:42.267029Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 54 frames, 9.3MB → 3.9MB (2.4x), 54 JPEGs deleted
2026-04-17T12:44:46.583955Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 7.1MB → 1.7MB (4.2x), 24 JPEGs deleted
2026-04-17T12:48:00.030407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7118306775293142140, trigger=visual_change)
2026-04-17T12:49:09.718005Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3890447493078382535, trigger=visual_change)
2026-04-17T12:49:48.947739Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=83 elapsed=2.349997458s
2026-04-17T12:49:48.949259Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 83 eligible frames
2026-04-17T12:49:54.500850Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 9.4MB → 3.6MB (2.6x), 53 JPEGs deleted
2026-04-17T12:49:56.956633Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 8.0MB → 1.4MB (5.6x), 28 JPEGs deleted
2026-04-17T12:50:49.723216Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2308635439156572871, trigger=visual_change)
2026-04-17T12:55:01.685683Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=68 elapsed=4.658703708s
2026-04-17T12:55:01.686755Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 68 eligible frames
2026-04-17T12:55:09.567444Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 7.3MB → 3.0MB (2.4x), 41 JPEGs deleted
2026-04-17T12:55:11.689903Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 7.3MB → 1.2MB (6.0x), 25 JPEGs deleted
2026-04-17T12:57:46.261931Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3247250458952498707, trigger=visual_change)
2026-04-17T13:00:15.547338Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=67 elapsed=3.841360958s
2026-04-17T13:00:15.547891Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 67 eligible frames
2026-04-17T13:00:18.854188Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 6.9MB → 2.9MB (2.4x), 38 JPEGs deleted
2026-04-17T13:00:20.869607Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 6.1MB → 1.9MB (3.2x), 27 JPEGs deleted
2026-04-17T13:00:47.836013Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3538231965223053471, trigger=click)
2026-04-17T13:05:21.592379Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 100 eligible frames
2026-04-17T13:05:24.334610Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 46 frames, 7.2MB → 1.1MB (6.3x), 46 JPEGs deleted
2026-04-17T13:05:29.624320Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 52 frames, 11.3MB → 5.4MB (2.1x), 52 JPEGs deleted
2026-04-17T13:05:51.246979Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6043481845154234215, trigger=click)
2026-04-17T13:10:01.795432Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:03.069120Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:03.075328Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:04.101145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:04.101122Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:04.376980Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=visual_change)
2026-04-17T13:10:06.992302Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:06.997093Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:07.384444Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=visual_change)
2026-04-17T13:10:09.998269Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:10.018259Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:10.421277Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=visual_change)
2026-04-17T13:10:11.230951Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8309174487239213230, trigger=visual_change)
2026-04-17T13:10:13.459367Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=visual_change)
2026-04-17T13:10:33.885435Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=83 elapsed=4.209110041s
2026-04-17T13:10:33.885993Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 83 eligible frames
2026-04-17T13:10:36.418211Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 39 frames, 9.0MB → 1.8MB (5.1x), 39 JPEGs deleted
2026-04-17T13:10:41.833569Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 10.3MB → 4.4MB (2.3x), 42 JPEGs deleted
2026-04-17T13:15:47.143596Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=45 elapsed=5.294994208s
2026-04-17T13:15:47.143961Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 45 eligible frames
2026-04-17T13:15:49.530930Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 5.3MB → 0.5MB (10.7x), 19 JPEGs deleted
2026-04-17T13:15:53.181326Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 6.2MB → 1.9MB (3.2x), 24 JPEGs deleted
2026-04-17T13:15:59.924682Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6080998014092105058, trigger=click)
2026-04-17T13:17:47.639533Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6043481845154234215, trigger=click)
2026-04-17T13:17:47.640336Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6043481845154234215, trigger=click)
2026-04-17T13:20:53.865787Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 85 eligible frames
2026-04-17T13:20:56.296312Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 35 frames, 9.3MB → 0.8MB (12.3x), 35 JPEGs deleted
2026-04-17T13:21:01.541879Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 48 frames, 10.0MB → 3.5MB (2.9x), 48 JPEGs deleted
2026-04-17T13:21:24.697431Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8579915543009657377, trigger=visual_change)
2026-04-17T13:22:53.638454Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8579915543009657377, trigger=visual_change)
2026-04-17T13:23:21.001499Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4786115965986315783, trigger=visual_change)
2026-04-17T13:26:06.993632Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=145 elapsed=5.377591541s
2026-04-17T13:26:06.995358Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 145 eligible frames
2026-04-17T13:26:10.229487Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 47 frames, 10.6MB → 1.1MB (9.6x), 47 JPEGs deleted
2026-04-17T13:26:20.367203Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 96 frames, 17.5MB → 7.4MB (2.4x), 96 JPEGs deleted
2026-04-17T13:31:24.012859Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=97 elapsed=3.623441916s
2026-04-17T13:31:24.013303Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-17T13:31:26.695278Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 46 frames, 10.7MB → 0.6MB (17.9x), 46 JPEGs deleted
2026-04-17T13:31:29.991292Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames, 11.5MB → 3.2MB (3.6x), 49 JPEGs deleted
2026-04-17T13:32:39.125960Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6089929419086115132, trigger=visual_change)
2026-04-17T13:33:15.059703Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8228581750357175612, trigger=visual_change)
2026-04-17T13:36:34.787296Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=134 elapsed=4.778564541s
2026-04-17T13:36:34.788177Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 134 eligible frames
2026-04-17T13:36:37.619828Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 9.3MB → 2.6MB (3.6x), 38 JPEGs deleted
2026-04-17T13:36:47.174485Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 94 frames, 19.4MB → 6.6MB (2.9x), 94 JPEGs deleted
2026-04-17T13:38:01.793664Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8948708845629756494, trigger=visual_change)
2026-04-17T13:41:38.909857Z WARN sqlx::query: summary="SELECT DISTINCT app_name, window_name, …" db.statement="\n\nSELECT\n DISTINCT app_name,\n window_name,\n browser_url\nFROM\n frames\nWHERE\n timestamp > datetime('now', '-30 seconds')\n AND app_name IS NOT NULL\n AND window_name IS NOT NULL\n" rows_affected=0 rows_returned=191 elapsed=2.726793958s
2026-04-17T13:41:53.564499Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=127 elapsed=6.337926625s
2026-04-17T13:41:53.564966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 127 eligible frames
2026-04-17T13:41:56.377224Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 39 frames, 8.7MB → 0.9MB (10.2x), 39 JPEGs deleted
2026-04-17T13:42:04.113088Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 86 frames, 19.8MB → 4.6MB (4.3x), 86 JPEGs deleted
2026-04-17T13:42:28.546840Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2407191479157132203, trigger=visual_change)
2026-04-17T13:42:31.565154Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2407191479157132203, trigger=visual_change)
2026-04-17T13:43:01.179117Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2966960464075814955, trigger=visual_change)
2026-04-17T13:43:04.176336Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2966960464075814955, trigger=visual_change)
2026-04-17T13:47:09.104428Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=108 elapsed=4.971006834s
2026-04-17T13:47:09.105265Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 108 eligible frames
2026-04-17T13:47:12.128696Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 46 frames, 10.8MB → 1.2MB (8.7x), 46 JPEGs deleted
2026-04-17T13:47:18.306857Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1588829377627911602, trigger=visual_change)
2026-04-17T13:47:20.741949Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 60 frames, 12.1MB → 4.6MB (2.6x), 60 JPEGs deleted
2026-04-17T13:49:02.375155Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T13:49:03.780188Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8632488258017461693, trigger=click)
2026-04-17T13:50:51.417277Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2407191479157132203, trigger=visual_change)
2026-04-17T13:50:52.233635Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2407191479157132203, trigger=visual_change)
2026-04-17T13:52:23.916789Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=148 elapsed=3.130792583s
2026-04-17T13:52:23.916950Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 148 eligible frames
2026-04-17T13:52:28.645026Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 62 frames, 14.5MB → 3.3MB (4.4x), 62 JPEGs deleted
2026-04-17T13:52:32.516195Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4465696449359315208, trigger=click)
2026-04-17T13:52:41.560804Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 84 frames, 17.7MB → 8.7MB (2.0x), 84 JPEGs deleted
2026-04-17T13:57:46.196574Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=158 elapsed=4.5932735s
2026-04-17T13:57:46.196771Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 158 eligible frames
2026-04-17T13:57:49.965702Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 59 frames, 13.8MB → 1.3MB (10.6x), 59 JPEGs deleted
2026-04-17T13:57:57.488258Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 97 frames, 21.7MB → 9.6MB (2.3x), 97 JPEGs deleted
2026-04-17T14:01:04.834817Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T14:03:03.419391Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=162 elapsed=5.916741833s
2026-04-17T14:03:03.419970Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 162 eligible frames
2026-04-17T14:03:07.531462Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 62 frames, 14.4MB → 1.6MB (9.0x), 62 JPEGs deleted
2026-04-17T14:03:25.381848Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 98 frames, 27.2MB → 12.9MB (2.1x), 98 JPEGs deleted
2026-04-17T14:07:52.779104Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3920393652799492578, trigger=visual_change)
2026-04-17T14:08:29.344550Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=39 elapsed=3.921230209s
2026-04-17T14:08:29.344820Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 39 eligible frames
2026-04-17T14:08:30.820661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 4.4MB → 0.5MB (8.3x), 18 JPEGs deleted
2026-04-17T14:08:32.939816Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 6.3MB → 1.5MB (4.1x), 19 JPEGs deleted
2026-04-17T14:11:32.178274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T14:11:35.201992Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T14:11:38.167294Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T14:11:41.241749Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T14:13:36.956810Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=94 elapsed=4.002610125s
2026-04-17T14:13:36.956972Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 94 eligible frames
2026-04-17T14:13:39.200065Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 37 frames, 8.7MB → 1.0MB (9.1x), 37 JPEGs deleted
2026-04-17T14:13:44.175288Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 55 frames, 14.1MB → 5.2MB (2.7x), 55 JPEGs deleted
2026-04-17T14:18:50.535632Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=50 elapsed=6.342983084s
2026-04-17T14:18:50.535858Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 50 eligible frames
2026-04-17T14:18:55.998872Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 6.6MB → 1.4MB (4.7x), 27 JPEGs deleted
2026-04-17T14:19:01.988979Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 5.6MB → 1.7MB (3.4x), 21 JPEGs deleted
2026-04-17T14:24:10.629225Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=93 elapsed=8.530690958s
2026-04-17T14:24:10.630488Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 93 eligible frames
2026-04-17T14:24:14.059039Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 40 frames, 9.6MB → 0.9MB (10.8x), 40 JPEGs deleted
2026-04-17T14:24:23.148531Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 51 frames, 10.8MB → 4.0MB (2.7x), 51 JPEGs deleted
2026-04-17T14:29:23.471065Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)
2026-04-17T14:29:32.446209Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=89 elapsed=9.271002667s
2026-04-17T14:29:32.446508Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 89 eligible frames
2026-04-17T14:29:35.564415Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 8.1MB → 1.1MB (7.6x), 34 JPEGs deleted
2026-04-17T14:29:45.401977Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 10.3MB → 4.3MB (2.4x), 53 JPEGs deleted
2026-04-17T14:32:14.090889Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)
2026-04-17T14:32:14.146839Z INFO screenpipe_engine::event_driven_capture: invalidating persistent streams after unlock/wake for monitor 1
2026-04-17T14:32:14.244529Z INFO sck_rs::stream_manager: stopped 2 persistent stream(s)
2026-04-17T14:32:14.703073Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 0 excluded)
2026-04-17T14:32:14.988193Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 0 excluded)
2026-04-17T14:34:50.856958Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=24 elapsed=5.384970584s
2026-04-17T14:34:50.857455Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames
2026-04-17T14:34:52.290859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 2.7MB → 0.4MB (6.6x), 11 JPEGs deleted
2026-04-17T14:34:53.693474Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 1.5MB → 0.2MB (9.2x), 11 JPEGs deleted
2026-04-17T14:37:14.638516Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9181661591257973978, trigger=click)
2026-04-17T14:40:03.270627Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=20 elapsed=9.557211959s
2026-04-17T14:40:03.278247Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 20 eligible frames
2026-04-17T14:40:05.138961Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 2.2MB → 0.4MB (5.4x), 9 JPEGs deleted
2026-04-17T14:40:06.764822Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.3MB → 0.2MB (7.8x), 9 JPEGs deleted
2026-04-17T14:45:12.495947Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=59 elapsed=5.670180833s
2026-04-17T14:45:12.497790Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 59 eligible frames
2026-04-17T14:45:15.136200Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 5.2MB → 0.6MB (8.3x), 21 JPEGs deleted
2026-04-17T14:45:20.828130Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 36 frames, 6.0MB → 2.6MB (2.3x), 36 JPEGs deleted
2026-04-17T14:50:25.504734Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=72 elapsed=4.659346166s
2026-04-17T14:50:25.506133Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 72 eligible frames
2026-04-17T14:50:27.427176Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 6.7MB → 0.4MB (15.8x), 27 JPEGs deleted
2026-04-17T14:50:34.019162Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 43 frames, 9.1MB → 3.2MB (2.9x), 43 JPEGs deleted
2026-04-17T14:55:39.893638Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=79 elapsed=5.858070958s
2026-04-17T14:55:39.895561Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 79 eligible frames
2026-04-17T14:55:43.163996Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 6.9MB → 0.4MB (16.4x), 28 JPEGs deleted
2026-04-17T14:55:56.055565Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames, 10.6MB → 4.5MB (2.4x), 49 JPEGs deleted
2026-04-17T14:57:45.176869Z WARN sqlx::query: summary="SELECT DISTINCT app_name, window_name, …" db.statement="\n\nSELECT\n DISTINCT app_name,\n window_name,\n browser_url\nFROM\n frames\nWHERE\n timestamp > datetime('now', '-30 seconds')\n AND app_name IS NOT NULL\n AND window_name IS NOT NULL\n" rows_affected=0 rows_returned=231 elapsed=1.2009245s
2026-04-17T14:58:23.045622Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3920393652799492578, trigger=click)
2026-04-17T14:58:23.051277Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3920393652799492578, trigger=click)
2026-04-17T15:00:30.547821Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1372519357894711765, trigger=click)
2026-04-17T15:00:30.604735Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1372519357894711765, trigger=click)
2026-04-17T15:01:01.943860Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=74 elapsed=5.843169709s
2026-04-17T15:01:01.945075Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 74 eligible frames
2026-04-17T15:01:03.978029Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 6.6MB → 0.5MB (12.5x), 27 JPEGs deleted
2026-04-17T15:01:07.983940Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.6MB → 3.4MB (2.5x), 45 JPEGs deleted
2026-04-17T15:04:05.431336Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T15:04:14.122060Z WARN sqlx::query: summary="SELECT DISTINCT app_name, window_name, …" db.statement="\n\nSELECT\n DISTINCT app_name,\n window_name,\n browser_url\nFROM\n frames\nWHERE\n timestamp > datetime('now', '-30 seconds')\n AND app_name IS NOT NULL\n AND window_name IS NOT NULL\n" rows_affected=0 rows_returned=238 elapsed=1.025080625s
2026-04-17T15:06:11.984875Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=99 elapsed=3.984537334s
2026-04-17T15:06:11.985286Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 99 eligible frames
2026-04-17T15:06:13.867728Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 7.5MB → 1.0MB (7.3x), 31 JPEGs deleted
2026-04-17T15:06:18.911657Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 66 frames, 16.3MB → 6.0MB (2.7x), 66 JPEGs deleted
2026-04-17T15:11:22.803132Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=93 elapsed=3.878026709s
2026-04-17T15:11:22.803457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 93 eligible frames
2026-04-17T15:11:25.277196Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 36 frames, 7.9MB → 2.5MB (3.2x), 36 JPEGs deleted
2026-04-17T15:11:31.678242Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 55 frames, 13.2MB → 3.2MB (4.1x), 55 JPEGs deleted
2026-04-17T15:11:36.472154Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4962200028860693347, trigger=visual_change)
2026-04-17T15:12:06.651053Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4962200028860693347, trigger=click)
2026-04-17T15:16:32.090580Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 68 eligible frames
2026-04-17T15:16:34.655462Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 30 frames, 5.4MB → 0.9MB (5.9x), 30 JPEGs deleted
2026-04-17T15:16:41.238494Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 36 frames, 6.4MB → 1.6MB (4.1x), 36 JPEGs deleted
2026-04-17T15:19:28.640713Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1212435854110043925, trigger=visual_change)
2026-04-17T15:21:45.149681Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=39 elapsed=3.899251s
2026-04-17T15:21:45.150645Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 39 eligible frames
2026-04-17T15:21:46.239356Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 3.1MB → 0.3MB (10.0x), 16 JPEGs deleted
2026-04-17T15:21:48.199010Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 5.3MB → 1.3MB (4.1x), 21 JPEGs deleted
2026-04-17T15:26:34.048641Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1598647760408960479, trigger=click)
2026-04-17T15:26:34.049838Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1598647760408960479, trigger=click)
2026-04-17T15:26:51.952046Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=117 elapsed=3.742068667s
2026-04-17T15:26:51.953182Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 117 eligible frames
2026-04-17T15:26:55.136178Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames, 9.4MB → 0.3MB (29.8x), 49 JPEGs deleted
2026-04-17T15:27:02.919835Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 66 frames, 11.8MB → 4.7MB (2.5x), 66 JPEGs deleted
2026-04-17T15:29:40.347224Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7884575463800473404, trigger=click)
2026-04-17T15:29:42.361507Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7884575463800473404, trigger=visual_change)
2026-04-17T15:29:43.474497Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7884575463800473404, trigger=click)
2026-04-17T15:29:43.478357Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7884575463800473404, trigger=click)
2026-04-17T15:29:44.671400Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7884575463800473404, trigger=click)
2026-04-17T15:29:45.382214Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7884575463800473404, trigger=visual_change)
2026-04-17T15:32:07.525631Z WARN sqlx::query: summary="SELE...
|
iTerm2
|
screenpipe"
|
NULL
|
50929
|
|
2026-04-17T11:36:21.582162Z INFO screenpipe_engin 2026-04-17T11:36:21.582162Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3636375476660928346, trigger=visual_change)
2026-04-17T11:36:27.652465Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3636375476660928346, trigger=visual_change)
2026-04-17T11:39:42.586546Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=146 elapsed=5.50440575s
2026-04-17T11:39:42.593179Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 146 eligible frames
2026-04-17T11:39:54.820496Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 86 frames, 17.3MB → 8.8MB (2.0x), 86 JPEGs deleted
2026-04-17T11:40:00.213353Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 57 frames, 10.3MB → 2.7MB (3.9x), 57 JPEGs deleted
2026-04-17T11:45:05.403027Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=167 elapsed=5.175965584s
2026-04-17T11:45:05.403796Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 167 eligible frames
2026-04-17T11:45:23.920217Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 89 frames, 18.1MB → 8.0MB (2.3x), 89 JPEGs deleted
2026-04-17T11:45:39.404156Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 76 frames, 15.1MB → 5.2MB (2.9x), 76 JPEGs deleted
2026-04-17T11:47:40.403897Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8449116274740776858, trigger=visual_change)
2026-04-17T11:47:43.440723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8449116274740776858, trigger=visual_change)
2026-04-17T11:50:41.774396Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=118 elapsed=2.354790459s
2026-04-17T11:50:41.776220Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 118 eligible frames
2026-04-17T11:50:59.256756Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 70 frames, 13.9MB → 6.9MB (2.0x), 70 JPEGs deleted
2026-04-17T11:51:07.629800Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 46 frames, 13.0MB → 3.8MB (3.4x), 46 JPEGs deleted
2026-04-17T11:56:14.641254Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=104 elapsed=6.940613291s
2026-04-17T11:56:14.655230Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 104 eligible frames
2026-04-17T11:56:27.260405Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 64 frames, 12.4MB → 5.9MB (2.1x), 64 JPEGs deleted
2026-04-17T11:56:32.454420Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 11.4MB → 2.5MB (4.6x), 38 JPEGs deleted
2026-04-17T11:56:36.052813Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2897688846273938228, trigger=visual_change)
2026-04-17T11:56:39.125180Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2897688846273938228, trigger=visual_change)
2026-04-17T11:56:48.884595Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2897688846273938228, trigger=click)
2026-04-17T11:59:10.684033Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1187659190810667004, trigger=click)
2026-04-17T12:00:26.161484Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1187659190810667004, trigger=click)
2026-04-17T12:01:24.015698Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1187659190810667004, trigger=visual_change)
2026-04-17T12:01:37.484033Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=143 elapsed=5.013868584s
2026-04-17T12:01:37.484775Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 143 eligible frames
2026-04-17T12:01:54.962475Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 84 frames, 18.5MB → 11.2MB (1.7x), 84 JPEGs deleted
2026-04-17T12:02:09.701348Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 57 frames, 14.0MB → 5.0MB (2.8x), 57 JPEGs deleted
2026-04-17T12:04:52.068001Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1187659190810667004, trigger=click)
2026-04-17T12:06:01.171915Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1187659190810667004, trigger=visual_change)
2026-04-17T12:06:08.346769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1187659190810667004, trigger=click)
2026-04-17T12:06:40.246144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3230856144763016035, trigger=visual_change)
2026-04-17T12:07:14.586229Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=127 elapsed=4.93565275s
2026-04-17T12:07:14.587477Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 127 eligible frames
2026-04-17T12:07:26.001585Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 74 frames, 14.4MB → 6.7MB (2.2x), 74 JPEGs deleted
2026-04-17T12:07:32.330737Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 51 frames, 14.0MB → 3.5MB (4.1x), 51 JPEGs deleted
2026-04-17T12:09:44.692549Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-613971393924370495, trigger=visual_change)
2026-04-17T12:09:50.683046Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-613971393924370495, trigger=visual_change)
2026-04-17T12:09:53.718316Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-613971393924370495, trigger=visual_change)
2026-04-17T12:09:56.768856Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-613971393924370495, trigger=visual_change)
2026-04-17T12:12:37.753666Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=88 elapsed=5.414904667s
2026-04-17T12:12:37.753896Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-17T12:12:52.340444Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 52 frames, 9.7MB → 4.1MB (2.4x), 52 JPEGs deleted
2026-04-17T12:12:59.919500Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 10.2MB → 4.8MB (2.1x), 34 JPEGs deleted
2026-04-17T12:18:01.425343Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=77 elapsed=1.499634167s
2026-04-17T12:18:01.425741Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 77 eligible frames
2026-04-17T12:18:12.274223Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 46 frames, 8.4MB → 3.6MB (2.3x), 46 JPEGs deleted
2026-04-17T12:18:17.326612Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 29 frames, 8.2MB → 2.8MB (2.9x), 29 JPEGs deleted
2026-04-17T12:20:37.499495Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5858924638011024147, trigger=visual_change)
2026-04-17T12:23:22.133060Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=107 elapsed=4.695834792s
2026-04-17T12:23:22.134527Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 107 eligible frames
2026-04-17T12:23:30.575383Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 68 frames, 12.7MB → 5.3MB (2.4x), 68 JPEGs deleted
2026-04-17T12:23:35.540067Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 37 frames, 11.3MB → 3.8MB (3.0x), 37 JPEGs deleted
2026-04-17T12:24:26.708194Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1431084806293675067, trigger=visual_change)
2026-04-17T12:24:44.922890Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7156380177257339616, trigger=visual_change)
2026-04-17T12:24:47.959927Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7156380177257339616, trigger=visual_change)
2026-04-17T12:24:57.082676Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7156380177257339616, trigger=visual_change)
2026-04-17T12:25:06.162411Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=99156994807997409, trigger=visual_change)
2026-04-17T12:25:50.923162Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9094715609502343279, trigger=visual_change)
2026-04-17T12:28:39.907308Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=130 elapsed=4.35280675s
2026-04-17T12:28:39.908059Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 130 eligible frames
2026-04-17T12:28:52.289524Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 74 frames, 13.5MB → 5.4MB (2.5x), 74 JPEGs deleted
2026-04-17T12:29:03.322190Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 54 frames, 14.8MB → 4.1MB (3.6x), 54 JPEGs deleted
2026-04-17T12:29:41.523344Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9094715609502343279, trigger=visual_change)
2026-04-17T12:31:13.627356Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1187659190810667004, trigger=click)
2026-04-17T12:34:03.505841Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 133 eligible frames
2026-04-17T12:34:12.370434Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 83 frames, 17.0MB → 8.4MB (2.0x), 83 JPEGs deleted
2026-04-17T12:34:18.709761Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 48 frames, 12.4MB → 4.5MB (2.8x), 48 JPEGs deleted
2026-04-17T12:39:21.700676Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=94 elapsed=2.994116667s
2026-04-17T12:39:21.701475Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 94 eligible frames
2026-04-17T12:39:28.551006Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 60 frames, 11.9MB → 5.2MB (2.3x), 60 JPEGs deleted
2026-04-17T12:39:33.119092Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 8.9MB → 3.0MB (3.0x), 32 JPEGs deleted
2026-04-17T12:41:55.518740Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4645364130590448795, trigger=visual_change)
2026-04-17T12:44:31.486942Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5268491633263651922, trigger=visual_change)
2026-04-17T12:44:34.083563Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 80 eligible frames
2026-04-17T12:44:42.267029Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 54 frames, 9.3MB → 3.9MB (2.4x), 54 JPEGs deleted
2026-04-17T12:44:46.583955Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 7.1MB → 1.7MB (4.2x), 24 JPEGs deleted
2026-04-17T12:48:00.030407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7118306775293142140, trigger=visual_change)
2026-04-17T12:49:09.718005Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3890447493078382535, trigger=visual_change)
2026-04-17T12:49:48.947739Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=83 elapsed=2.349997458s
2026-04-17T12:49:48.949259Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 83 eligible frames
2026-04-17T12:49:54.500850Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 9.4MB → 3.6MB (2.6x), 53 JPEGs deleted
2026-04-17T12:49:56.956633Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 8.0MB → 1.4MB (5.6x), 28 JPEGs deleted
2026-04-17T12:50:49.723216Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2308635439156572871, trigger=visual_change)
2026-04-17T12:55:01.685683Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=68 elapsed=4.658703708s
2026-04-17T12:55:01.686755Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 68 eligible frames
2026-04-17T12:55:09.567444Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 7.3MB → 3.0MB (2.4x), 41 JPEGs deleted
2026-04-17T12:55:11.689903Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 7.3MB → 1.2MB (6.0x), 25 JPEGs deleted
2026-04-17T12:57:46.261931Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3247250458952498707, trigger=visual_change)
2026-04-17T13:00:15.547338Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=67 elapsed=3.841360958s
2026-04-17T13:00:15.547891Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 67 eligible frames
2026-04-17T13:00:18.854188Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 6.9MB → 2.9MB (2.4x), 38 JPEGs deleted
2026-04-17T13:00:20.869607Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 6.1MB → 1.9MB (3.2x), 27 JPEGs deleted
2026-04-17T13:00:47.836013Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3538231965223053471, trigger=click)
2026-04-17T13:05:21.592379Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 100 eligible frames
2026-04-17T13:05:24.334610Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 46 frames, 7.2MB → 1.1MB (6.3x), 46 JPEGs deleted
2026-04-17T13:05:29.624320Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 52 frames, 11.3MB → 5.4MB (2.1x), 52 JPEGs deleted
2026-04-17T13:05:51.246979Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6043481845154234215, trigger=click)
2026-04-17T13:10:01.795432Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:03.069120Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:03.075328Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:04.101145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:04.101122Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:04.376980Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=visual_change)
2026-04-17T13:10:06.992302Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:06.997093Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:07.384444Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=visual_change)
2026-04-17T13:10:09.998269Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:10.018259Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:10.421277Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=visual_change)
2026-04-17T13:10:11.230951Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8309174487239213230, trigger=visual_change)
2026-04-17T13:10:13.459367Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=visual_change)
2026-04-17T13:10:33.885435Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=83 elapsed=4.209110041s
2026-04-17T13:10:33.885993Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 83 eligible frames
2026-04-17T13:10:36.418211Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 39 frames, 9.0MB → 1.8MB (5.1x), 39 JPEGs deleted
2026-04-17T13:10:41.833569Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 10.3MB → 4.4MB (2.3x), 42 JPEGs deleted
2026-04-17T13:15:47.143596Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=45 elapsed=5.294994208s
2026-04-17T13:15:47.143961Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 45 eligible frames
2026-04-17T13:15:49.530930Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 5.3MB → 0.5MB (10.7x), 19 JPEGs deleted
2026-04-17T13:15:53.181326Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 6.2MB → 1.9MB (3.2x), 24 JPEGs deleted
2026-04-17T13:15:59.924682Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6080998014092105058, trigger=click)
2026-04-17T13:17:47.639533Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6043481845154234215, trigger=click)
2026-04-17T13:17:47.640336Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6043481845154234215, trigger=click)
2026-04-17T13:20:53.865787Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 85 eligible frames
2026-04-17T13:20:56.296312Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 35 frames, 9.3MB → 0.8MB (12.3x), 35 JPEGs deleted
2026-04-17T13:21:01.541879Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 48 frames, 10.0MB → 3.5MB (2.9x), 48 JPEGs deleted
2026-04-17T13:21:24.697431Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8579915543009657377, trigger=visual_change)
2026-04-17T13:22:53.638454Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8579915543009657377, trigger=visual_change)
2026-04-17T13:23:21.001499Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4786115965986315783, trigger=visual_change)
2026-04-17T13:26:06.993632Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=145 elapsed=5.377591541s
2026-04-17T13:26:06.995358Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 145 eligible frames
2026-04-17T13:26:10.229487Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 47 frames, 10.6MB → 1.1MB (9.6x), 47 JPEGs deleted
2026-04-17T13:26:20.367203Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 96 frames, 17.5MB → 7.4MB (2.4x), 96 JPEGs deleted
2026-04-17T13:31:24.012859Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=97 elapsed=3.623441916s
2026-04-17T13:31:24.013303Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-17T13:31:26.695278Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 46 frames, 10.7MB → 0.6MB (17.9x), 46 JPEGs deleted
2026-04-17T13:31:29.991292Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames, 11.5MB → 3.2MB (3.6x), 49 JPEGs deleted
2026-04-17T13:32:39.125960Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6089929419086115132, trigger=visual_change)
2026-04-17T13:33:15.059703Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8228581750357175612, trigger=visual_change)
2026-04-17T13:36:34.787296Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=134 elapsed=4.778564541s
2026-04-17T13:36:34.788177Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 134 eligible frames
2026-04-17T13:36:37.619828Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 9.3MB → 2.6MB (3.6x), 38 JPEGs deleted
2026-04-17T13:36:47.174485Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 94 frames, 19.4MB → 6.6MB (2.9x), 94 JPEGs deleted
2026-04-17T13:38:01.793664Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8948708845629756494, trigger=visual_change)
2026-04-17T13:41:38.909857Z WARN sqlx::query: summary="SELECT DISTINCT app_name, window_name, …" db.statement="\n\nSELECT\n DISTINCT app_name,\n window_name,\n browser_url\nFROM\n frames\nWHERE\n timestamp > datetime('now', '-30 seconds')\n AND app_name IS NOT NULL\n AND window_name IS NOT NULL\n" rows_affected=0 rows_returned=191 elapsed=2.726793958s
2026-04-17T13:41:53.564499Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=127 elapsed=6.337926625s
2026-04-17T13:41:53.564966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 127 eligible frames
2026-04-17T13:41:56.377224Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 39 frames, 8.7MB → 0.9MB (10.2x), 39 JPEGs deleted
2026-04-17T13:42:04.113088Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 86 frames, 19.8MB → 4.6MB (4.3x), 86 JPEGs deleted
2026-04-17T13:42:28.546840Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2407191479157132203, trigger=visual_change)
2026-04-17T13:42:31.565154Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2407191479157132203, trigger=visual_change)
2026-04-17T13:43:01.179117Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2966960464075814955, trigger=visual_change)
2026-04-17T13:43:04.176336Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2966960464075814955, trigger=visual_change)
2026-04-17T13:47:09.104428Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=108 elapsed=4.971006834s
2026-04-17T13:47:09.105265Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 108 eligible frames
2026-04-17T13:47:12.128696Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 46 frames, 10.8MB → 1.2MB (8.7x), 46 JPEGs deleted
2026-04-17T13:47:18.306857Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1588829377627911602, trigger=visual_change)
2026-04-17T13:47:20.741949Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 60 frames, 12.1MB → 4.6MB (2.6x), 60 JPEGs deleted
2026-04-17T13:49:02.375155Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T13:49:03.780188Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8632488258017461693, trigger=click)
2026-04-17T13:50:51.417277Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2407191479157132203, trigger=visual_change)
2026-04-17T13:50:52.233635Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2407191479157132203, trigger=visual_change)
2026-04-17T13:52:23.916789Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=148 elapsed=3.130792583s
2026-04-17T13:52:23.916950Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 148 eligible frames
2026-04-17T13:52:28.645026Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 62 frames, 14.5MB → 3.3MB (4.4x), 62 JPEGs deleted
2026-04-17T13:52:32.516195Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4465696449359315208, trigger=click)
2026-04-17T13:52:41.560804Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 84 frames, 17.7MB → 8.7MB (2.0x), 84 JPEGs deleted
2026-04-17T13:57:46.196574Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=158 elapsed=4.5932735s
2026-04-17T13:57:46.196771Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 158 eligible frames
2026-04-17T13:57:49.965702Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 59 frames, 13.8MB → 1.3MB (10.6x), 59 JPEGs deleted
2026-04-17T13:57:57.488258Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 97 frames, 21.7MB → 9.6MB (2.3x), 97 JPEGs deleted
2026-04-17T14:01:04.834817Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T14:03:03.419391Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=162 elapsed=5.916741833s
2026-04-17T14:03:03.419970Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 162 eligible frames
2026-04-17T14:03:07.531462Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 62 frames, 14.4MB → 1.6MB (9.0x), 62 JPEGs deleted
2026-04-17T14:03:25.381848Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 98 frames, 27.2MB → 12.9MB (2.1x), 98 JPEGs deleted
2026-04-17T14:07:52.779104Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3920393652799492578, trigger=visual_change)
2026-04-17T14:08:29.344550Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=39 elapsed=3.921230209s
2026-04-17T14:08:29.344820Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 39 eligible frames
2026-04-17T14:08:30.820661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 4.4MB → 0.5MB (8.3x), 18 JPEGs deleted
2026-04-17T14:08:32.939816Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 6.3MB → 1.5MB (4.1x), 19 JPEGs deleted
2026-04-17T14:11:32.178274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T14:11:35.201992Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T14:11:38.167294Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T14:11:41.241749Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T14:13:36.956810Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=94 elapsed=4.002610125s
2026-04-17T14:13:36.956972Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 94 eligible frames
2026-04-17T14:13:39.200065Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 37 frames, 8.7MB → 1.0MB (9.1x), 37 JPEGs deleted
2026-04-17T14:13:44.175288Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 55 frames, 14.1MB → 5.2MB (2.7x), 55 JPEGs deleted
2026-04-17T14:18:50.535632Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=50 elapsed=6.342983084s
2026-04-17T14:18:50.535858Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 50 eligible frames
2026-04-17T14:18:55.998872Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 6.6MB → 1.4MB (4.7x), 27 JPEGs deleted
2026-04-17T14:19:01.988979Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 5.6MB → 1.7MB (3.4x), 21 JPEGs deleted
2026-04-17T14:24:10.629225Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=93 elapsed=8.530690958s
2026-04-17T14:24:10.630488Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 93 eligible frames
2026-04-17T14:24:14.059039Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 40 frames, 9.6MB → 0.9MB (10.8x), 40 JPEGs deleted
2026-04-17T14:24:23.148531Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 51 frames, 10.8MB → 4.0MB (2.7x), 51 JPEGs deleted
2026-04-17T14:29:23.471065Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)
2026-04-17T14:29:32.446209Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=89 elapsed=9.271002667s
2026-04-17T14:29:32.446508Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 89 eligible frames
2026-04-17T14:29:35.564415Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 8.1MB → 1.1MB (7.6x), 34 JPEGs deleted
2026-04-17T14:29:45.401977Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 10.3MB → 4.3MB (2.4x), 53 JPEGs deleted
2026-04-17T14:32:14.090889Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)
2026-04-17T14:32:14.146839Z INFO screenpipe_engine::event_driven_capture: invalidating persistent streams after unlock/wake for monitor 1
2026-04-17T14:32:14.244529Z INFO sck_rs::stream_manager: stopped 2 persistent stream(s)
2026-04-17T14:32:14.703073Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 0 excluded)
2026-04-17T14:32:14.988193Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 0 excluded)
2026-04-17T14:34:50.856958Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=24 elapsed=5.384970584s
2026-04-17T14:34:50.857455Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames
2026-04-17T14:34:52.290859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 2.7MB → 0.4MB (6.6x), 11 JPEGs deleted
2026-04-17T14:34:53.693474Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 1.5MB → 0.2MB (9.2x), 11 JPEGs deleted
2026-04-17T14:37:14.638516Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9181661591257973978, trigger=click)
2026-04-17T14:40:03.270627Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=20 elapsed=9.557211959s
2026-04-17T14:40:03.278247Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 20 eligible frames
2026-04-17T14:40:05.138961Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 2.2MB → 0.4MB (5.4x), 9 JPEGs deleted
2026-04-17T14:40:06.764822Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.3MB → 0.2MB (7.8x), 9 JPEGs deleted
2026-04-17T14:45:12.495947Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=59 elapsed=5.670180833s
2026-04-17T14:45:12.497790Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 59 eligible frames
2026-04-17T14:45:15.136200Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 5.2MB → 0.6MB (8.3x), 21 JPEGs deleted
2026-04-17T14:45:20.828130Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 36 frames, 6.0MB → 2.6MB (2.3x), 36 JPEGs deleted
2026-04-17T14:50:25.504734Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=72 elapsed=4.659346166s
2026-04-17T14:50:25.506133Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 72 eligible frames
2026-04-17T14:50:27.427176Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 6.7MB → 0.4MB (15.8x), 27 JPEGs deleted
2026-04-17T14:50:34.019162Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 43 frames, 9.1MB → 3.2MB (2.9x), 43 JPEGs deleted
2026-04-17T14:55:39.893638Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=79 elapsed=5.858070958s
2026-04-17T14:55:39.895561Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 79 eligible frames
2026-04-17T14:55:43.163996Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 6.9MB → 0.4MB (16.4x), 28 JPEGs deleted
2026-04-17T14:55:56.055565Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames, 10.6MB → 4.5MB (2.4x), 49 JPEGs deleted
2026-04-17T14:57:45.176869Z WARN sqlx::query: summary="SELECT DISTINCT app_name, window_name, …" db.statement="\n\nSELECT\n DISTINCT app_name,\n window_name,\n browser_url\nFROM\n frames\nWHERE\n timestamp > datetime('now', '-30 seconds')\n AND app_name IS NOT NULL\n AND window_name IS NOT NULL\n" rows_affected=0 rows_returned=231 elapsed=1.2009245s
2026-04-17T14:58:23.045622Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3920393652799492578, trigger=click)
2026-04-17T14:58:23.051277Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3920393652799492578, trigger=click)
2026-04-17T15:00:30.547821Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1372519357894711765, trigger=click)
2026-04-17T15:00:30.604735Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1372519357894711765, trigger=click)
2026-04-17T15:01:01.943860Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=74 elapsed=5.843169709s
2026-04-17T15:01:01.945075Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 74 eligible frames
2026-04-17T15:01:03.978029Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 6.6MB → 0.5MB (12.5x), 27 JPEGs deleted
2026-04-17T15:01:07.983940Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.6MB → 3.4MB (2.5x), 45 JPEGs deleted
2026-04-17T15:04:05.431336Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T15:04:14.122060Z WARN sqlx::query: summary="SELECT DISTINCT app_name, window_name, …" db.statement="\n\nSELECT\n DISTINCT app_name,\n window_name,\n browser_url\nFROM\n frames\nWHERE\n timestamp > datetime('now', '-30 seconds')\n AND app_name IS NOT NULL\n AND window_name IS NOT NULL\n" rows_affected=0 rows_returned=238 elapsed=1.025080625s
2026-04-17T15:06:11.984875Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=99 elapsed=3.984537334s
2026-04-17T15:06:11.985286Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 99 eligible frames
2026-04-17T15:06:13.867728Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 7.5MB → 1.0MB (7.3x), 31 JPEGs deleted
2026-04-17T15:06:18.911657Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 66 frames, 16.3MB → 6.0MB (2.7x), 66 JPEGs deleted
2026-04-17T15:11:22.803132Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=93 elapsed=3.878026709s
2026-04-17T15:11:22.803457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 93 eligible frames
2026-04-17T15:11:25.277196Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 36 frames, 7.9MB → 2.5MB (3.2x), 36 JPEGs deleted
2026-04-17T15:11:31.678242Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 55 frames, 13.2MB → 3.2MB (4.1x), 55 JPEGs deleted
2026-04-17T15:11:36.472154Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4962200028860693347, trigger=visual_change)
2026-04-17T15:12:06.651053Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4962200028860693347, trigger=click)
2026-04-17T15:16:32.090580Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 68 eligible frames
2026-04-17T15:16:34.655462Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 30 frames, 5.4MB → 0.9MB (5.9x), 30 JPEGs deleted
2026-04-17T15:16:41.238494Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 36 frames, 6.4MB → 1.6MB (4.1x), 36 JPEGs deleted
2026-04-17T15:19:28.640713Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1212435854110043925, trigger=visual_change)
2026-04-17T15:21:45.149681Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=39 elapsed=3.899251s
2026-04-17T15:21:45.150645Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 39 eligible frames
2026-04-17T15:21:46.239356Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 3.1MB → 0.3MB (10.0x), 16 JPEGs deleted
2026-04-17T15:21:48.199010Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 5.3MB → 1.3MB (4.1x), 21 JPEGs deleted
2026-04-17T15:26:34.048641Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1598647760408960479, trigger=click)
2026-04-17T15:26:34.049838Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1598647760408960479, trigger=click)
2026-04-17T15:26:51.952046Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=117 elapsed=3.742068667s
2026-04-17T15:26:51.953182Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 117 eligible frames
2026-04-17T15:26:55.136178Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames, 9.4MB → 0.3MB (29.8x), 49 JPEGs deleted
2026-04-17T15:27:02.919835Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 66 frames, 11.8MB → 4.7MB (2.5x), 66 JPEGs deleted
2026-04-17T15:29:40.347224Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7884575463800473404, trigger=click)
2026-04-17T15:29:42.361507Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7884575463800473404, trigger=visual_change)
2026-04-17T15:29:43.474497Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7884575463800473404, trigger=click)
2026-04-17T15:29:43.478357Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7884575463800473404, trigger=click)
2026-04-17T15:29:44.671400Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7884575463800473404, trigger=click)
2026-04-17T15:29:45.382214Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7884575463800473404, trigger=visual_change)
2026-04-17T15:32:07.525631Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n sna...
|
iTerm2
|
screenpipe"
|
NULL
|
50930
|
|
2026-04-17T11:45:05.403796Z INFO screenpipe_engin 2026-04-17T11:45:05.403796Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 167 eligible frames
2026-04-17T11:45:23.920217Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 89 frames, 18.1MB → 8.0MB (2.3x), 89 JPEGs deleted
2026-04-17T11:45:39.404156Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 76 frames, 15.1MB → 5.2MB (2.9x), 76 JPEGs deleted
2026-04-17T11:47:40.403897Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8449116274740776858, trigger=visual_change)
2026-04-17T11:47:43.440723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8449116274740776858, trigger=visual_change)
2026-04-17T11:50:41.774396Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=118 elapsed=2.354790459s
2026-04-17T11:50:41.776220Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 118 eligible frames
2026-04-17T11:50:59.256756Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 70 frames, 13.9MB → 6.9MB (2.0x), 70 JPEGs deleted
2026-04-17T11:51:07.629800Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 46 frames, 13.0MB → 3.8MB (3.4x), 46 JPEGs deleted
2026-04-17T11:56:14.641254Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=104 elapsed=6.940613291s
2026-04-17T11:56:14.655230Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 104 eligible frames
2026-04-17T11:56:27.260405Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 64 frames, 12.4MB → 5.9MB (2.1x), 64 JPEGs deleted
2026-04-17T11:56:32.454420Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 11.4MB → 2.5MB (4.6x), 38 JPEGs deleted
2026-04-17T11:56:36.052813Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2897688846273938228, trigger=visual_change)
2026-04-17T11:56:39.125180Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2897688846273938228, trigger=visual_change)
2026-04-17T11:56:48.884595Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2897688846273938228, trigger=click)
2026-04-17T11:59:10.684033Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1187659190810667004, trigger=click)
2026-04-17T12:00:26.161484Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1187659190810667004, trigger=click)
2026-04-17T12:01:24.015698Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1187659190810667004, trigger=visual_change)
2026-04-17T12:01:37.484033Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=143 elapsed=5.013868584s
2026-04-17T12:01:37.484775Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 143 eligible frames
2026-04-17T12:01:54.962475Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 84 frames, 18.5MB → 11.2MB (1.7x), 84 JPEGs deleted
2026-04-17T12:02:09.701348Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 57 frames, 14.0MB → 5.0MB (2.8x), 57 JPEGs deleted
2026-04-17T12:04:52.068001Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1187659190810667004, trigger=click)
2026-04-17T12:06:01.171915Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1187659190810667004, trigger=visual_change)
2026-04-17T12:06:08.346769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1187659190810667004, trigger=click)
2026-04-17T12:06:40.246144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3230856144763016035, trigger=visual_change)
2026-04-17T12:07:14.586229Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=127 elapsed=4.93565275s
2026-04-17T12:07:14.587477Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 127 eligible frames
2026-04-17T12:07:26.001585Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 74 frames, 14.4MB → 6.7MB (2.2x), 74 JPEGs deleted
2026-04-17T12:07:32.330737Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 51 frames, 14.0MB → 3.5MB (4.1x), 51 JPEGs deleted
2026-04-17T12:09:44.692549Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-613971393924370495, trigger=visual_change)
2026-04-17T12:09:50.683046Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-613971393924370495, trigger=visual_change)
2026-04-17T12:09:53.718316Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-613971393924370495, trigger=visual_change)
2026-04-17T12:09:56.768856Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-613971393924370495, trigger=visual_change)
2026-04-17T12:12:37.753666Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=88 elapsed=5.414904667s
2026-04-17T12:12:37.753896Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-17T12:12:52.340444Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 52 frames, 9.7MB → 4.1MB (2.4x), 52 JPEGs deleted
2026-04-17T12:12:59.919500Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 10.2MB → 4.8MB (2.1x), 34 JPEGs deleted
2026-04-17T12:18:01.425343Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=77 elapsed=1.499634167s
2026-04-17T12:18:01.425741Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 77 eligible frames
2026-04-17T12:18:12.274223Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 46 frames, 8.4MB → 3.6MB (2.3x), 46 JPEGs deleted
2026-04-17T12:18:17.326612Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 29 frames, 8.2MB → 2.8MB (2.9x), 29 JPEGs deleted
2026-04-17T12:20:37.499495Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5858924638011024147, trigger=visual_change)
2026-04-17T12:23:22.133060Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=107 elapsed=4.695834792s
2026-04-17T12:23:22.134527Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 107 eligible frames
2026-04-17T12:23:30.575383Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 68 frames, 12.7MB → 5.3MB (2.4x), 68 JPEGs deleted
2026-04-17T12:23:35.540067Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 37 frames, 11.3MB → 3.8MB (3.0x), 37 JPEGs deleted
2026-04-17T12:24:26.708194Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1431084806293675067, trigger=visual_change)
2026-04-17T12:24:44.922890Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7156380177257339616, trigger=visual_change)
2026-04-17T12:24:47.959927Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7156380177257339616, trigger=visual_change)
2026-04-17T12:24:57.082676Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7156380177257339616, trigger=visual_change)
2026-04-17T12:25:06.162411Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=99156994807997409, trigger=visual_change)
2026-04-17T12:25:50.923162Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9094715609502343279, trigger=visual_change)
2026-04-17T12:28:39.907308Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=130 elapsed=4.35280675s
2026-04-17T12:28:39.908059Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 130 eligible frames
2026-04-17T12:28:52.289524Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 74 frames, 13.5MB → 5.4MB (2.5x), 74 JPEGs deleted
2026-04-17T12:29:03.322190Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 54 frames, 14.8MB → 4.1MB (3.6x), 54 JPEGs deleted
2026-04-17T12:29:41.523344Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9094715609502343279, trigger=visual_change)
2026-04-17T12:31:13.627356Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1187659190810667004, trigger=click)
2026-04-17T12:34:03.505841Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 133 eligible frames
2026-04-17T12:34:12.370434Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 83 frames, 17.0MB → 8.4MB (2.0x), 83 JPEGs deleted
2026-04-17T12:34:18.709761Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 48 frames, 12.4MB → 4.5MB (2.8x), 48 JPEGs deleted
2026-04-17T12:39:21.700676Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=94 elapsed=2.994116667s
2026-04-17T12:39:21.701475Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 94 eligible frames
2026-04-17T12:39:28.551006Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 60 frames, 11.9MB → 5.2MB (2.3x), 60 JPEGs deleted
2026-04-17T12:39:33.119092Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 8.9MB → 3.0MB (3.0x), 32 JPEGs deleted
2026-04-17T12:41:55.518740Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4645364130590448795, trigger=visual_change)
2026-04-17T12:44:31.486942Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5268491633263651922, trigger=visual_change)
2026-04-17T12:44:34.083563Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 80 eligible frames
2026-04-17T12:44:42.267029Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 54 frames, 9.3MB → 3.9MB (2.4x), 54 JPEGs deleted
2026-04-17T12:44:46.583955Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 7.1MB → 1.7MB (4.2x), 24 JPEGs deleted
2026-04-17T12:48:00.030407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7118306775293142140, trigger=visual_change)
2026-04-17T12:49:09.718005Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3890447493078382535, trigger=visual_change)
2026-04-17T12:49:48.947739Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=83 elapsed=2.349997458s
2026-04-17T12:49:48.949259Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 83 eligible frames
2026-04-17T12:49:54.500850Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 9.4MB → 3.6MB (2.6x), 53 JPEGs deleted
2026-04-17T12:49:56.956633Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 8.0MB → 1.4MB (5.6x), 28 JPEGs deleted
2026-04-17T12:50:49.723216Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2308635439156572871, trigger=visual_change)
2026-04-17T12:55:01.685683Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=68 elapsed=4.658703708s
2026-04-17T12:55:01.686755Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 68 eligible frames
2026-04-17T12:55:09.567444Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 7.3MB → 3.0MB (2.4x), 41 JPEGs deleted
2026-04-17T12:55:11.689903Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 7.3MB → 1.2MB (6.0x), 25 JPEGs deleted
2026-04-17T12:57:46.261931Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3247250458952498707, trigger=visual_change)
2026-04-17T13:00:15.547338Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=67 elapsed=3.841360958s
2026-04-17T13:00:15.547891Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 67 eligible frames
2026-04-17T13:00:18.854188Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 6.9MB → 2.9MB (2.4x), 38 JPEGs deleted
2026-04-17T13:00:20.869607Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 6.1MB → 1.9MB (3.2x), 27 JPEGs deleted
2026-04-17T13:00:47.836013Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3538231965223053471, trigger=click)
2026-04-17T13:05:21.592379Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 100 eligible frames
2026-04-17T13:05:24.334610Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 46 frames, 7.2MB → 1.1MB (6.3x), 46 JPEGs deleted
2026-04-17T13:05:29.624320Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 52 frames, 11.3MB → 5.4MB (2.1x), 52 JPEGs deleted
2026-04-17T13:05:51.246979Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6043481845154234215, trigger=click)
2026-04-17T13:10:01.795432Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:03.069120Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:03.075328Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:04.101145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:04.101122Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:04.376980Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=visual_change)
2026-04-17T13:10:06.992302Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:06.997093Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:07.384444Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=visual_change)
2026-04-17T13:10:09.998269Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:10.018259Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:10.421277Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=visual_change)
2026-04-17T13:10:11.230951Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8309174487239213230, trigger=visual_change)
2026-04-17T13:10:13.459367Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=visual_change)
2026-04-17T13:10:33.885435Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=83 elapsed=4.209110041s
2026-04-17T13:10:33.885993Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 83 eligible frames
2026-04-17T13:10:36.418211Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 39 frames, 9.0MB → 1.8MB (5.1x), 39 JPEGs deleted
2026-04-17T13:10:41.833569Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 10.3MB → 4.4MB (2.3x), 42 JPEGs deleted
2026-04-17T13:15:47.143596Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=45 elapsed=5.294994208s
2026-04-17T13:15:47.143961Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 45 eligible frames
2026-04-17T13:15:49.530930Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 5.3MB → 0.5MB (10.7x), 19 JPEGs deleted
2026-04-17T13:15:53.181326Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 6.2MB → 1.9MB (3.2x), 24 JPEGs deleted
2026-04-17T13:15:59.924682Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6080998014092105058, trigger=click)
2026-04-17T13:17:47.639533Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6043481845154234215, trigger=click)
2026-04-17T13:17:47.640336Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6043481845154234215, trigger=click)
2026-04-17T13:20:53.865787Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 85 eligible frames
2026-04-17T13:20:56.296312Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 35 frames, 9.3MB → 0.8MB (12.3x), 35 JPEGs deleted
2026-04-17T13:21:01.541879Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 48 frames, 10.0MB → 3.5MB (2.9x), 48 JPEGs deleted
2026-04-17T13:21:24.697431Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8579915543009657377, trigger=visual_change)
2026-04-17T13:22:53.638454Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8579915543009657377, trigger=visual_change)
2026-04-17T13:23:21.001499Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4786115965986315783, trigger=visual_change)
2026-04-17T13:26:06.993632Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=145 elapsed=5.377591541s
2026-04-17T13:26:06.995358Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 145 eligible frames
2026-04-17T13:26:10.229487Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 47 frames, 10.6MB → 1.1MB (9.6x), 47 JPEGs deleted
2026-04-17T13:26:20.367203Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 96 frames, 17.5MB → 7.4MB (2.4x), 96 JPEGs deleted
2026-04-17T13:31:24.012859Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=97 elapsed=3.623441916s
2026-04-17T13:31:24.013303Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-17T13:31:26.695278Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 46 frames, 10.7MB → 0.6MB (17.9x), 46 JPEGs deleted
2026-04-17T13:31:29.991292Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames, 11.5MB → 3.2MB (3.6x), 49 JPEGs deleted
2026-04-17T13:32:39.125960Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6089929419086115132, trigger=visual_change)
2026-04-17T13:33:15.059703Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8228581750357175612, trigger=visual_change)
2026-04-17T13:36:34.787296Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=134 elapsed=4.778564541s
2026-04-17T13:36:34.788177Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 134 eligible frames
2026-04-17T13:36:37.619828Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 9.3MB → 2.6MB (3.6x), 38 JPEGs deleted
2026-04-17T13:36:47.174485Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 94 frames, 19.4MB → 6.6MB (2.9x), 94 JPEGs deleted
2026-04-17T13:38:01.793664Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8948708845629756494, trigger=visual_change)
2026-04-17T13:41:38.909857Z WARN sqlx::query: summary="SELECT DISTINCT app_name, window_name, …" db.statement="\n\nSELECT\n DISTINCT app_name,\n window_name,\n browser_url\nFROM\n frames\nWHERE\n timestamp > datetime('now', '-30 seconds')\n AND app_name IS NOT NULL\n AND window_name IS NOT NULL\n" rows_affected=0 rows_returned=191 elapsed=2.726793958s
2026-04-17T13:41:53.564499Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=127 elapsed=6.337926625s
2026-04-17T13:41:53.564966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 127 eligible frames
2026-04-17T13:41:56.377224Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 39 frames, 8.7MB → 0.9MB (10.2x), 39 JPEGs deleted
2026-04-17T13:42:04.113088Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 86 frames, 19.8MB → 4.6MB (4.3x), 86 JPEGs deleted
2026-04-17T13:42:28.546840Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2407191479157132203, trigger=visual_change)
2026-04-17T13:42:31.565154Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2407191479157132203, trigger=visual_change)
2026-04-17T13:43:01.179117Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2966960464075814955, trigger=visual_change)
2026-04-17T13:43:04.176336Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2966960464075814955, trigger=visual_change)
2026-04-17T13:47:09.104428Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=108 elapsed=4.971006834s
2026-04-17T13:47:09.105265Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 108 eligible frames
2026-04-17T13:47:12.128696Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 46 frames, 10.8MB → 1.2MB (8.7x), 46 JPEGs deleted
2026-04-17T13:47:18.306857Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1588829377627911602, trigger=visual_change)
2026-04-17T13:47:20.741949Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 60 frames, 12.1MB → 4.6MB (2.6x), 60 JPEGs deleted
2026-04-17T13:49:02.375155Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T13:49:03.780188Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8632488258017461693, trigger=click)
2026-04-17T13:50:51.417277Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2407191479157132203, trigger=visual_change)
2026-04-17T13:50:52.233635Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2407191479157132203, trigger=visual_change)
2026-04-17T13:52:23.916789Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=148 elapsed=3.130792583s
2026-04-17T13:52:23.916950Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 148 eligible frames
2026-04-17T13:52:28.645026Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 62 frames, 14.5MB → 3.3MB (4.4x), 62 JPEGs deleted
2026-04-17T13:52:32.516195Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4465696449359315208, trigger=click)
2026-04-17T13:52:41.560804Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 84 frames, 17.7MB → 8.7MB (2.0x), 84 JPEGs deleted
2026-04-17T13:57:46.196574Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=158 elapsed=4.5932735s
2026-04-17T13:57:46.196771Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 158 eligible frames
2026-04-17T13:57:49.965702Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 59 frames, 13.8MB → 1.3MB (10.6x), 59 JPEGs deleted
2026-04-17T13:57:57.488258Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 97 frames, 21.7MB → 9.6MB (2.3x), 97 JPEGs deleted
2026-04-17T14:01:04.834817Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T14:03:03.419391Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=162 elapsed=5.916741833s
2026-04-17T14:03:03.419970Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 162 eligible frames
2026-04-17T14:03:07.531462Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 62 frames, 14.4MB → 1.6MB (9.0x), 62 JPEGs deleted
2026-04-17T14:03:25.381848Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 98 frames, 27.2MB → 12.9MB (2.1x), 98 JPEGs deleted
2026-04-17T14:07:52.779104Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3920393652799492578, trigger=visual_change)
2026-04-17T14:08:29.344550Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=39 elapsed=3.921230209s
2026-04-17T14:08:29.344820Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 39 eligible frames
2026-04-17T14:08:30.820661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 4.4MB → 0.5MB (8.3x), 18 JPEGs deleted
2026-04-17T14:08:32.939816Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 6.3MB → 1.5MB (4.1x), 19 JPEGs deleted
2026-04-17T14:11:32.178274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T14:11:35.201992Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T14:11:38.167294Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T14:11:41.241749Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T14:13:36.956810Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=94 elapsed=4.002610125s
2026-04-17T14:13:36.956972Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 94 eligible frames
2026-04-17T14:13:39.200065Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 37 frames, 8.7MB → 1.0MB (9.1x), 37 JPEGs deleted
2026-04-17T14:13:44.175288Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 55 frames, 14.1MB → 5.2MB (2.7x), 55 JPEGs deleted
2026-04-17T14:18:50.535632Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=50 elapsed=6.342983084s
2026-04-17T14:18:50.535858Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 50 eligible frames
2026-04-17T14:18:55.998872Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 6.6MB → 1.4MB (4.7x), 27 JPEGs deleted
2026-04-17T14:19:01.988979Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 5.6MB → 1.7MB (3.4x), 21 JPEGs deleted
2026-04-17T14:24:10.629225Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=93 elapsed=8.530690958s
2026-04-17T14:24:10.630488Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 93 eligible frames
2026-04-17T14:24:14.059039Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 40 frames, 9.6MB → 0.9MB (10.8x), 40 JPEGs deleted
2026-04-17T14:24:23.148531Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 51 frames, 10.8MB → 4.0MB (2.7x), 51 JPEGs deleted
2026-04-17T14:29:23.471065Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)
2026-04-17T14:29:32.446209Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=89 elapsed=9.271002667s
2026-04-17T14:29:32.446508Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 89 eligible frames
2026-04-17T14:29:35.564415Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 8.1MB → 1.1MB (7.6x), 34 JPEGs deleted
2026-04-17T14:29:45.401977Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 10.3MB → 4.3MB (2.4x), 53 JPEGs deleted
2026-04-17T14:32:14.090889Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)
2026-04-17T14:32:14.146839Z INFO screenpipe_engine::event_driven_capture: invalidating persistent streams after unlock/wake for monitor 1
2026-04-17T14:32:14.244529Z INFO sck_rs::stream_manager: stopped 2 persistent stream(s)
2026-04-17T14:32:14.703073Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 0 excluded)
2026-04-17T14:32:14.988193Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 0 excluded)
2026-04-17T14:34:50.856958Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=24 elapsed=5.384970584s
2026-04-17T14:34:50.857455Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames
2026-04-17T14:34:52.290859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 2.7MB → 0.4MB (6.6x), 11 JPEGs deleted
2026-04-17T14:34:53.693474Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 1.5MB → 0.2MB (9.2x), 11 JPEGs deleted
2026-04-17T14:37:14.638516Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9181661591257973978, trigger=click)
2026-04-17T14:40:03.270627Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=20 elapsed=9.557211959s
2026-04-17T14:40:03.278247Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 20 eligible frames
2026-04-17T14:40:05.138961Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 2.2MB → 0.4MB (5.4x), 9 JPEGs deleted
2026-04-17T14:40:06.764822Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.3MB → 0.2MB (7.8x), 9 JPEGs deleted
2026-04-17T14:45:12.495947Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=59 elapsed=5.670180833s
2026-04-17T14:45:12.497790Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 59 eligible frames
2026-04-17T14:45:15.136200Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 5.2MB → 0.6MB (8.3x), 21 JPEGs deleted
2026-04-17T14:45:20.828130Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 36 frames, 6.0MB → 2.6MB (2.3x), 36 JPEGs deleted
2026-04-17T14:50:25.504734Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=72 elapsed=4.659346166s
2026-04-17T14:50:25.506133Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 72 eligible frames
2026-04-17T14:50:27.427176Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 6.7MB → 0.4MB (15.8x), 27 JPEGs deleted
2026-04-17T14:50:34.019162Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 43 frames, 9.1MB → 3.2MB (2.9x), 43 JPEGs deleted
2026-04-17T14:55:39.893638Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=79 elapsed=5.858070958s
2026-04-17T14:55:39.895561Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 79 eligible frames
2026-04-17T14:55:43.163996Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 6.9MB → 0.4MB (16.4x), 28 JPEGs deleted
2026-04-17T14:55:56.055565Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames, 10.6MB → 4.5MB (2.4x), 49 JPEGs deleted
2026-04-17T14:57:45.176869Z WARN sqlx::query: summary="SELECT DISTINCT app_name, window_name, …" db.statement="\n\nSELECT\n DISTINCT app_name,\n window_name,\n browser_url\nFROM\n frames\nWHERE\n timestamp > datetime('now', '-30 seconds')\n AND app_name IS NOT NULL\n AND window_name IS NOT NULL\n" rows_affected=0 rows_returned=231 elapsed=1.2009245s
2026-04-17T14:58:23.045622Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3920393652799492578, trigger=click)
2026-04-17T14:58:23.051277Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3920393652799492578, trigger=click)
2026-04-17T15:00:30.547821Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1372519357894711765, trigger=click)
2026-04-17T15:00:30.604735Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1372519357894711765, trigger=click)
2026-04-17T15:01:01.943860Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=74 elapsed=5.843169709s
2026-04-17T15:01:01.945075Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 74 eligible frames
2026-04-17T15:01:03.978029Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 6.6MB → 0.5MB (12.5x), 27 JPEGs deleted
2026-04-17T15:01:07.983940Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.6MB → 3.4MB (2.5x), 45 JPEGs deleted
2026-04-17T15:04:05.431336Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T15:04:14.122060Z WARN sqlx::query: summary="SELECT DISTINCT app_name, window_name, …" db.statement="\n\nSELECT\n DISTINCT app_name,\n window_name,\n browser_url\nFROM\n frames\nWHERE\n timestamp > datetime('now', '-30 seconds')\n AND app_name IS NOT NULL\n AND window_name IS NOT NULL\n" rows_affected=0 rows_returned=238 elapsed=1.025080625s
2026-04-17T15:06:11.984875Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=99 elapsed=3.984537334s
2026-04-17T15:06:11.985286Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 99 eligible frames
2026-04-17T15:06:13.867728Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 7.5MB → 1.0MB (7.3x), 31 JPEGs deleted
2026-04-17T15:06:18.911657Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 66 frames, 16.3MB → 6.0MB (2.7x), 66 JPEGs deleted
2026-04-17T15:11:22.803132Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=93 elapsed=3.878026709s
2026-04-17T15:11:22.803457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 93 eligible frames
2026-04-17T15:11:25.277196Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 36 frames, 7.9MB → 2.5MB (3.2x), 36 JPEGs deleted
2026-04-17T15:11:31.678242Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 55 frames, 13.2MB → 3.2MB (4.1x), 55 JPEGs deleted
2026-04-17T15:11:36.472154Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4962200028860693347, trigger=visual_change)
2026-04-17T15:12:06.651053Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4962200028860693347, trigger=click)
2026-04-17T15:16:32.090580Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 68 eligible frames
2026-04-17T15:16:34.655462Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 30 frames, 5.4MB → 0.9MB (5.9x), 30 JPEGs deleted
2026-04-17T15:16:41.238494Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 36 frames, 6.4MB → 1.6MB (4.1x), 36 JPEGs deleted
2026-04-17T15:19:28.640713Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1212435854110043925, trigger=visual_change)
2026-04-17T15:21:45.149681Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=39 elapsed=3.899251s
2026-04-17T15:21:45.150645Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 39 eligible frames
2026-04-17T15:21:46.239356Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 3.1MB → 0.3MB (10.0x), 16 JPEGs deleted
2026-04-17T15:21:48.199010Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 5.3MB → 1.3MB (4.1x), 21 JPEGs deleted
2026-04-17T15:26:34.048641Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1598647760408960479, trigger=click)
2026-04-17T15:26:34.049838Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1598647760408960479, trigger=click)
2026-04-17T15:26:51.952046Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=117 elapsed=3.742068667s
2026-04-17T15:26:51.953182Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 117 eligible frames
2026-04-17T15:26:55.136178Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames, 9.4MB → 0.3MB (29.8x), 49 JPEGs deleted
2026-04-17T15:27:02.919835Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 66 frames, 11.8MB → 4.7MB (2.5x), 66 JPEGs deleted
2026-04-17T15:29:40.347224Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7884575463800473404, trigger=click)
2026-04-17T15:29:42.361507Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7884575463800473404, trigger=visual_change)
2026-04-17T15:29:43.474497Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7884575463800473404, trigger=click)
2026-04-17T15:29:43.478357Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7884575463800473404, trigger=click)
2026-04-17T15:29:44.671400Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7884575463800473404, trigger=click)
2026-04-17T15:29:45.382214Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7884575463800473404, trigger=visual_change)
2026-04-17T15:32:07.525631Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=101 elapsed=4.549938708s
2026-04-17T15:32:07.526441Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 101 eligible frames
2026-04-17T15:32:10.897683Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 50 frames, 9.3MB → 0.7MB (13.2x), 50 JPEGs deleted
2026-04-17T15:32:16.603193Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames, 11.4MB → 4.7MB (2.4x), 49 JPEGs deleted
2026-04-17T15:34:44.187579Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3074083784675622815, trigger=visual_change)
2026-04-17T15:35:17.109031Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7339932826541859017, trigger=visual_change)
2026-04-17T15:35:59.808568Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7339932826541859017, trigger=visual_change)
2026-04-17T15:37:22.369428Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=54 elapsed=5.752279375s
2026-04-17T15:37:22.373944Z INFO sc...
|
iTerm2
|
screenpipe"
|
NULL
|
50931
|
|
2026-04-17T11:45:05.403796Z INFO screenpipe_engin 2026-04-17T11:45:05.403796Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 167 eligible frames
2026-04-17T11:45:23.920217Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 89 frames, 18.1MB → 8.0MB (2.3x), 89 JPEGs deleted
2026-04-17T11:45:39.404156Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 76 frames, 15.1MB → 5.2MB (2.9x), 76 JPEGs deleted
2026-04-17T11:47:40.403897Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8449116274740776858, trigger=visual_change)
2026-04-17T11:47:43.440723Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8449116274740776858, trigger=visual_change)
2026-04-17T11:50:41.774396Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=118 elapsed=2.354790459s
2026-04-17T11:50:41.776220Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 118 eligible frames
2026-04-17T11:50:59.256756Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 70 frames, 13.9MB → 6.9MB (2.0x), 70 JPEGs deleted
2026-04-17T11:51:07.629800Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 46 frames, 13.0MB → 3.8MB (3.4x), 46 JPEGs deleted
2026-04-17T11:56:14.641254Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=104 elapsed=6.940613291s
2026-04-17T11:56:14.655230Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 104 eligible frames
2026-04-17T11:56:27.260405Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 64 frames, 12.4MB → 5.9MB (2.1x), 64 JPEGs deleted
2026-04-17T11:56:32.454420Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 11.4MB → 2.5MB (4.6x), 38 JPEGs deleted
2026-04-17T11:56:36.052813Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2897688846273938228, trigger=visual_change)
2026-04-17T11:56:39.125180Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2897688846273938228, trigger=visual_change)
2026-04-17T11:56:48.884595Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2897688846273938228, trigger=click)
2026-04-17T11:59:10.684033Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1187659190810667004, trigger=click)
2026-04-17T12:00:26.161484Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1187659190810667004, trigger=click)
2026-04-17T12:01:24.015698Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1187659190810667004, trigger=visual_change)
2026-04-17T12:01:37.484033Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=143 elapsed=5.013868584s
2026-04-17T12:01:37.484775Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 143 eligible frames
2026-04-17T12:01:54.962475Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 84 frames, 18.5MB → 11.2MB (1.7x), 84 JPEGs deleted
2026-04-17T12:02:09.701348Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 57 frames, 14.0MB → 5.0MB (2.8x), 57 JPEGs deleted
2026-04-17T12:04:52.068001Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1187659190810667004, trigger=click)
2026-04-17T12:06:01.171915Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1187659190810667004, trigger=visual_change)
2026-04-17T12:06:08.346769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1187659190810667004, trigger=click)
2026-04-17T12:06:40.246144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3230856144763016035, trigger=visual_change)
2026-04-17T12:07:14.586229Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=127 elapsed=4.93565275s
2026-04-17T12:07:14.587477Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 127 eligible frames
2026-04-17T12:07:26.001585Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 74 frames, 14.4MB → 6.7MB (2.2x), 74 JPEGs deleted
2026-04-17T12:07:32.330737Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 51 frames, 14.0MB → 3.5MB (4.1x), 51 JPEGs deleted
2026-04-17T12:09:44.692549Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-613971393924370495, trigger=visual_change)
2026-04-17T12:09:50.683046Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-613971393924370495, trigger=visual_change)
2026-04-17T12:09:53.718316Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-613971393924370495, trigger=visual_change)
2026-04-17T12:09:56.768856Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-613971393924370495, trigger=visual_change)
2026-04-17T12:12:37.753666Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=88 elapsed=5.414904667s
2026-04-17T12:12:37.753896Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-17T12:12:52.340444Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 52 frames, 9.7MB → 4.1MB (2.4x), 52 JPEGs deleted
2026-04-17T12:12:59.919500Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 10.2MB → 4.8MB (2.1x), 34 JPEGs deleted
2026-04-17T12:18:01.425343Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=77 elapsed=1.499634167s
2026-04-17T12:18:01.425741Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 77 eligible frames
2026-04-17T12:18:12.274223Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 46 frames, 8.4MB → 3.6MB (2.3x), 46 JPEGs deleted
2026-04-17T12:18:17.326612Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 29 frames, 8.2MB → 2.8MB (2.9x), 29 JPEGs deleted
2026-04-17T12:20:37.499495Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5858924638011024147, trigger=visual_change)
2026-04-17T12:23:22.133060Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=107 elapsed=4.695834792s
2026-04-17T12:23:22.134527Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 107 eligible frames
2026-04-17T12:23:30.575383Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 68 frames, 12.7MB → 5.3MB (2.4x), 68 JPEGs deleted
2026-04-17T12:23:35.540067Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 37 frames, 11.3MB → 3.8MB (3.0x), 37 JPEGs deleted
2026-04-17T12:24:26.708194Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1431084806293675067, trigger=visual_change)
2026-04-17T12:24:44.922890Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7156380177257339616, trigger=visual_change)
2026-04-17T12:24:47.959927Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7156380177257339616, trigger=visual_change)
2026-04-17T12:24:57.082676Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7156380177257339616, trigger=visual_change)
2026-04-17T12:25:06.162411Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=99156994807997409, trigger=visual_change)
2026-04-17T12:25:50.923162Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9094715609502343279, trigger=visual_change)
2026-04-17T12:28:39.907308Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=130 elapsed=4.35280675s
2026-04-17T12:28:39.908059Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 130 eligible frames
2026-04-17T12:28:52.289524Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 74 frames, 13.5MB → 5.4MB (2.5x), 74 JPEGs deleted
2026-04-17T12:29:03.322190Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 54 frames, 14.8MB → 4.1MB (3.6x), 54 JPEGs deleted
2026-04-17T12:29:41.523344Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9094715609502343279, trigger=visual_change)
2026-04-17T12:31:13.627356Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1187659190810667004, trigger=click)
2026-04-17T12:34:03.505841Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 133 eligible frames
2026-04-17T12:34:12.370434Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 83 frames, 17.0MB → 8.4MB (2.0x), 83 JPEGs deleted
2026-04-17T12:34:18.709761Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 48 frames, 12.4MB → 4.5MB (2.8x), 48 JPEGs deleted
2026-04-17T12:39:21.700676Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=94 elapsed=2.994116667s
2026-04-17T12:39:21.701475Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 94 eligible frames
2026-04-17T12:39:28.551006Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 60 frames, 11.9MB → 5.2MB (2.3x), 60 JPEGs deleted
2026-04-17T12:39:33.119092Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames, 8.9MB → 3.0MB (3.0x), 32 JPEGs deleted
2026-04-17T12:41:55.518740Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4645364130590448795, trigger=visual_change)
2026-04-17T12:44:31.486942Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5268491633263651922, trigger=visual_change)
2026-04-17T12:44:34.083563Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 80 eligible frames
2026-04-17T12:44:42.267029Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 54 frames, 9.3MB → 3.9MB (2.4x), 54 JPEGs deleted
2026-04-17T12:44:46.583955Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 7.1MB → 1.7MB (4.2x), 24 JPEGs deleted
2026-04-17T12:48:00.030407Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7118306775293142140, trigger=visual_change)
2026-04-17T12:49:09.718005Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3890447493078382535, trigger=visual_change)
2026-04-17T12:49:48.947739Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=83 elapsed=2.349997458s
2026-04-17T12:49:48.949259Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 83 eligible frames
2026-04-17T12:49:54.500850Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 9.4MB → 3.6MB (2.6x), 53 JPEGs deleted
2026-04-17T12:49:56.956633Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 8.0MB → 1.4MB (5.6x), 28 JPEGs deleted
2026-04-17T12:50:49.723216Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2308635439156572871, trigger=visual_change)
2026-04-17T12:55:01.685683Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=68 elapsed=4.658703708s
2026-04-17T12:55:01.686755Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 68 eligible frames
2026-04-17T12:55:09.567444Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 41 frames, 7.3MB → 3.0MB (2.4x), 41 JPEGs deleted
2026-04-17T12:55:11.689903Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 7.3MB → 1.2MB (6.0x), 25 JPEGs deleted
2026-04-17T12:57:46.261931Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3247250458952498707, trigger=visual_change)
2026-04-17T13:00:15.547338Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=67 elapsed=3.841360958s
2026-04-17T13:00:15.547891Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 67 eligible frames
2026-04-17T13:00:18.854188Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 6.9MB → 2.9MB (2.4x), 38 JPEGs deleted
2026-04-17T13:00:20.869607Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 6.1MB → 1.9MB (3.2x), 27 JPEGs deleted
2026-04-17T13:00:47.836013Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3538231965223053471, trigger=click)
2026-04-17T13:05:21.592379Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 100 eligible frames
2026-04-17T13:05:24.334610Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 46 frames, 7.2MB → 1.1MB (6.3x), 46 JPEGs deleted
2026-04-17T13:05:29.624320Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 52 frames, 11.3MB → 5.4MB (2.1x), 52 JPEGs deleted
2026-04-17T13:05:51.246979Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6043481845154234215, trigger=click)
2026-04-17T13:10:01.795432Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:03.069120Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:03.075328Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:04.101145Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:04.101122Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:04.376980Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=visual_change)
2026-04-17T13:10:06.992302Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:06.997093Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:07.384444Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=visual_change)
2026-04-17T13:10:09.998269Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:10.018259Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=click)
2026-04-17T13:10:10.421277Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=visual_change)
2026-04-17T13:10:11.230951Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8309174487239213230, trigger=visual_change)
2026-04-17T13:10:13.459367Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8309174487239213230, trigger=visual_change)
2026-04-17T13:10:33.885435Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=83 elapsed=4.209110041s
2026-04-17T13:10:33.885993Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 83 eligible frames
2026-04-17T13:10:36.418211Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 39 frames, 9.0MB → 1.8MB (5.1x), 39 JPEGs deleted
2026-04-17T13:10:41.833569Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 10.3MB → 4.4MB (2.3x), 42 JPEGs deleted
2026-04-17T13:15:47.143596Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=45 elapsed=5.294994208s
2026-04-17T13:15:47.143961Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 45 eligible frames
2026-04-17T13:15:49.530930Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 5.3MB → 0.5MB (10.7x), 19 JPEGs deleted
2026-04-17T13:15:53.181326Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 24 frames, 6.2MB → 1.9MB (3.2x), 24 JPEGs deleted
2026-04-17T13:15:59.924682Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6080998014092105058, trigger=click)
2026-04-17T13:17:47.639533Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6043481845154234215, trigger=click)
2026-04-17T13:17:47.640336Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6043481845154234215, trigger=click)
2026-04-17T13:20:53.865787Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 85 eligible frames
2026-04-17T13:20:56.296312Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 35 frames, 9.3MB → 0.8MB (12.3x), 35 JPEGs deleted
2026-04-17T13:21:01.541879Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 48 frames, 10.0MB → 3.5MB (2.9x), 48 JPEGs deleted
2026-04-17T13:21:24.697431Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8579915543009657377, trigger=visual_change)
2026-04-17T13:22:53.638454Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8579915543009657377, trigger=visual_change)
2026-04-17T13:23:21.001499Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4786115965986315783, trigger=visual_change)
2026-04-17T13:26:06.993632Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=145 elapsed=5.377591541s
2026-04-17T13:26:06.995358Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 145 eligible frames
2026-04-17T13:26:10.229487Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 47 frames, 10.6MB → 1.1MB (9.6x), 47 JPEGs deleted
2026-04-17T13:26:20.367203Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 96 frames, 17.5MB → 7.4MB (2.4x), 96 JPEGs deleted
2026-04-17T13:31:24.012859Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=97 elapsed=3.623441916s
2026-04-17T13:31:24.013303Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 97 eligible frames
2026-04-17T13:31:26.695278Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 46 frames, 10.7MB → 0.6MB (17.9x), 46 JPEGs deleted
2026-04-17T13:31:29.991292Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames, 11.5MB → 3.2MB (3.6x), 49 JPEGs deleted
2026-04-17T13:32:39.125960Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6089929419086115132, trigger=visual_change)
2026-04-17T13:33:15.059703Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8228581750357175612, trigger=visual_change)
2026-04-17T13:36:34.787296Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=134 elapsed=4.778564541s
2026-04-17T13:36:34.788177Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 134 eligible frames
2026-04-17T13:36:37.619828Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 9.3MB → 2.6MB (3.6x), 38 JPEGs deleted
2026-04-17T13:36:47.174485Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 94 frames, 19.4MB → 6.6MB (2.9x), 94 JPEGs deleted
2026-04-17T13:38:01.793664Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8948708845629756494, trigger=visual_change)
2026-04-17T13:41:38.909857Z WARN sqlx::query: summary="SELECT DISTINCT app_name, window_name, …" db.statement="\n\nSELECT\n DISTINCT app_name,\n window_name,\n browser_url\nFROM\n frames\nWHERE\n timestamp > datetime('now', '-30 seconds')\n AND app_name IS NOT NULL\n AND window_name IS NOT NULL\n" rows_affected=0 rows_returned=191 elapsed=2.726793958s
2026-04-17T13:41:53.564499Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=127 elapsed=6.337926625s
2026-04-17T13:41:53.564966Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 127 eligible frames
2026-04-17T13:41:56.377224Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 39 frames, 8.7MB → 0.9MB (10.2x), 39 JPEGs deleted
2026-04-17T13:42:04.113088Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 86 frames, 19.8MB → 4.6MB (4.3x), 86 JPEGs deleted
2026-04-17T13:42:28.546840Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2407191479157132203, trigger=visual_change)
2026-04-17T13:42:31.565154Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2407191479157132203, trigger=visual_change)
2026-04-17T13:43:01.179117Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2966960464075814955, trigger=visual_change)
2026-04-17T13:43:04.176336Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2966960464075814955, trigger=visual_change)
2026-04-17T13:47:09.104428Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=108 elapsed=4.971006834s
2026-04-17T13:47:09.105265Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 108 eligible frames
2026-04-17T13:47:12.128696Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 46 frames, 10.8MB → 1.2MB (8.7x), 46 JPEGs deleted
2026-04-17T13:47:18.306857Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1588829377627911602, trigger=visual_change)
2026-04-17T13:47:20.741949Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 60 frames, 12.1MB → 4.6MB (2.6x), 60 JPEGs deleted
2026-04-17T13:49:02.375155Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T13:49:03.780188Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=8632488258017461693, trigger=click)
2026-04-17T13:50:51.417277Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2407191479157132203, trigger=visual_change)
2026-04-17T13:50:52.233635Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2407191479157132203, trigger=visual_change)
2026-04-17T13:52:23.916789Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=148 elapsed=3.130792583s
2026-04-17T13:52:23.916950Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 148 eligible frames
2026-04-17T13:52:28.645026Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 62 frames, 14.5MB → 3.3MB (4.4x), 62 JPEGs deleted
2026-04-17T13:52:32.516195Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4465696449359315208, trigger=click)
2026-04-17T13:52:41.560804Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 84 frames, 17.7MB → 8.7MB (2.0x), 84 JPEGs deleted
2026-04-17T13:57:46.196574Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=158 elapsed=4.5932735s
2026-04-17T13:57:46.196771Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 158 eligible frames
2026-04-17T13:57:49.965702Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 59 frames, 13.8MB → 1.3MB (10.6x), 59 JPEGs deleted
2026-04-17T13:57:57.488258Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 97 frames, 21.7MB → 9.6MB (2.3x), 97 JPEGs deleted
2026-04-17T14:01:04.834817Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T14:03:03.419391Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=162 elapsed=5.916741833s
2026-04-17T14:03:03.419970Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 162 eligible frames
2026-04-17T14:03:07.531462Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 62 frames, 14.4MB → 1.6MB (9.0x), 62 JPEGs deleted
2026-04-17T14:03:25.381848Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 98 frames, 27.2MB → 12.9MB (2.1x), 98 JPEGs deleted
2026-04-17T14:07:52.779104Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3920393652799492578, trigger=visual_change)
2026-04-17T14:08:29.344550Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=39 elapsed=3.921230209s
2026-04-17T14:08:29.344820Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 39 eligible frames
2026-04-17T14:08:30.820661Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 18 frames, 4.4MB → 0.5MB (8.3x), 18 JPEGs deleted
2026-04-17T14:08:32.939816Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 6.3MB → 1.5MB (4.1x), 19 JPEGs deleted
2026-04-17T14:11:32.178274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T14:11:35.201992Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T14:11:38.167294Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T14:11:41.241749Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T14:13:36.956810Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=94 elapsed=4.002610125s
2026-04-17T14:13:36.956972Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 94 eligible frames
2026-04-17T14:13:39.200065Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 37 frames, 8.7MB → 1.0MB (9.1x), 37 JPEGs deleted
2026-04-17T14:13:44.175288Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 55 frames, 14.1MB → 5.2MB (2.7x), 55 JPEGs deleted
2026-04-17T14:18:50.535632Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=50 elapsed=6.342983084s
2026-04-17T14:18:50.535858Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 50 eligible frames
2026-04-17T14:18:55.998872Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 6.6MB → 1.4MB (4.7x), 27 JPEGs deleted
2026-04-17T14:19:01.988979Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 5.6MB → 1.7MB (3.4x), 21 JPEGs deleted
2026-04-17T14:24:10.629225Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=93 elapsed=8.530690958s
2026-04-17T14:24:10.630488Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 93 eligible frames
2026-04-17T14:24:14.059039Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 40 frames, 9.6MB → 0.9MB (10.8x), 40 JPEGs deleted
2026-04-17T14:24:23.148531Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 51 frames, 10.8MB → 4.0MB (2.7x), 51 JPEGs deleted
2026-04-17T14:29:23.471065Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)
2026-04-17T14:29:32.446209Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=89 elapsed=9.271002667s
2026-04-17T14:29:32.446508Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 89 eligible frames
2026-04-17T14:29:35.564415Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 34 frames, 8.1MB → 1.1MB (7.6x), 34 JPEGs deleted
2026-04-17T14:29:45.401977Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 10.3MB → 4.3MB (2.4x), 53 JPEGs deleted
2026-04-17T14:32:14.090889Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)
2026-04-17T14:32:14.146839Z INFO screenpipe_engine::event_driven_capture: invalidating persistent streams after unlock/wake for monitor 1
2026-04-17T14:32:14.244529Z INFO sck_rs::stream_manager: stopped 2 persistent stream(s)
2026-04-17T14:32:14.703073Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440, 2fps, 0 excluded)
2026-04-17T14:32:14.988193Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 0 excluded)
2026-04-17T14:34:50.856958Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=24 elapsed=5.384970584s
2026-04-17T14:34:50.857455Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 24 eligible frames
2026-04-17T14:34:52.290859Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 2.7MB → 0.4MB (6.6x), 11 JPEGs deleted
2026-04-17T14:34:53.693474Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 11 frames, 1.5MB → 0.2MB (9.2x), 11 JPEGs deleted
2026-04-17T14:37:14.638516Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-9181661591257973978, trigger=click)
2026-04-17T14:40:03.270627Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=20 elapsed=9.557211959s
2026-04-17T14:40:03.278247Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 20 eligible frames
2026-04-17T14:40:05.138961Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 2.2MB → 0.4MB (5.4x), 9 JPEGs deleted
2026-04-17T14:40:06.764822Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 9 frames, 1.3MB → 0.2MB (7.8x), 9 JPEGs deleted
2026-04-17T14:45:12.495947Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=59 elapsed=5.670180833s
2026-04-17T14:45:12.497790Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 59 eligible frames
2026-04-17T14:45:15.136200Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 5.2MB → 0.6MB (8.3x), 21 JPEGs deleted
2026-04-17T14:45:20.828130Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 36 frames, 6.0MB → 2.6MB (2.3x), 36 JPEGs deleted
2026-04-17T14:50:25.504734Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=72 elapsed=4.659346166s
2026-04-17T14:50:25.506133Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 72 eligible frames
2026-04-17T14:50:27.427176Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 6.7MB → 0.4MB (15.8x), 27 JPEGs deleted
2026-04-17T14:50:34.019162Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 43 frames, 9.1MB → 3.2MB (2.9x), 43 JPEGs deleted
2026-04-17T14:55:39.893638Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=79 elapsed=5.858070958s
2026-04-17T14:55:39.895561Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 79 eligible frames
2026-04-17T14:55:43.163996Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 6.9MB → 0.4MB (16.4x), 28 JPEGs deleted
2026-04-17T14:55:56.055565Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames, 10.6MB → 4.5MB (2.4x), 49 JPEGs deleted
2026-04-17T14:57:45.176869Z WARN sqlx::query: summary="SELECT DISTINCT app_name, window_name, …" db.statement="\n\nSELECT\n DISTINCT app_name,\n window_name,\n browser_url\nFROM\n frames\nWHERE\n timestamp > datetime('now', '-30 seconds')\n AND app_name IS NOT NULL\n AND window_name IS NOT NULL\n" rows_affected=0 rows_returned=231 elapsed=1.2009245s
2026-04-17T14:58:23.045622Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3920393652799492578, trigger=click)
2026-04-17T14:58:23.051277Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3920393652799492578, trigger=click)
2026-04-17T15:00:30.547821Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1372519357894711765, trigger=click)
2026-04-17T15:00:30.604735Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1372519357894711765, trigger=click)
2026-04-17T15:01:01.943860Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=74 elapsed=5.843169709s
2026-04-17T15:01:01.945075Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 74 eligible frames
2026-04-17T15:01:03.978029Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 27 frames, 6.6MB → 0.5MB (12.5x), 27 JPEGs deleted
2026-04-17T15:01:07.983940Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 45 frames, 8.6MB → 3.4MB (2.5x), 45 JPEGs deleted
2026-04-17T15:04:05.431336Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8632488258017461693, trigger=visual_change)
2026-04-17T15:04:14.122060Z WARN sqlx::query: summary="SELECT DISTINCT app_name, window_name, …" db.statement="\n\nSELECT\n DISTINCT app_name,\n window_name,\n browser_url\nFROM\n frames\nWHERE\n timestamp > datetime('now', '-30 seconds')\n AND app_name IS NOT NULL\n AND window_name IS NOT NULL\n" rows_affected=0 rows_returned=238 elapsed=1.025080625s
2026-04-17T15:06:11.984875Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=99 elapsed=3.984537334s
2026-04-17T15:06:11.985286Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 99 eligible frames
2026-04-17T15:06:13.867728Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 7.5MB → 1.0MB (7.3x), 31 JPEGs deleted
2026-04-17T15:06:18.911657Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 66 frames, 16.3MB → 6.0MB (2.7x), 66 JPEGs deleted
2026-04-17T15:11:22.803132Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=93 elapsed=3.878026709s
2026-04-17T15:11:22.803457Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 93 eligible frames
2026-04-17T15:11:25.277196Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 36 frames, 7.9MB → 2.5MB (3.2x), 36 JPEGs deleted
2026-04-17T15:11:31.678242Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 55 frames, 13.2MB → 3.2MB (4.1x), 55 JPEGs deleted
2026-04-17T15:11:36.472154Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4962200028860693347, trigger=visual_change)
2026-04-17T15:12:06.651053Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4962200028860693347, trigger=click)
2026-04-17T15:16:32.090580Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 68 eligible frames
2026-04-17T15:16:34.655462Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 30 frames, 5.4MB → 0.9MB (5.9x), 30 JPEGs deleted
2026-04-17T15:16:41.238494Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 36 frames, 6.4MB → 1.6MB (4.1x), 36 JPEGs deleted
2026-04-17T15:19:28.640713Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-1212435854110043925, trigger=visual_change)
2026-04-17T15:21:45.149681Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=39 elapsed=3.899251s
2026-04-17T15:21:45.150645Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 39 eligible frames
2026-04-17T15:21:46.239356Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames, 3.1MB → 0.3MB (10.0x), 16 JPEGs deleted
2026-04-17T15:21:48.199010Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 21 frames, 5.3MB → 1.3MB (4.1x), 21 JPEGs deleted
2026-04-17T15:26:34.048641Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1598647760408960479, trigger=click)
2026-04-17T15:26:34.049838Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1598647760408960479, trigger=click)
2026-04-17T15:26:51.952046Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=117 elapsed=3.742068667s
2026-04-17T15:26:51.953182Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 117 eligible frames
2026-04-17T15:26:55.136178Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames, 9.4MB → 0.3MB (29.8x), 49 JPEGs deleted
2026-04-17T15:27:02.919835Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 66 frames, 11.8MB → 4.7MB (2.5x), 66 JPEGs deleted
2026-04-17T15:29:40.347224Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7884575463800473404, trigger=click)
2026-04-17T15:29:42.361507Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7884575463800473404, trigger=visual_change)
2026-04-17T15:29:43.474497Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7884575463800473404, trigger=click)
2026-04-17T15:29:43.478357Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7884575463800473404, trigger=click)
2026-04-17T15:29:44.671400Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7884575463800473404, trigger=click)
2026-04-17T15:29:45.382214Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7884575463800473404, trigger=visual_change)
2026-04-17T15:32:07.525631Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=101 elapsed=4.549938708s
2026-04-17T15:32:07.526441Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 101 eligible frames
2026-04-17T15:32:10.897683Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 50 frames, 9.3MB → 0.7MB (13.2x), 50 JPEGs deleted
2026-04-17T15:32:16.603193Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames, 11.4MB → 4.7MB (2.4x), 49 JPEGs deleted
2026-04-17T15:34:44.187579Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3074083784675622815, trigger=visual_change)
2026-04-17T15:35:17.109031Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7339932826541859017, trigger=visual_change)
2026-04-17T15:35:59.808568Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7339932826541859017, trigger=visual_change)
2026-04-17T15:37:22.369428Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=54 elapsed=5.752279375s
2026-04-17T15:37:22.373944Z INFO sc...
|
iTerm2
|
screenpipe"
|
NULL
|
50932
|
|
whisper_init_state: kv pad size = 2.36 MB
whi whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-04-18T14:43:07.918412Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-04-18T14:44:35.514401Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8593116969702213352, trigger=visual_change)
2026-04-18T14:44:35.891413Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8593116969702213352, trigger=visual_change)
2026-04-18T14:45:06.077184Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6130095137839516019, trigger=visual_change)
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-04-18T14:45:09.423485Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-04-18T14:45:40.853509Z WARN screenpipe_db::db: ImmediateTx dropped without commit — rolling back
2026-04-18T14:45:45.829292Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6130095137839516019, trigger=click)
2026-04-18T14:45:45.931557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6130095137839516019, trigger=click)
zsh: terminated npx screenpipe@latest record --ignored-windows "Boosteroid"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-start
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-20T09:09:02.916408Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
accessibility: ok
2026-04-20T09:09:03.042870Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-20T09:09:04.217747Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-20T09:09:04.219685Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-20T09:09:04.220577Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-20T09:09:04.314160Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-04-20T09:09:04.314251Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-20T09:09:04.314473Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-20T09:09:04.314486Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-20T09:09:04.314428Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-20T09:09:04.314439Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-20T09:09:04.314563Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-20T09:09:04.370709Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-20T09:09:04.383079Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-20T09:09:04.384136Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-20T09:09:04.384745Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-20T09:09:04.385360Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-20T09:09:04.385876Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-20T09:09:04.386843Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-20T09:09:04.386950Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-20T09:09:04.390629Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
2026-04-20T09:09:04.411414Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-20T09:09:04.444803Z INFO screenpipe: starting UI event capture
2026-04-20T09:09:04.482387Z ...
|
iTerm2
|
screenpipe"
|
NULL
|
51507
|
|
whisper_init_state: compute buffer (encode) = 65 whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-04-18T14:43:07.918412Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-04-18T14:44:35.514401Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8593116969702213352, trigger=visual_change)
2026-04-18T14:44:35.891413Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8593116969702213352, trigger=visual_change)
2026-04-18T14:45:06.077184Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6130095137839516019, trigger=visual_change)
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-04-18T14:45:09.423485Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-04-18T14:45:40.853509Z WARN screenpipe_db::db: ImmediateTx dropped without commit — rolling back
2026-04-18T14:45:45.829292Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6130095137839516019, trigger=click)
2026-04-18T14:45:45.931557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6130095137839516019, trigger=click)
zsh: terminated npx screenpipe@latest record --ignored-windows "Boosteroid"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-start
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-20T09:09:02.916408Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
accessibility: ok
2026-04-20T09:09:03.042870Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-20T09:09:04.217747Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-20T09:09:04.219685Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-20T09:09:04.220577Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-20T09:09:04.314160Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-04-20T09:09:04.314251Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-20T09:09:04.314473Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-20T09:09:04.314486Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-20T09:09:04.314428Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-20T09:09:04.314439Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-20T09:09:04.314563Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-20T09:09:04.370709Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-20T09:09:04.383079Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-20T09:09:04.384136Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-20T09:09:04.384745Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-20T09:09:04.385360Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-20T09:09:04.385876Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-20T09:09:04.386843Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-20T09:09:04.386950Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-20T09:09:04.390629Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
2026-04-20T09:09:04.411414Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-20T09:09:04.444803Z INFO screenpipe: starting UI event capture
2026-04-20T09:09:04.482387Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-20T09:09:04.509116Z INFO screen...
|
iTerm2
|
screenpipe"
|
NULL
|
51508
|
|
whisper_backend_init_gpu: found GPU device 0: Meta whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-04-18T14:43:07.918412Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-04-18T14:44:35.514401Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8593116969702213352, trigger=visual_change)
2026-04-18T14:44:35.891413Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8593116969702213352, trigger=visual_change)
2026-04-18T14:45:06.077184Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6130095137839516019, trigger=visual_change)
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-04-18T14:45:09.423485Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-04-18T14:45:40.853509Z WARN screenpipe_db::db: ImmediateTx dropped without commit — rolling back
2026-04-18T14:45:45.829292Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6130095137839516019, trigger=click)
2026-04-18T14:45:45.931557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6130095137839516019, trigger=click)
zsh: terminated npx screenpipe@latest record --ignored-windows "Boosteroid"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-start
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-20T09:09:02.916408Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
accessibility: ok
2026-04-20T09:09:03.042870Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-20T09:09:04.217747Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-20T09:09:04.219685Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-20T09:09:04.220577Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-20T09:09:04.314160Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-04-20T09:09:04.314251Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-20T09:09:04.314473Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-20T09:09:04.314486Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-20T09:09:04.314428Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-20T09:09:04.314439Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-20T09:09:04.314563Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-20T09:09:04.370709Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-20T09:09:04.383079Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-20T09:09:04.384136Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-20T09:09:04.384745Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-20T09:09:04.385360Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-20T09:09:04.385876Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-20T09:09:04.386843Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-20T09:09:04.386950Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-20T09:09:04.390629Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
2026-04-20T09:09:04.411414Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-20T09:09:04.444803Z INFO screenpipe: starting UI event capture
2026-04-20T09:09:04.482387Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-20T09:09:04.509116Z INFO screenpipe_engine::ui_recorder: UI recording session started: f0f4e024-5bd3-4a71-bf92-6feec89df1b0
2026-04-20T09:09:04.509231Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-20T09:09:04.509296Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-19 06:09:04.509295 UTC to 2026-04-20 06:09:04.509295 UTC)
2026-04-20T09:09:04.510396Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-20T09:09:04.511440Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 0 frame entries, coverage from 2026-04-19 06:09:04.509295 UTC
2026-04-20T09:09:04.519984Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-20T09:09:04.547289Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-20T09:09:04.965425Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-20T09:09:04.965463Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-20T09:09:04.965503Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-20T09:09:05.226982Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (3008x1253)
2026-04-20T09:09:05.227016Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-20T09:09:05.227136Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (event-driven via CGDisplayRegisterReconfigurationCallback, 60s backstop poll)
2026-04-20T09:09:05.227375Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-20T09:09:07.300820Z INFO sck_rs::stream_manager: persiste...
|
iTerm2
|
screenpipe"
|
NULL
|
51711
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpalol§ Daily - Platform • in 26 m100% CMon 20 Apr 9:19:04screenpipe"T81DOCKER• ₴12026-04-20109:09:07.30082022026-04-20T09:09:07.600290Z2026-04-20T09:09:07.683736Z2026-04-20109:09:07.989000Z2026-04-20T09:10:09.231456ZFROM\nframes \nWHERE\n915444333s2026-04-20T09:10:09.231772Z2026-04-20T09:10:14.691743Z2026-04-20T09:10:15.677833Z2026-04-20109:10:17.628368Z2026-04-20T09:10:17.716440Z2026-04-20T09:10:21.386286Z2026-04-20109:10:22.68540622026-04-20T09:10:23.507120Z2026-04-20109:11:42.39161522026-04-20T09:11:42.475795Z2026-04-20T09:11:44.750359Z2026-04-20T09:11:44.980679Z2026-04-20T09:11:53.686192Z2026-04-20109:11:53.73806422026-04-20T09:11:56.291827Z2026-04-20T09:11:56.451083Z2026-04-20T09:12:46.023481Z2026-04-20T09:12:49.049656Z2026-04-20T09:13:23.025287Z2026-04-20T09:13:28.322087Z2026-04-20T09:14:35.739274Z2026-04-20T09:15:24.523245ZFROM\nframes\nWHERE\n0652833s2026-04-20T09:15:24.523440Z2026-04-20T09:15:37.319126Z2026-04-201709:16:25.02190622026-04-20T09:16:40.481038Z2026-04-20T09:17:01.897197Z2026-04-20T09:17:11..727852Z2026-04-20T09:17:11.880765Z2026-04-20T09:17:12..88627122026-04-20T09:17:12.961362Z2026-04-20109:17:49.590890Z2026-04-20T09:18:38.516980Z2026-04-20T09:18:52.171689Z2026-04-20T09:18:52.339913ZDEV (-zsh)₴2APP (-zsh)883-zsh|screenpipe"85* Review screenpipe U...• 86-zsh*7+INFOsck_rs::stream_manager:persistentSCKstreamstarted fordisplay1(1440x900, 2fps,3 excludedINFOscreenpipe_engine:: event_driven_capture:startupcapture for monitor 1: frame_id=51507, dur=136msINFOsck_rs::stream_manager:persistentSCKstream started fordisplay 2 (3008x1253,2fps, 3 excluded)INFO screenpipe_engine::event_driven_capture:startup capture for monitor 2:frame_id=51508, dur=185msWARNsqlx::query:summary="SELECT id, snapshot_path, device_name,db.statement="\n\nSELECT\nid, \nsnapshot_path, \ndevice_name, \nsnapshot_path IS NOT NULL\nANDtimestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n'timestamp\nrows_affected=0 rows_returned=197 elapsed=4.INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 197 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 83 frames, 16.3MB → 2.5MB (6.5x), 83 JPEGSdeletedINFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=6544687314381512705, trigger=click)INFOscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 2 (hash=6544687314381512705,trigger=click)INFOscreenpipe_engine::event_driven_capture: contentdedup: skipping capture for monitor 1 (hash=6544687314381512705,trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshotINFOcompaction: 100 frames, 17.9MB → 6.8MB (2.6X), 100 JPEGs deletedscreenpipe_engine::snapshot_compaction: snapshotcompaction: 14 frames,2.2MB+ 0.9MB (2.4x), 14 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 1 (hash=6544687314381512705,INFOscreenpipe_engine::event_driven_capture: contentINFOdedup: skipping capture for monitor 2 (hash=6544687314381512705,trigger=click)trigger=click)screenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 1 (hash=6544687314381512705, trigger=click)INFOscreenpipe_engine:: event,driven_capture: contentdedup:skipping capture for monitor 1 (hash=6544687314381512705, trigger=click)INFOscreenpipe_engine::event_driven_capture: contentdedup: skipping capture for monitor 2 (hash=6544687314381512705, trigger=click)INFOscreenpipe_engine::event_driven_capture:contentdedup: skippingcapture for monitor 2 (hash=6544687314381512705, trigger=click)INFOscreenpipe_engine::event_driven_capture:contentINFOscreenpipe_engine::event_driven_capture:dedup: skipping capture for monitor 1 (hash=6544687314381512705, trigger=click)content dedup:skipping capture for monitor 1 (hash=6544687314381512705,trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6544687314381512705, trigger=click)INFOscreenpipe_engine::event_driven_capture:contentdedup:skippingcapture for monitor 2 (hash=1367434359766307217, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture:contentdedup:skippingcapture for monitor 2 (hash=1367434359766307217, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture:contentdedup:skippingcapture for monitor 2 (hash=596503974090759224, trigger=click)INFOscreenpipe_engine::event_driven_capture:contentdedup:skippingINFOscreenpipe_engine::event_driven_capture:contentdedup:skippingcapture for monitor 2 (hash=3622643354436184557, trigger=visual_change)capturefor monitor 2 (hash=-3577748614007823836, trigger=click)WARNsqlx::query:summary="SELECT id, snapshot_path,device_name, ."db.statement="\n\nSELECT\n id,\nsnapshot_path,\ndevice_name, \ntimestamp\nsnapshot_path IS NOT NULL\nANDtimestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n"rows_affected=0 rows_returned=3 elapsed=1.84INFOINFOINFOINFOINFOINFOINFOINFOINFOINFOINFOINFOINFOscreenpipe_engine::snapshot_compaction:snapshotcompaction:found 3 eligible framesscreenpipe_engine::event_driven_capture:contentdedup:skippingcapture for monitor 2 (hash=-7719336893453902381, trigger=click)screenpipe_engine::event_driven_capture:contentdedup:skippingcapture for monitor 2 (hash=2226463793404778776, trigger=visual_change)screenpipe_engine::event_driven_capture:content dedup:skippingcapture for monitor 2 (hash=-2449473341097903678, trigger=visual_change)screenpipe_engine::event_driven_capture: contentdedup:skippingscreenpipe_engine::event_driven_capture:contentdedup:capture for monitor 2 (hash=-3192006669261292210, trigger=visual_change)skippingcapture for monitor 2 (hash=-4839184715325635051,trigger=click)screenpipe_engine::event_driven_capture:contentdedup:skippingcapture for monitor 1 (hash=-4839184715325635051,trigger=click)screenpipe_engine::event_driven_capture: contentdedup:skippingcapture for monitor 2 (hash=-4839184715325635051, trigger=click)screenpipe_engine::event_driven_capture:contentdedup:skippingcapture for monitor 1 (hash=-4839184715325635051, trigger=click)screenpipe_engine::event_driven_capture:contentdedup:skippingscreenpipe_engine::event_driven_capture:contentdedup:skippingcapture for monitor 2 (hash=-5042772765556709364, trigger=visual_change)capture for monitor 2 (hash=3873630181551472921, trigger=click)screenpipe_engine::event_driven_capture:contentdedup:skippingcapture for monitor 1 (hash=-3192006669261292210, trigger=click)screenpipe_engine::event_driven_capture:contentdedup:skipping capture for monitor 2 (hash=-3192006669261292210, trigger=visual_change)...
|
iTerm2
|
screenpipe"
|
NULL
|
51712
|
|
ggml_metal_init: use fusion = true
ggml_me ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-04-18T14:43:07.918412Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-04-18T14:44:35.514401Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8593116969702213352, trigger=visual_change)
2026-04-18T14:44:35.891413Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8593116969702213352, trigger=visual_change)
2026-04-18T14:45:06.077184Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6130095137839516019, trigger=visual_change)
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-04-18T14:45:09.423485Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-04-18T14:45:40.853509Z WARN screenpipe_db::db: ImmediateTx dropped without commit — rolling back
2026-04-18T14:45:45.829292Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6130095137839516019, trigger=click)
2026-04-18T14:45:45.931557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6130095137839516019, trigger=click)
zsh: terminated npx screenpipe@latest record --ignored-windows "Boosteroid"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-start
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-20T09:09:02.916408Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
accessibility: ok
2026-04-20T09:09:03.042870Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-20T09:09:04.217747Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-20T09:09:04.219685Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-20T09:09:04.220577Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-20T09:09:04.314160Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-04-20T09:09:04.314251Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-20T09:09:04.314473Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-20T09:09:04.314486Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-20T09:09:04.314428Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-20T09:09:04.314439Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-20T09:09:04.314563Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-20T09:09:04.370709Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-20T09:09:04.383079Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-20T09:09:04.384136Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-20T09:09:04.384745Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-20T09:09:04.385360Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-20T09:09:04.385876Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-20T09:09:04.386843Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-20T09:09:04.386950Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-20T09:09:04.390629Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
2026-04-20T09:09:04.411414Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-20T09:09:04.444803Z INFO screenpipe: starting UI event capture
2026-04-20T09:09:04.482387Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-20T09:09:04.509116Z INFO screenpipe_engine::ui_recorder: UI recording session started: f0f4e024-5bd3-4a71-bf92-6feec89df1b0
2026-04-20T09:09:04.509231Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-20T09:09:04.509296Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-19 06:09:04.509295 UTC to 2026-04-20 06:09:04.509295 UTC)
2026-04-20T09:09:04.510396Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-20T09:09:04.511440Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 0 frame entries, coverage from 2026-04-19 06:09:04.509295 UTC
2026-04-20T09:09:04.519984Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-20T09:09:04.547289Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-20T09:09:04.965425Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-20T09:09:04.965463Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-20T09:09:04.965503Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-20T09:09:05.226982Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (3008x1253)
2026-04-20T09:09:05.227016Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-20T09:09:05.227136Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (event-driven via CGDisplayRegisterReconfigurationCallback, 60s backstop poll)
2026-04-20T09:09:05.227375Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-20T09:09:07.300820Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 3 excluded)
2026-04-20T09:09:07.600290Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=51507, dur=136ms
2026-04-20T09:09:07.683736Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 3 excluded)
2026-04-20T09:09:07.989000Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=51508, dur=185ms
2026-04-20T09:10:09.231456Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=197 elapsed=4.915444333s
2026-04-20T09:10:09.231772Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 197 eligible frames
2026-04-20T09:10:14.691743Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 83 frames, 16.3MB → 2.5MB (6.5x), 83 JPEGs deleted
2026-04-20T09:10:15.677833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6544687314381512705, trigger=click)
2026-04-20T09:10:17.628368Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6544687314381512705, trigger=click)
2026-04-20T09:10:17.716440Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6544687314381512705, trigger=click)
2026-04-20T09:10:21.386286Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 100 frames, 17.9MB → 6.8MB (2.6x), 100 JPEGs deleted
2026-04-20T09:10:22.685406Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 2.2MB → 0.9MB (2.4x), 14 JPEGs deleted
2026-04-20T09:10:23.507120Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6544687314381512705, trigger=click)
2026-04-20T09:11:42.391615Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6544687314381512705, trigger=click)
2026-04-20T09:11:42.475795Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6544687314381512705, trigger=click)
2026-04-20T09:11:44.750359Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6544687314381512705, trigger=click)
2026-04-20T09:11:44.980679Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6544687314381512705, trigger=click)
2026-04-20T09:11:53.686192Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6544687314381512705, trigger=click)
2026-04-20T09:11:53.738064Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6544687314381512705, trigger=click)
2026-04-20T09:11:56.291827Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6544687314381512705, trigger=click)
2026-04-20T09:11:56.451083Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6544687314381512705, trigger=click)
2026-04-20T09:12:46.023481Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1367434359766307217, trigger=visual_change)
2026-04-20T09:12:49.049656Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1367434359766307217, trigger=visual_change)
2026-04-20T09:13:23.025287Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=596503974090759224, trigger=click)
2026-04-20T09:13:28.322087Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3622643354436184557, trigger=visual_change)
2026-04-20T09:14:35.739274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3577748614007823836, trigger=click)
2026-04-20T09:15:24.523245Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=3 elapsed=1.840652833s
2026-04-20T09:15:24.523440Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 3 eligible frames
2026-04-20T09:15:37.319126Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7719336893453902381, trigger=click)
2026-04-20T09:16:25.021906Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=2226463793404778776, trigger=visual_change)
2026-04-20T09:16:40.481038Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2449473341097903678, trigger=visual_change)
2026-04-20T09:17:01.897197Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3192006669261292210, trigger=visual_change)
2026-04-20T09:17:11.727852Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4839184715325635051, trigger=click)
2026-04-20T09:17:11.880765Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4839184715325635051, trigger=click)
2026-04-20T09:17:12.886271Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4839184715325635051, trigger=click)
2026-04-20T09:17:12.961362Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4839184715325635051, trigger=click)
2026-04-20T09:17:49.590890Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5042772765556709364, trigger=visual_change)
2026-04-20T09:18:38.516980Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3873630181551472921, trigger=click)
2026-04-20T09:18:52.171689Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3192006669261292210, trigger=click)
2026-04-20T09:18:52.339913Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3192006669261292210, trigger=visual_change)
2026-04-20T09:19:18.962835Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3035482053266865517, trigger=visual_change)
2026-04-20T09:19:21.997050Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3035482053266865517, trigger=visual_change)
2026-04-20T09:20:27.568575Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=33 elapsed=3.045052625s
2026-04-20T09:20:27.568689Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 33 eligible frames
2026-04-20T09:20:28.589270Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 3.1MB → 0.7MB (4.6x), 14 JPEGs deleted
2026-04-20T09:20:30.840110Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 3.0MB → 1.1MB (2.8x), 19 JPEGs deleted
2026-04-20T09:20:37.786800Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (...
|
iTerm2
|
screenpipe"
|
NULL
|
52479
|
|
ggml_metal_init: use fusion = true
ggml_me ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-04-18T14:43:07.918412Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-04-18T14:44:35.514401Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8593116969702213352, trigger=visual_change)
2026-04-18T14:44:35.891413Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8593116969702213352, trigger=visual_change)
2026-04-18T14:45:06.077184Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6130095137839516019, trigger=visual_change)
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-04-18T14:45:09.423485Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-04-18T14:45:40.853509Z WARN screenpipe_db::db: ImmediateTx dropped without commit — rolling back
2026-04-18T14:45:45.829292Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6130095137839516019, trigger=click)
2026-04-18T14:45:45.931557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6130095137839516019, trigger=click)
zsh: terminated npx screenpipe@latest record --ignored-windows "Boosteroid"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-start
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-20T09:09:02.916408Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
accessibility: ok
2026-04-20T09:09:03.042870Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-20T09:09:04.217747Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-20T09:09:04.219685Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-20T09:09:04.220577Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-20T09:09:04.314160Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-04-20T09:09:04.314251Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-20T09:09:04.314473Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-20T09:09:04.314486Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-20T09:09:04.314428Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-20T09:09:04.314439Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-20T09:09:04.314563Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-20T09:09:04.370709Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-20T09:09:04.383079Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-20T09:09:04.384136Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-20T09:09:04.384745Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-20T09:09:04.385360Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-20T09:09:04.385876Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-20T09:09:04.386843Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-20T09:09:04.386950Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-20T09:09:04.390629Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
2026-04-20T09:09:04.411414Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-20T09:09:04.444803Z INFO screenpipe: starting UI event capture
2026-04-20T09:09:04.482387Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-20T09:09:04.509116Z INFO screenpipe_engine::ui_recorder: UI recording session started: f0f4e024-5bd3-4a71-bf92-6feec89df1b0
2026-04-20T09:09:04.509231Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-20T09:09:04.509296Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-19 06:09:04.509295 UTC to 2026-04-20 06:09:04.509295 UTC)
2026-04-20T09:09:04.510396Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-20T09:09:04.511440Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 0 frame entries, coverage from 2026-04-19 06:09:04.509295 UTC
2026-04-20T09:09:04.519984Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-20T09:09:04.547289Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-20T09:09:04.965425Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-20T09:09:04.965463Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-20T09:09:04.965503Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-20T09:09:05.226982Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (3008x1253)
2026-04-20T09:09:05.227016Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-20T09:09:05.227136Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (event-driven via CGDisplayRegisterReconfigurationCallback, 60s backstop poll)
2026-04-20T09:09:05.227375Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-20T09:09:07.300820Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 3 excluded)
2026-04-20T09:09:07.600290Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=51507, dur=136ms
2026-04-20T09:09:07.683736Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 3 excluded)
2026-04-20T09:09:07.989000Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=51508, dur=185ms
2026-04-20T09:10:09.231456Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=197 elapsed=4.915444333s
2026-04-20T09:10:09.231772Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 197 eligible frames
2026-04-20T09:10:14.691743Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 83 frames, 16.3MB → 2.5MB (6.5x), 83 JPEGs deleted
2026-04-20T09:10:15.677833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6544687314381512705, trigger=click)
2026-04-20T09:10:17.628368Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6544687314381512705, trigger=click)
2026-04-20T09:10:17.716440Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6544687314381512705, trigger=click)
2026-04-20T09:10:21.386286Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 100 frames, 17.9MB → 6.8MB (2.6x), 100 JPEGs deleted
2026-04-20T09:10:22.685406Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 2.2MB → 0.9MB (2.4x), 14 JPEGs deleted
2026-04-20T09:10:23.507120Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6544687314381512705, trigger=click)
2026-04-20T09:11:42.391615Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6544687314381512705, trigger=click)
2026-04-20T09:11:42.475795Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6544687314381512705, trigger=click)
2026-04-20T09:11:44.750359Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6544687314381512705, trigger=click)
2026-04-20T09:11:44.980679Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6544687314381512705, trigger=click)
2026-04-20T09:11:53.686192Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6544687314381512705, trigger=click)
2026-04-20T09:11:53.738064Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6544687314381512705, trigger=click)
2026-04-20T09:11:56.291827Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=6544687314381512705, trigger=click)
2026-04-20T09:11:56.451083Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6544687314381512705, trigger=click)
2026-04-20T09:12:46.023481Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1367434359766307217, trigger=visual_change)
2026-04-20T09:12:49.049656Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1367434359766307217, trigger=visual_change)
2026-04-20T09:13:23.025287Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=596503974090759224, trigger=click)
2026-04-20T09:13:28.322087Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3622643354436184557, trigger=visual_change)
2026-04-20T09:14:35.739274Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3577748614007823836, trigger=click)
2026-04-20T09:15:24.523245Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=3 elapsed=1.840652833s
2026-04-20T09:15:24.523440Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 3 eligible frames
2026-04-20T09:15:37.319126Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7719336893453902381, trigger=click)
2026-04-20T09:16:25.021906Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=2226463793404778776, trigger=visual_change)
2026-04-20T09:16:40.481038Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2449473341097903678, trigger=visual_change)
2026-04-20T09:17:01.897197Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3192006669261292210, trigger=visual_change)
2026-04-20T09:17:11.727852Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4839184715325635051, trigger=click)
2026-04-20T09:17:11.880765Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4839184715325635051, trigger=click)
2026-04-20T09:17:12.886271Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4839184715325635051, trigger=click)
2026-04-20T09:17:12.961362Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4839184715325635051, trigger=click)
2026-04-20T09:17:49.590890Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5042772765556709364, trigger=visual_change)
2026-04-20T09:18:38.516980Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3873630181551472921, trigger=click)
2026-04-20T09:18:52.171689Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-3192006669261292210, trigger=click)
2026-04-20T09:18:52.339913Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3192006669261292210, trigger=visual_change)
2026-04-20T09:19:18.962835Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3035482053266865517, trigger=visual_change)
2026-04-20T09:19:21.997050Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3035482053266865517, trigger=visual_change)
2026-04-20T09:20:27.568575Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=33 elapsed=3.045052625s
2026-04-20T09:20:27.568689Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 33 eligible frames
2026-04-20T09:20:28.589270Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 3.1MB → 0.7MB (4.6x), 14 JPEGs deleted
2026-04-20T09:20:30.840110Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 3.0MB → 1.1MB (2.8x), 19 JPEGs deleted
2026-04-20T09:20:37.786800Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (...
|
iTerm2
|
screenpipe"
|
NULL
|
52480
|
|
Last login: Mon Apr 20 10:16:41 on ttys009
Poetry Last login: Mon Apr 20 10:16:41 on ttys009
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sp-start
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-20T10:17:08.672567Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
accessibility: ok
2026-04-20T10:17:08.735636Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-20T10:17:09.168849Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-20T10:17:09.170474Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-20T10:17:09.170918Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-20T10:17:09.203704Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-04-20T10:17:09.203780Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-20T10:17:09.203962Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-20T10:17:09.203976Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-20T10:17:09.203934Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-20T10:17:09.204030Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-20T10:17:09.203954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-20T10:17:09.215020Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-20T10:17:09.220127Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-20T10:17:09.220306Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-20T10:17:09.220863Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-20T10:17:09.221034Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-20T10:17:09.221177Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-20T10:17:09.221820Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-20T10:17:09.221839Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
2026-04-20T10:17:09.223448Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-20T10:17:09.227535Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-20T10:17:09.240088Z INFO screenpipe: starting UI event capture
2026-04-20T10:17:09.253668Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-20T10:17:09.267973Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-20T10:17:09.268072Z INFO screenpipe_engine::ui_recorder: UI recording session started: f196d677-2a10-4dec-93e7-9dd9048a1d8e
2026-04-20T10:17:09.268173Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-19 07:17:09.268169 UTC to 2026-04-20 07:17:09.268169 UTC)
2026-04-20T10:17:09.268665Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-20T10:17:09.275204Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-20T10:17:09.280547Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-20T10:17:09.284876Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-20T10:17:09.284906Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-20T10:17:09.284942Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-20T10:17:09.316523Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (3008x1253)
2026-04-20T10:17:09.316557Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-20T10:17:09.316583Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (event-driven via CGDisplayRegisterReconfigurationCallback, 60s backstop poll)
2026-04-20T10:17:09.316603Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-20T10:17:09.975374Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
52481
|
|
Last login: Mon Apr 20 10:16:41 on ttys009
Poetry Last login: Mon Apr 20 10:16:41 on ttys009
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sp-start
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-20T10:17:08.672567Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
accessibility: ok
2026-04-20T10:17:08.735636Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-20T10:17:09.168849Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-20T10:17:09.170474Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-20T10:17:09.170918Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-20T10:17:09.203704Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-04-20T10:17:09.203780Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-20T10:17:09.203962Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-20T10:17:09.203976Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-20T10:17:09.203934Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-20T10:17:09.204030Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-20T10:17:09.203954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-20T10:17:09.215020Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-20T10:17:09.220127Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-20T10:17:09.220306Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-20T10:17:09.220863Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-20T10:17:09.221034Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-20T10:17:09.221177Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-20T10:17:09.221820Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-20T10:17:09.221839Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
2026-04-20T10:17:09.223448Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-20T10:17:09.227535Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-20T10:17:09.240088Z INFO screenpipe: starting UI event capture
2026-04-20T10:17:09.253668Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-20T10:17:09.267973Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-20T10:17:09.268072Z INFO screenpipe_engine::ui_recorder: UI recording session started: f196d677-2a10-4dec-93e7-9dd9048a1d8e
2026-04-20T10:17:09.268173Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-19 07:17:09.268169 UTC to 2026-04-20 07:17:09.268169 UTC)
2026-04-20T10:17:09.268665Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-20T10:17:09.275204Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-20T10:17:09.280547Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-20T10:17:09.284876Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-20T10:17:09.284906Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-20T10:17:09.284942Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-20T10:17:09.316523Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (3008x1253)
2026-04-20T10:17:09.316557Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-20T10:17:09.316583Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (event-driven via CGDisplayRegisterReconfigurationCallback, 60s backstop poll)
2026-04-20T10:17:09.316603Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-20T10:17:09.975374Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-20T10:17:10.050320Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 1 excluded)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
52482
|
|
Last login: Mon Apr 20 10:16:41 on ttys009
Poetry Last login: Mon Apr 20 10:16:41 on ttys009
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sp-start
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-20T10:17:08.672567Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
accessibility: ok
2026-04-20T10:17:08.735636Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-20T10:17:09.168849Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-20T10:17:09.170474Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-20T10:17:09.170918Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-20T10:17:09.203704Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-04-20T10:17:09.203780Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-20T10:17:09.203962Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-20T10:17:09.203976Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-20T10:17:09.203934Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-20T10:17:09.204030Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-20T10:17:09.203954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-20T10:17:09.215020Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-20T10:17:09.220127Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-20T10:17:09.220306Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-20T10:17:09.220863Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-20T10:17:09.221034Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-20T10:17:09.221177Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-20T10:17:09.221820Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-20T10:17:09.221839Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
2026-04-20T10:17:09.223448Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-20T10:17:09.227535Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-20T10:17:09.240088Z INFO screenpipe: starting UI event capture
2026-04-20T10:17:09.253668Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-20T10:17:09.267973Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-20T10:17:09.268072Z INFO screenpipe_engine::ui_recorder: UI recording session started: f196d677-2a10-4dec-93e7-9dd9048a1d8e
2026-04-20T10:17:09.268173Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-19 07:17:09.268169 UTC to 2026-04-20 07:17:09.268169 UTC)
2026-04-20T10:17:09.268665Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-20T10:17:09.275204Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-20T10:17:09.280547Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-20T10:17:09.284876Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-20T10:17:09.284906Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-20T10:17:09.284942Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-20T10:17:09.316523Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (3008x1253)
2026-04-20T10:17:09.316557Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-20T10:17:09.316583Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (event-driven via CGDisplayRegisterReconfigurationCallback, 60s backstop poll)
2026-04-20T10:17:09.316603Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-20T10:17:09.975374Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-20T10:17:10.050320Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 1 excluded)
2026-04-20T10:17:10.109022Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=52481, dur=72ms
2026-04-20T10:17:10.197530Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=52482, dur=98ms
2026-04-20T10:17:10.926185Z WARN sqlx::query: summary="SELECT f.id, f.timestamp, f.offset_index, …" db.statement="\n\nSELECT\n f.id,\n f.timestamp,\n f.offset_index,\n COALESCE(\n SUBSTR(f.full_text, 1, 200),\n SUBSTR(f.accessibility_text, 1, 200),\n (\n SELECT\n SUBSTR(ot.text, 1, 200)\n FROM\n ocr_text ot\n WHERE\n ot.frame_id = f.id\n LIMIT\n 1\n )\n ) as text,\n COALESCE(\n f.app_name,\n (\n SELECT\n ot.app_name\n FROM\n ocr_text ot\n WHERE\n ot.frame_id = f.id\n LIMIT\n 1\n )\n ) as app_name,\n COALESCE(\n f.window_name,\n (\n SELECT\n ot.window_name\n FROM\n ocr_text ot\n WHERE\n ot.frame_id = f.id\n LIMIT\n 1\n )\n ) as window_name,\n COALESCE(vc.device_name, f.device_name) as screen_device,\n COALESCE(vc.file_path, f.snapshot_path) as video_path,\n COALESCE(vc.fps, 0.033) as chunk_fps,\n f.browser_url,\n f.machine_id\nFROM\n frames f\n LEFT JOIN video_chunks vc ON f.video_chunk_id = vc.id\nWHERE\n f.timestamp >= ?1\n AND f.timestamp <= ?2\n AND COALESCE(vc.file_path, f.snapshot_path, '') NOT LIKE 'cloud://%'\nORDER BY\n f.timestamp DESC,\n f.offset_index DESC\nLIMIT\n 10000\n" rows_affected=0 rows_returned=974 elapsed=1.657379083s
2026-04-20T10:17:10.928810Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 974 frame entries, coverage from 2026-04-19 07:17:09.268169 UTC
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
screenpipe"
Close Tab
⌥⌘1
screenpipe"...
|
iTerm2
|
screenpipe"
|
NULL
|
52483
|
|
Last login: Mon Apr 20 10:16:41 on ttys009
Poetry Last login: Mon Apr 20 10:16:41 on ttys009
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sp-start
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-20T10:17:08.672567Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
accessibility: ok
2026-04-20T10:17:08.735636Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-20T10:17:09.168849Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-20T10:17:09.170474Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-20T10:17:09.170918Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-20T10:17:09.203704Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-04-20T10:17:09.203780Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-20T10:17:09.203962Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-20T10:17:09.203976Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-20T10:17:09.203934Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-20T10:17:09.204030Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-20T10:17:09.203954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-20T10:17:09.215020Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-20T10:17:09.220127Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-20T10:17:09.220306Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-20T10:17:09.220863Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-20T10:17:09.221034Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-20T10:17:09.221177Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-20T10:17:09.221820Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-20T10:17:09.221839Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
2026-04-20T10:17:09.223448Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-20T10:17:09.227535Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-20T10:17:09.240088Z INFO screenpipe: starting UI event capture
2026-04-20T10:17:09.253668Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-20T10:17:09.267973Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-20T10:17:09.268072Z INFO screenpipe_engine::ui_recorder: UI recording session started: f196d677-2a10-4dec-93e7-9dd9048a1d8e
2026-04-20T10:17:09.268173Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-19 07:17:09.268169 UTC to 2026-04-20 07:17:09.268169 UTC)
2026-04-20T10:17:09.268665Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-20T10:17:09.275204Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-20T10:17:09.280547Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-20T10:17:09.284876Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-20T10:17:09.284906Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-20T10:17:09.284942Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-20T10:17:09.316523Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (3008x1253)
2026-04-20T10:17:09.316557Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-20T10:17:09.316583Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (event-driven via CGDisplayRegisterReconfigurationCallback, 60s backstop poll)
2026-04-20T10:17:09.316603Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-20T10:17:09.975374Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-20T10:17:10.050320Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 1 excluded)
2026-04-20T10:17:10.109022Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=52481, dur=72ms
2026-04-20T10:17:10.197530Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=52482, dur=98ms
2026-04-20T10:17:10.926185Z WARN sqlx::query: summary="SELECT f.id, f.timestamp, f.offset_index, …" db.statement="\n\nSELECT\n f.id,\n f.timestamp,\n f.offset_index,\n COALESCE(\n SUBSTR(f.full_text, 1, 200),\n SUBSTR(f.accessibility_text, 1, 200),\n (\n SELECT\n SUBSTR(ot.text, 1, 200)\n FROM\n ocr_text ot\n WHERE\n ot.frame_id = f.id\n LIMIT\n 1\n )\n ) as text,\n COALESCE(\n f.app_name,\n (\n SELECT\n ot.app_name\n FROM\n ocr_text ot\n WHERE\n ot.frame_id = f.id\n LIMIT\n 1\n )\n ) as app_name,\n COALESCE(\n f.window_name,\n (\n SELECT\n ot.window_name\n FROM\n ocr_text ot\n WHERE\n ot.frame_id = f.id\n LIMIT\n 1\n )\n ) as window_name,\n COALESCE(vc.device_name, f.device_name) as screen_device,\n COALESCE(vc.file_path, f.snapshot_path) as video_path,\n COALESCE(vc.fps, 0.033) as chunk_fps,\n f.browser_url,\n f.machine_id\nFROM\n frames f\n LEFT JOIN video_chunks vc ON f.video_chunk_id = vc.id\nWHERE\n f.timestamp >= ?1\n AND f.timestamp <= ?2\n AND COALESCE(vc.file_path, f.snapshot_path, '') NOT LIKE 'cloud://%'\nORDER BY\n f.timestamp DESC,\n f.offset_index DESC\nLIMIT\n 10000\n" rows_affected=0 rows_returned=974 elapsed=1.657379083s
2026-04-20T10:17:10.928810Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 974 frame entries, coverage from 2026-04-19 07:17:09.268169 UTC
2026-04-20T10:17:36.605708Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5556097941235749601, trigger=visual_change)
2026-04-20T10:17:41.066595Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5621935701738529327, trigger=click)
2026-04-20T10:17:41.100078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5621935701738529327, trigger=click)
2026-04-20T10:17:46.116429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5621935701738529327, trigger=click)
2026-04-20T10:17:46.148269Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5621935701738529327, trigger=click)
2026-04-20T10:18:13.360099Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=145 elapsed=4.153777416s
2026-04-20T10:18:13.360276Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 145 eligible frames
2026-04-20T10:18:18.937138Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 90 frames, 15.2MB → 6.4MB (2.4x), 90 JPEGs deleted
2026-04-20T10:18:22.014745Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 9.4MB → 2.0MB (4.6x), 53 JPEGs deleted
2026-04-20T10:18:56.067965Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1399546062189663050, trigger=visual_change)
2026-04-20T10:18:56.859644Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1399546062189663050, trigger=click)
2026-04-20T10:18:59.894779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=[CREDIT_CARD], trigger=click)
2026-04-20T10:19:12.201247Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5621935701738529327, trigger=visual_change)
2026-04-20T10:21:22.063263Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1399546062189663050, trigger=visual_change)
2026-04-20T10:21:35.657143Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5007800743451086391, trigger=visual_change)
2026-04-20T10:21:35.899663Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5007800743451086391, trigger=visual_change)
2026-04-20T10:21:38.094166Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5007800743451086391, trigger=click)
2026-04-20T10:21:38.149655Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5007800743451086391, trigger=click)
2026-04-20T10:21:38.947641Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5007800743451086391, trigger=click)
2026-04-20T10:21:38.991934Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5007800743451086391, trigger=click)
2026-04-20T10:23:28.231526Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=6.103025792s
2026-04-20T10:23:28.232845Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-20T10:25:18.292352Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=133505750984754566, trigger=click)
2026-04-20T10:25:33.154631Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:25:33.227754Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:25:34.786990Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:25:36.507114Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:25:36.556707Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:25:37.741060Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:25:39.466175Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:25:39.547293Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:02.072902Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2625703622302799632, trigger=visual_change)
2026-04-20T10:26:05.038754Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8395829747728977847, trigger=visual_change)
2026-04-20T10:26:10.400901Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:10.459718Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:14.431146Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:26:17.437868Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:26:35.296162Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:35.339241Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:37.233387Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:37.326557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:00.031681Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:00.067495Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:01.950749Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:02.027316Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:13.045805Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:13.116607Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:15.272022Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:15.311144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:17.880859Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:17.952143Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:21.645455Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:21.706889Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:36.304603Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:36.380537Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:37.368951Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:37.459157Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:40.420505Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:40.469217Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:41.179717Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:28:00.173884Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:00.251737Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:01.241028Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:01.288002Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:02.985445Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:03.078932Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:04.726087Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:04.770305Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:18.186992Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:18.272249Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:28.337807Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 14 eligible frames
2026-04-20T10:28:29.608030Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 8 frames, 0.7MB → 0.5MB (1.4x), 8 JPEGs deleted
2026-04-20T10:28:30.685845Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.2MB → 0.7MB (1.8x), 6 JPEGs deleted
2026-04-20T10:28:49.943477Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:49.984595Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:50.611087Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:50.628530Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:54.853245Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:57.739309Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:29:03.177558Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:03.231322Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:03.857989Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:29:04.993121Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:05.032838Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:06.923393Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:29:07.890421Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:07.960410Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:08.812301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:26.656780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:26.775833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:27.602791Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:27.639583Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:34.060332Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2389025338591748766, trigger=visual_change)
2026-04-20T10:29:37.050675Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2389025338591748766, trigger=click)
2026-04-20T10:29:37.085946Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2389025338591748766, trigger=click)
2026-04-20T10:29:40.501396Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2389025338591748766, trigger=visual_change)
2026-04-20T10:29:43.751715Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:29:43.843367Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:44.468329Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:46.931137Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:49.616400Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:49.692474Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:50.298335Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:29:51.348506Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:51.436585Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:30:12.602958Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8200761366188343712, trigger=click)
2026-04-20T10:31:17.535958Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5166044279428207369, trigger=click)
2026-04-20T10:31:18.668547Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5166044279428207369, trigger=visual_change)
2026-04-20T10:31:19.518515Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5166044279428207369, trigger=click)
2026-04-20T10:31:19.681398Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5166044279428207369, trigger=click)
2026-04-20T10:31:21.044436Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5166044279428207369, trigger=click)
2026-04-20T10:31:21.086009Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5166044279428207369, trigger=click)
2026-04-20T10:31:21.680970Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5166044279428207369, trigger=visual_change)
2026-04-20T10:32:05.428125Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=visual_change)
2026-04-20T10:32:07.004460Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:07.088172Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:08.380482Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=visual_change)
2026-04-20T10:32:11.588306Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:11.689288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:12.318265Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:12.381069Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:20.139124Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:20.175356Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:23.490851Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:27.111949Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=visual_change)
2026-04-20T10:32:37.220458Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:37.303363Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:38.554270Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:38.619116Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:44.030894Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:32:44.098803Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:32:45.233990Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:32:45.238569Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:32:48.884987Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=visual_change)
2026-04-20T10:32:51.832116Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:51.860110Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:53.754008Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:53.796899Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:55.635715Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:55.675828Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:57.084341Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:57.128626Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:58.841455Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:58.882031Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:00.965217Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:01.040922Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:02.591751Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:02.633245Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:03.324241Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:03.353493Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:05.802391Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:05.849275Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:06.911518Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=visual_change)
2026-04-20T10:33:14.484135Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:33:14.530843Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:33:34.189406Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:33:34.205308Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=94 elapsed=3.603974333s
2026-04-20T10:33:34.205567Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 94 eligible frames
2026-04-20T10:33:34.240884Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=visual_change)
2026-04-20T10:33:35.686677Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:33:35.780825Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:33:37.134576Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 8.0MB → 4.4MB (1.8x), 38 JPEGs deleted
2026-04-20T10:33:40.850354Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 54 frames, 7.9MB → 3.4MB (2.3x), 54 JPEGs deleted
2026-04-20T10:33:55.372436Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=visual_change)
2026-04-20T10:35:01.169212Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:01.245363Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:02.392419Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:35:05.029174Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:05.073174Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:07.222477Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:07.329020Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:08.707660Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:35:27.744689Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:27.812062Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:18.265456Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:18.437457Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:23.437791Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:23.487637Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:24.299771Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:36:25.135894Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:25.257064Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:27.317393Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:36:50.815358Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:04.728644Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4435744464912499495, trigger=visual_change)
2026-04-20T10:38:07.749721Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4435744464912499495, trigger=visual_change)
2026-04-20T10:38:13.318000Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:38:13.969769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:38:14.800566Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:14.834512Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:17.252696Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:17.328544Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:24.892322Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:24.943640Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:35.256001Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:35.322251Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:40.980335Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-20T10:38:43.345927Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 39 frames, 6.6MB → 2.6MB (2.5x), 39 JPEGs deleted
2026-04-20T10:38:46.544495Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 47 frames, 7.3MB → 2.8MB (2.6x), 47 JPEGs deleted
2026-04-20T10:39:26.663352Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:39:29.597544Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:39:29.637879Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:40:07.495065Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:40:11.064923Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=visual_change)
2026-04-20T10:40:11.431065Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3919322128440588956, trigger=click)
2026-04-20T10:40:12.068565Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=click)
2026-04-20T10:40:12.110719Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3919322128440588956, trigger=click)
2026-04-20T10:40:14.179306Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=click)
2026-04-20T10:40:14.239361Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3919322128440588956, trigger=click)
2026-04-20T10:41:20.489623Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=click)
2026-04-20T10:43:48.184341Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=82 elapsed=1.63218175s
2026-04-20T10:43:48.184571Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 82 eligible frames
2026-04-20T10:43:50.234957Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 30 frames, 2.2MB → 0.1MB (16.1x), 30 JPEGs deleted
2026-04-20T10:43:55.342383Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 50 frames, 7.9MB → 3.2MB (2.5x), 50 JPEGs deleted
2026-04-20T10:44:06.225390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4079037146782974603, trigger=click)
2026-04-20T10:44:14.808445Z INFO screenpipe_engine::meeting_detector: meeting v2: Idle -> Confirming (app=Slack, signals=2)
2026-04-20T10:44:19.110273Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-539912533838677065, trigger=click)
2026-04-20T10:44:19.155111Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-539912533838677065, trigger=click)
2026-04-20T10:44:19.832463Z INFO screenpipe_engine::meeting_detector: meeting v2: Confirming -> Active (app=Slack, signals=2, browser=false)
2026-04-20T10:44:19.834928Z INFO screenpipe_engine::meeting_detector: meeting v2: meeting started (id=3, app=Slack, title=None)
2026-04-20T10:44:27.766267Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5412550087722993493, trigger=visual_change)
2026-04-20T10:44:39.799864Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5412550087722993493, trigger=visual_change)
2026-04-20T10:44:57.832108Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5412550087722993493, trigger=visual_change)
2026-04-20T10:44:57.940548Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5412550087722993493, trigger=click)
2026-04-20T10:44:58.605782Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5412550087722993493, trigger=click)
2026-04-20T10:44:58.637243Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5412550087722993493, trigger=click)
2026-04-20T10:45:00.807501Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5412550087722993493, trigger=visual_change)
2026-04-20T10:45:16.166619Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8594311245071571574, trigger=visual_change)
2026-04-20T10:45:56.391618Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3919322128440588956, trigger=click)
2026-04-20T10:45:56.468127Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=click)
2026-04-20T10:46:03.056730Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8594311245071571574, trigger=visual_change)
2026-04-20T10:46:12.195973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8594311245071571574, trigger=visual_change)
2026-04-20T10:46:17.958643Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=click)
2026-04-20T10:46:18.011452Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3919322128440588956, trigger=click)
2026-04-20T10:47:02.211065Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5662459752758049610, trigger=click)
2026-04-20T10:47:02.257675Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5662459752758049610, trigger=click)
2026-04-20T10:47:05.697096Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5662459752758049610, trigger=click)
2026-04-20T10:47:06.566076Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5662459752758049610, trigger=click)
2026-04-20T10:47:07.827281Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping captur...
|
iTerm2
|
screenpipe"
|
NULL
|
53934
|
|
Last login: Mon Apr 20 10:16:41 on ttys009
Poetry Last login: Mon Apr 20 10:16:41 on ttys009
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sp-start
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-20T10:17:08.672567Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
accessibility: ok
2026-04-20T10:17:08.735636Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-20T10:17:09.168849Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-20T10:17:09.170474Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-20T10:17:09.170918Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-20T10:17:09.203704Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-04-20T10:17:09.203780Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-20T10:17:09.203962Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-20T10:17:09.203976Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-20T10:17:09.203934Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-20T10:17:09.204030Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-20T10:17:09.203954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-20T10:17:09.215020Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-20T10:17:09.220127Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-20T10:17:09.220306Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-20T10:17:09.220863Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-20T10:17:09.221034Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-20T10:17:09.221177Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-20T10:17:09.221820Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-20T10:17:09.221839Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
2026-04-20T10:17:09.223448Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-20T10:17:09.227535Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-20T10:17:09.240088Z INFO screenpipe: starting UI event capture
2026-04-20T10:17:09.253668Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-20T10:17:09.267973Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-20T10:17:09.268072Z INFO screenpipe_engine::ui_recorder: UI recording session started: f196d677-2a10-4dec-93e7-9dd9048a1d8e
2026-04-20T10:17:09.268173Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-19 07:17:09.268169 UTC to 2026-04-20 07:17:09.268169 UTC)
2026-04-20T10:17:09.268665Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-20T10:17:09.275204Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-20T10:17:09.280547Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-20T10:17:09.284876Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-20T10:17:09.284906Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-20T10:17:09.284942Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-20T10:17:09.316523Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (3008x1253)
2026-04-20T10:17:09.316557Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-20T10:17:09.316583Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (event-driven via CGDisplayRegisterReconfigurationCallback, 60s backstop poll)
2026-04-20T10:17:09.316603Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-20T10:17:09.975374Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-20T10:17:10.050320Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 1 excluded)
2026-04-20T10:17:10.109022Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=52481, dur=72ms
2026-04-20T10:17:10.197530Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=52482, dur=98ms
2026-04-20T10:17:10.926185Z WARN sqlx::query: summary="SELECT f.id, f.timestamp, f.offset_index, …" db.statement="\n\nSELECT\n f.id,\n f.timestamp,\n f.offset_index,\n COALESCE(\n SUBSTR(f.full_text, 1, 200),\n SUBSTR(f.accessibility_text, 1, 200),\n (\n SELECT\n SUBSTR(ot.text, 1, 200)\n FROM\n ocr_text ot\n WHERE\n ot.frame_id = f.id\n LIMIT\n 1\n )\n ) as text,\n COALESCE(\n f.app_name,\n (\n SELECT\n ot.app_name\n FROM\n ocr_text ot\n WHERE\n ot.frame_id = f.id\n LIMIT\n 1\n )\n ) as app_name,\n COALESCE(\n f.window_name,\n (\n SELECT\n ot.window_name\n FROM\n ocr_text ot\n WHERE\n ot.frame_id = f.id\n LIMIT\n 1\n )\n ) as window_name,\n COALESCE(vc.device_name, f.device_name) as screen_device,\n COALESCE(vc.file_path, f.snapshot_path) as video_path,\n COALESCE(vc.fps, 0.033) as chunk_fps,\n f.browser_url,\n f.machine_id\nFROM\n frames f\n LEFT JOIN video_chunks vc ON f.video_chunk_id = vc.id\nWHERE\n f.timestamp >= ?1\n AND f.timestamp <= ?2\n AND COALESCE(vc.file_path, f.snapshot_path, '') NOT LIKE 'cloud://%'\nORDER BY\n f.timestamp DESC,\n f.offset_index DESC\nLIMIT\n 10000\n" rows_affected=0 rows_returned=974 elapsed=1.657379083s
2026-04-20T10:17:10.928810Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 974 frame entries, coverage from 2026-04-19 07:17:09.268169 UTC
2026-04-20T10:17:36.605708Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5556097941235749601, trigger=visual_change)
2026-04-20T10:17:41.066595Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5621935701738529327, trigger=click)
2026-04-20T10:17:41.100078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5621935701738529327, trigger=click)
2026-04-20T10:17:46.116429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5621935701738529327, trigger=click)
2026-04-20T10:17:46.148269Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5621935701738529327, trigger=click)
2026-04-20T10:18:13.360099Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=145 elapsed=4.153777416s
2026-04-20T10:18:13.360276Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 145 eligible frames
2026-04-20T10:18:18.937138Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 90 frames, 15.2MB → 6.4MB (2.4x), 90 JPEGs deleted
2026-04-20T10:18:22.014745Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 9.4MB → 2.0MB (4.6x), 53 JPEGs deleted
2026-04-20T10:18:56.067965Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1399546062189663050, trigger=visual_change)
2026-04-20T10:18:56.859644Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1399546062189663050, trigger=click)
2026-04-20T10:18:59.894779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=[CREDIT_CARD], trigger=click)
2026-04-20T10:19:12.201247Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5621935701738529327, trigger=visual_change)
2026-04-20T10:21:22.063263Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1399546062189663050, trigger=visual_change)
2026-04-20T10:21:35.657143Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5007800743451086391, trigger=visual_change)
2026-04-20T10:21:35.899663Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5007800743451086391, trigger=visual_change)
2026-04-20T10:21:38.094166Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5007800743451086391, trigger=click)
2026-04-20T10:21:38.149655Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5007800743451086391, trigger=click)
2026-04-20T10:21:38.947641Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5007800743451086391, trigger=click)
2026-04-20T10:21:38.991934Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5007800743451086391, trigger=click)
2026-04-20T10:23:28.231526Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=6.103025792s
2026-04-20T10:23:28.232845Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-20T10:25:18.292352Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=133505750984754566, trigger=click)
2026-04-20T10:25:33.154631Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:25:33.227754Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:25:34.786990Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:25:36.507114Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:25:36.556707Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:25:37.741060Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:25:39.466175Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:25:39.547293Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:02.072902Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2625703622302799632, trigger=visual_change)
2026-04-20T10:26:05.038754Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8395829747728977847, trigger=visual_change)
2026-04-20T10:26:10.400901Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:10.459718Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:14.431146Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:26:17.437868Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:26:35.296162Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:35.339241Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:37.233387Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:37.326557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:00.031681Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:00.067495Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:01.950749Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:02.027316Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:13.045805Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:13.116607Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:15.272022Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:15.311144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:17.880859Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:17.952143Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:21.645455Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:21.706889Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:36.304603Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:36.380537Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:37.368951Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:37.459157Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:40.420505Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:40.469217Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:41.179717Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:28:00.173884Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:00.251737Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:01.241028Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:01.288002Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:02.985445Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:03.078932Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:04.726087Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:04.770305Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:18.186992Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:18.272249Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:28.337807Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 14 eligible frames
2026-04-20T10:28:29.608030Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 8 frames, 0.7MB → 0.5MB (1.4x), 8 JPEGs deleted
2026-04-20T10:28:30.685845Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.2MB → 0.7MB (1.8x), 6 JPEGs deleted
2026-04-20T10:28:49.943477Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:49.984595Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:50.611087Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:50.628530Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:54.853245Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:57.739309Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:29:03.177558Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:03.231322Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:03.857989Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:29:04.993121Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:05.032838Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:06.923393Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:29:07.890421Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:07.960410Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:08.812301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:26.656780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:26.775833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:27.602791Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:27.639583Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:34.060332Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2389025338591748766, trigger=visual_change)
2026-04-20T10:29:37.050675Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2389025338591748766, trigger=click)
2026-04-20T10:29:37.085946Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2389025338591748766, trigger=click)
2026-04-20T10:29:40.501396Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2389025338591748766, trigger=visual_change)
2026-04-20T10:29:43.751715Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:29:43.843367Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:44.468329Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:46.931137Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:49.616400Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:49.692474Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:50.298335Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:29:51.348506Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:51.436585Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:30:12.602958Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8200761366188343712, trigger=click)
2026-04-20T10:31:17.535958Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5166044279428207369, trigger=click)
2026-04-20T10:31:18.668547Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5166044279428207369, trigger=visual_change)
2026-04-20T10:31:19.518515Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5166044279428207369, trigger=click)
2026-04-20T10:31:19.681398Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5166044279428207369, trigger=click)
2026-04-20T10:31:21.044436Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5166044279428207369, trigger=click)
2026-04-20T10:31:21.086009Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5166044279428207369, trigger=click)
2026-04-20T10:31:21.680970Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5166044279428207369, trigger=visual_change)
2026-04-20T10:32:05.428125Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=visual_change)
2026-04-20T10:32:07.004460Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:07.088172Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:08.380482Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=visual_change)
2026-04-20T10:32:11.588306Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:11.689288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:12.318265Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:12.381069Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:20.139124Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:20.175356Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:23.490851Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:27.111949Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=visual_change)
2026-04-20T10:32:37.220458Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:37.303363Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:38.554270Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:38.619116Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:44.030894Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:32:44.098803Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:32:45.233990Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:32:45.238569Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:32:48.884987Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=visual_change)
2026-04-20T10:32:51.832116Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:51.860110Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:53.754008Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:53.796899Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:55.635715Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:55.675828Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:57.084341Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:57.128626Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:58.841455Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:58.882031Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:00.965217Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:01.040922Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:02.591751Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:02.633245Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:03.324241Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:03.353493Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:05.802391Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:05.849275Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:06.911518Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=visual_change)
2026-04-20T10:33:14.484135Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:33:14.530843Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:33:34.189406Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:33:34.205308Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=94 elapsed=3.603974333s
2026-04-20T10:33:34.205567Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 94 eligible frames
2026-04-20T10:33:34.240884Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=visual_change)
2026-04-20T10:33:35.686677Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:33:35.780825Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:33:37.134576Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 8.0MB → 4.4MB (1.8x), 38 JPEGs deleted
2026-04-20T10:33:40.850354Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 54 frames, 7.9MB → 3.4MB (2.3x), 54 JPEGs deleted
2026-04-20T10:33:55.372436Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=visual_change)
2026-04-20T10:35:01.169212Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:01.245363Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:02.392419Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:35:05.029174Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:05.073174Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:07.222477Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:07.329020Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:08.707660Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:35:27.744689Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:27.812062Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:18.265456Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:18.437457Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:23.437791Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:23.487637Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:24.299771Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:36:25.135894Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:25.257064Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:27.317393Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:36:50.815358Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:04.728644Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4435744464912499495, trigger=visual_change)
2026-04-20T10:38:07.749721Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4435744464912499495, trigger=visual_change)
2026-04-20T10:38:13.318000Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:38:13.969769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:38:14.800566Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:14.834512Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:17.252696Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:17.328544Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:24.892322Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:24.943640Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:35.256001Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:35.322251Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:40.980335Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-20T10:38:43.345927Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 39 frames, 6.6MB → 2.6MB (2.5x), 39 JPEGs deleted
2026-04-20T10:38:46.544495Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 47 frames, 7.3MB → 2.8MB (2.6x), 47 JPEGs deleted
2026-04-20T10:39:26.663352Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:39:29.597544Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:39:29.637879Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:40:07.495065Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:40:11.064923Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=visual_change)
2026-04-20T10:40:11.431065Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3919322128440588956, trigger=click)
2026-04-20T10:40:12.068565Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=click)
2026-04-20T10:40:12.110719Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3919322128440588956, trigger=click)
2026-04-20T10:40:14.179306Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=click)
2026-04-20T10:40:14.239361Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3919322128440588956, trigger=click)
2026-04-20T10:41:20.489623Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=click)
2026-04-20T10:43:48.184341Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=82 elapsed=1.63218175s
2026-04-20T10:43:48.184571Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 82 eligible frames
2026-04-20T10:43:50.234957Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 30 frames, 2.2MB → 0.1MB (16.1x), 30 JPEGs deleted
2026-04-20T10:43:55.342383Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 50 frames, 7.9MB → 3.2MB (2.5x), 50 JPEGs deleted
2026-04-20T10:44:06.225390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4079037146782974603, trigger=click)
2026-04-20T10:44:14.808445Z INFO screenpipe_engine::meeting_detector: meeting v2: Idle -> Confirming (app=Slack, signals=2)
2026-04-20T10:44:19.110273Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-539912533838677065, trigger=click)
2026-04-20T10:44:19.155111Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-539912533838677065, trigger=click)
2026-04-20T10:44:19.832463Z INFO screenpipe_engine::meeting_detector: meeting v2: Confirming -> Active (app=Slack, signals=2, browser=false)
2026-04-20T10:44:19.834928Z INFO screenpipe_engine::meeting_detector: meeting v2: meeting started (id=3, app=Slack, title=None)
2026-04-20T10:44:27.766267Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5412550087722993493, trigger=visual_change)
2026-04-20T10:44:39.799864Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5412550087722993493, trigger=visual_change)
2026-04-20T10:44:57.832108Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5412550087722993493, trigger=visual_change)
2026-04-20T10:44:57.940548Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5412550087722993493, trigger=click)
2026-04-20T10:44:58.605782Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5412550087722993493, trigger=click)
2026-04-20T10:44:58.637243Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5412550087722993493, trigger=click)
2026-04-20T10:45:00.807501Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5412550087722993493, trigger=visual_change)
2026-04-20T10:45:16.166619Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8594311245071571574, trigger=visual_change)
2026-04-20T10:45:56.391618Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3919322128440588956, trigger=click)
2026-04-20T10:45:56.468127Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=click)
2026-04-20T10:46:03.056730Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8594311245071571574, trigger=visual_change)
2026-04-20T10:46:12.195973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8594311245071571574, trigger=visual_change)
2026-04-20T10:46:17.958643Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=click)
2026-04-20T10:46:18.011452Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3919322128440588956, trigger=click)
2026-04-20T10:47:02.211065Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5662459752758049610, trigger=click)
2026-04-20T10:47:02.257675Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5662459752758049610, trigger=click)
2026-04-20T10:47:05.697096Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5662459752758049610, trigger=click)
2026-04-20T10:47:06.566076Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5662459752758049610, trigger=click)
2026-04-20T10:47:07.827281Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping captur...
|
iTerm2
|
screenpipe"
|
NULL
|
53935
|
|
Last login: Mon Apr 20 10:16:41 on ttys009
Poetry Last login: Mon Apr 20 10:16:41 on ttys009
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sp-start
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-20T10:17:08.672567Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
accessibility: ok
2026-04-20T10:17:08.735636Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-20T10:17:09.168849Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-20T10:17:09.170474Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-20T10:17:09.170918Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-20T10:17:09.203704Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-04-20T10:17:09.203780Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-20T10:17:09.203962Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-20T10:17:09.203976Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-20T10:17:09.203934Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-20T10:17:09.204030Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-20T10:17:09.203954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-20T10:17:09.215020Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-20T10:17:09.220127Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-20T10:17:09.220306Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-20T10:17:09.220863Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-20T10:17:09.221034Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-20T10:17:09.221177Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-20T10:17:09.221820Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-20T10:17:09.221839Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
2026-04-20T10:17:09.223448Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-20T10:17:09.227535Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-20T10:17:09.240088Z INFO screenpipe: starting UI event capture
2026-04-20T10:17:09.253668Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-20T10:17:09.267973Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-20T10:17:09.268072Z INFO screenpipe_engine::ui_recorder: UI recording session started: f196d677-2a10-4dec-93e7-9dd9048a1d8e
2026-04-20T10:17:09.268173Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-19 07:17:09.268169 UTC to 2026-04-20 07:17:09.268169 UTC)
2026-04-20T10:17:09.268665Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-20T10:17:09.275204Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-20T10:17:09.280547Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-20T10:17:09.284876Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-20T10:17:09.284906Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-20T10:17:09.284942Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-20T10:17:09.316523Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (3008x1253)
2026-04-20T10:17:09.316557Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-20T10:17:09.316583Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (event-driven via CGDisplayRegisterReconfigurationCallback, 60s backstop poll)
2026-04-20T10:17:09.316603Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-20T10:17:09.975374Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-20T10:17:10.050320Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 1 excluded)
2026-04-20T10:17:10.109022Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=52481, dur=72ms
2026-04-20T10:17:10.197530Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=52482, dur=98ms
2026-04-20T10:17:10.926185Z WARN sqlx::query: summary="SELECT f.id, f.timestamp, f.offset_index, …" db.statement="\n\nSELECT\n f.id,\n f.timestamp,\n f.offset_index,\n COALESCE(\n SUBSTR(f.full_text, 1, 200),\n SUBSTR(f.accessibility_text, 1, 200),\n (\n SELECT\n SUBSTR(ot.text, 1, 200)\n FROM\n ocr_text ot\n WHERE\n ot.frame_id = f.id\n LIMIT\n 1\n )\n ) as text,\n COALESCE(\n f.app_name,\n (\n SELECT\n ot.app_name\n FROM\n ocr_text ot\n WHERE\n ot.frame_id = f.id\n LIMIT\n 1\n )\n ) as app_name,\n COALESCE(\n f.window_name,\n (\n SELECT\n ot.window_name\n FROM\n ocr_text ot\n WHERE\n ot.frame_id = f.id\n LIMIT\n 1\n )\n ) as window_name,\n COALESCE(vc.device_name, f.device_name) as screen_device,\n COALESCE(vc.file_path, f.snapshot_path) as video_path,\n COALESCE(vc.fps, 0.033) as chunk_fps,\n f.browser_url,\n f.machine_id\nFROM\n frames f\n LEFT JOIN video_chunks vc ON f.video_chunk_id = vc.id\nWHERE\n f.timestamp >= ?1\n AND f.timestamp <= ?2\n AND COALESCE(vc.file_path, f.snapshot_path, '') NOT LIKE 'cloud://%'\nORDER BY\n f.timestamp DESC,\n f.offset_index DESC\nLIMIT\n 10000\n" rows_affected=0 rows_returned=974 elapsed=1.657379083s
2026-04-20T10:17:10.928810Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 974 frame entries, coverage from 2026-04-19 07:17:09.268169 UTC
2026-04-20T10:17:36.605708Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5556097941235749601, trigger=visual_change)
2026-04-20T10:17:41.066595Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5621935701738529327, trigger=click)
2026-04-20T10:17:41.100078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5621935701738529327, trigger=click)
2026-04-20T10:17:46.116429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5621935701738529327, trigger=click)
2026-04-20T10:17:46.148269Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5621935701738529327, trigger=click)
2026-04-20T10:18:13.360099Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=145 elapsed=4.153777416s
2026-04-20T10:18:13.360276Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 145 eligible frames
2026-04-20T10:18:18.937138Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 90 frames, 15.2MB → 6.4MB (2.4x), 90 JPEGs deleted
2026-04-20T10:18:22.014745Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 9.4MB → 2.0MB (4.6x), 53 JPEGs deleted
2026-04-20T10:18:56.067965Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1399546062189663050, trigger=visual_change)
2026-04-20T10:18:56.859644Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1399546062189663050, trigger=click)
2026-04-20T10:18:59.894779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=[CREDIT_CARD], trigger=click)
2026-04-20T10:19:12.201247Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5621935701738529327, trigger=visual_change)
2026-04-20T10:21:22.063263Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1399546062189663050, trigger=visual_change)
2026-04-20T10:21:35.657143Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5007800743451086391, trigger=visual_change)
2026-04-20T10:21:35.899663Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5007800743451086391, trigger=visual_change)
2026-04-20T10:21:38.094166Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5007800743451086391, trigger=click)
2026-04-20T10:21:38.149655Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5007800743451086391, trigger=click)
2026-04-20T10:21:38.947641Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5007800743451086391, trigger=click)
2026-04-20T10:21:38.991934Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5007800743451086391, trigger=click)
2026-04-20T10:23:28.231526Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=6.103025792s
2026-04-20T10:23:28.232845Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-20T10:25:18.292352Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=133505750984754566, trigger=click)
2026-04-20T10:25:33.154631Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:25:33.227754Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:25:34.786990Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:25:36.507114Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:25:36.556707Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:25:37.741060Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:25:39.466175Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:25:39.547293Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:02.072902Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2625703622302799632, trigger=visual_change)
2026-04-20T10:26:05.038754Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8395829747728977847, trigger=visual_change)
2026-04-20T10:26:10.400901Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:10.459718Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:14.431146Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:26:17.437868Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:26:35.296162Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:35.339241Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:37.233387Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:37.326557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:00.031681Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:00.067495Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:01.950749Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:02.027316Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:13.045805Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:13.116607Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:15.272022Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:15.311144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:17.880859Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:17.952143Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:21.645455Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:21.706889Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:36.304603Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:36.380537Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:37.368951Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:37.459157Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:40.420505Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:40.469217Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:41.179717Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:28:00.173884Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:00.251737Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:01.241028Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:01.288002Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:02.985445Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:03.078932Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:04.726087Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:04.770305Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:18.186992Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:18.272249Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:28.337807Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 14 eligible frames
2026-04-20T10:28:29.608030Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 8 frames, 0.7MB → 0.5MB (1.4x), 8 JPEGs deleted
2026-04-20T10:28:30.685845Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.2MB → 0.7MB (1.8x), 6 JPEGs deleted
2026-04-20T10:28:49.943477Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:49.984595Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:50.611087Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:50.628530Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:54.853245Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:57.739309Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:29:03.177558Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:03.231322Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:03.857989Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:29:04.993121Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:05.032838Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:06.923393Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:29:07.890421Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:07.960410Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:08.812301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:26.656780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:26.775833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:27.602791Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:27.639583Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:34.060332Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2389025338591748766, trigger=visual_change)
2026-04-20T10:29:37.050675Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2389025338591748766, trigger=click)
2026-04-20T10:29:37.085946Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2389025338591748766, trigger=click)
2026-04-20T10:29:40.501396Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2389025338591748766, trigger=visual_change)
2026-04-20T10:29:43.751715Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:29:43.843367Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:44.468329Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:46.931137Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:49.616400Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:49.692474Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:50.298335Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:29:51.348506Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:51.436585Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:30:12.602958Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8200761366188343712, trigger=click)
2026-04-20T10:31:17.535958Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5166044279428207369, trigger=click)
2026-04-20T10:31:18.668547Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5166044279428207369, trigger=visual_change)
2026-04-20T10:31:19.518515Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5166044279428207369, trigger=click)
2026-04-20T10:31:19.681398Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5166044279428207369, trigger=click)
2026-04-20T10:31:21.044436Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5166044279428207369, trigger=click)
2026-04-20T10:31:21.086009Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5166044279428207369, trigger=click)
2026-04-20T10:31:21.680970Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5166044279428207369, trigger=visual_change)
2026-04-20T10:32:05.428125Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=visual_change)
2026-04-20T10:32:07.004460Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:07.088172Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:08.380482Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=visual_change)
2026-04-20T10:32:11.588306Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:11.689288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:12.318265Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:12.381069Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:20.139124Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:20.175356Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:23.490851Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:27.111949Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=visual_change)
2026-04-20T10:32:37.220458Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:37.303363Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:38.554270Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:38.619116Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:44.030894Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:32:44.098803Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:32:45.233990Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:32:45.238569Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:32:48.884987Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=visual_change)
2026-04-20T10:32:51.832116Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:51.860110Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:53.754008Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:53.796899Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:55.635715Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:55.675828Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:57.084341Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:57.128626Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:58.841455Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:58.882031Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:00.965217Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:01.040922Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:02.591751Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:02.633245Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:03.324241Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:03.353493Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:05.802391Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:05.849275Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:06.911518Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=visual_change)
2026-04-20T10:33:14.484135Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:33:14.530843Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:33:34.189406Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:33:34.205308Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=94 elapsed=3.603974333s
2026-04-20T10:33:34.205567Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 94 eligible frames
2026-04-20T10:33:34.240884Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=visual_change)
2026-04-20T10:33:35.686677Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:33:35.780825Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:33:37.134576Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 8.0MB → 4.4MB (1.8x), 38 JPEGs deleted
2026-04-20T10:33:40.850354Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 54 frames, 7.9MB → 3.4MB (2.3x), 54 JPEGs deleted
2026-04-20T10:33:55.372436Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=visual_change)
2026-04-20T10:35:01.169212Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:01.245363Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:02.392419Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:35:05.029174Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:05.073174Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:07.222477Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:07.329020Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:08.707660Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:35:27.744689Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:27.812062Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:18.265456Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:18.437457Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:23.437791Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:23.487637Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:24.299771Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:36:25.135894Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:25.257064Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:27.317393Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:36:50.815358Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:04.728644Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4435744464912499495, trigger=visual_change)
2026-04-20T10:38:07.749721Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4435744464912499495, trigger=visual_change)
2026-04-20T10:38:13.318000Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:38:13.969769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:38:14.800566Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:14.834512Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:17.252696Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:17.328544Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:24.892322Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:24.943640Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:35.256001Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:35.322251Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:40.980335Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-20T10:38:43.345927Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 39 frames, 6.6MB → 2.6MB (2.5x), 39 JPEGs deleted
2026-04-20T10:38:46.544495Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 47 frames, 7.3MB → 2.8MB (2.6x), 47 JPEGs deleted
2026-04-20T10:39:26.663352Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:39:29.597544Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:39:29.637879Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:40:07.495065Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:40:11.064923Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=visual_change)
2026-04-20T10:40:11.431065Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3919322128440588956, trigger=click)
2026-04-20T10:40:12.068565Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=click)
2026-04-20T10:40:12.110719Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3919322128440588956, trigger=click)
2026-04-20T10:40:14.179306Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=click)
2026-04-20T10:40:14.239361Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3919322128440588956, trigger=click)
2026-04-20T10:41:20.489623Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=click)
2026-04-20T10:43:48.184341Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=82 elapsed=1.63218175s
2026-04-20T10:43:48.184571Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 82 eligible frames
2026-04-20T10:43:50.234957Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 30 frames, 2.2MB → 0.1MB (16.1x), 30 JPEGs deleted
2026-04-20T10:43:55.342383Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 50 frames, 7.9MB → 3.2MB (2.5x), 50 JPEGs deleted
2026-04-20T10:44:06.225390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4079037146782974603, trigger=click)
2026-04-20T10:44:14.808445Z INFO screenpipe_engine::meeting_detector: meeting v2: Idle -> Confirming (app=Slack, signals=2)
2026-04-20T10:44:19.110273Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-539912533838677065, trigger=click)
2026-04-20T10:44:19.155111Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-539912533838677065, trigger=click)
2026-04-20T10:44:19.832463Z INFO screenpipe_engine::meeting_detector: meeting v2: Confirming -> Active (app=Slack, signals=2, browser=false)
2026-04-20T10:44:19.834928Z INFO screenpipe_engine::meeting_detector: meeting v2: meeting started (id=3, app=Slack, title=None)
2026-04-20T10:44:27.766267Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5412550087722993493, trigger=visual_change)
2026-04-20T10:44:39.799864Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5412550087722993493, trigger=visual_change)
2026-04-20T10:44:57.832108Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5412550087722993493, trigger=visual_change)
2026-04-20T10:44:57.940548Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5412550087722993493, trigger=click)
2026-04-20T10:44:58.605782Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5412550087722993493, trigger=click)
2026-04-20T10:44:58.637243Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5412550087722993493, trigger=click)
2026-04-20T10:45:00.807501Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5412550087722993493, trigger=visual_change)
2026-04-20T10:45:16.166619Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8594311245071571574, trigger=visual_change)
2026-04-20T10:45:56.391618Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3919322128440588956, trigger=click)
2026-04-20T10:45:56.468127Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=click)
2026-04-20T10:46:03.056730Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8594311245071571574, trigger=visual_change)
2026-04-20T10:46:12.195973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8594311245071571574, trigger=visual_change)
2026-04-20T10:46:17.958643Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=click)
2026-04-20T10:46:18.011452Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3919322128440588956, trigger=click)
2026-04-20T10:47:02.211065Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5662459752758049610, trigger=click)
2026-04-20T10:47:02.257675Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5662459752758049610, trigger=click)
2026-04-20T10:47:05.697096Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5662459752758049610, trigger=click)
2026-04-20T10:47:06.566076Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5662459752758049610, trigger=click)
2026-04-20T10:47:07.827281Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping captur...
|
iTerm2
|
screenpipe"
|
NULL
|
54445
|
|
Last login: Mon Apr 20 10:16:41 on ttys009
Poetry Last login: Mon Apr 20 10:16:41 on ttys009
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sp-start
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-04-20T10:17:08.672567Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
accessibility: ok
2026-04-20T10:17:08.735636Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-20T10:17:09.168849Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-20T10:17:09.170474Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-20T10:17:09.170918Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-20T10:17:09.203704Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-04-20T10:17:09.203780Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-20T10:17:09.203962Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-04-20T10:17:09.203976Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-04-20T10:17:09.203934Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-04-20T10:17:09.204030Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-04-20T10:17:09.203954Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-04-20T10:17:09.215020Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-04-20T10:17:09.220127Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-04-20T10:17:09.220306Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-04-20T10:17:09.220863Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-04-20T10:17:09.221034Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-04-20T10:17:09.221177Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-04-20T10:17:09.221820Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-04-20T10:17:09.221839Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
│ audio disabled │ true │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
2026-04-20T10:17:09.223448Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
│ ignored windows │ ["Boosteroid"] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
2026-04-20T10:17:09.227535Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
│ encrypt secrets │ disabled │
│ retention days │ 14 │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ disabled │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-04-20T10:17:09.240088Z INFO screenpipe: starting UI event capture
2026-04-20T10:17:09.253668Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-04-20T10:17:09.267973Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-04-20T10:17:09.268072Z INFO screenpipe_engine::ui_recorder: UI recording session started: f196d677-2a10-4dec-93e7-9dd9048a1d8e
2026-04-20T10:17:09.268173Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-19 07:17:09.268169 UTC to 2026-04-20 07:17:09.268169 UTC)
2026-04-20T10:17:09.268665Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-04-20T10:17:09.275204Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-04-20T10:17:09.280547Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-04-20T10:17:09.284876Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)
2026-04-20T10:17:09.284906Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)
2026-04-20T10:17:09.284942Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)
2026-04-20T10:17:09.316523Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 2 (3008x1253)
2026-04-20T10:17:09.316557Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)
2026-04-20T10:17:09.316583Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (event-driven via CGDisplayRegisterReconfigurationCallback, 60s backstop poll)
2026-04-20T10:17:09.316603Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 2 (device: monitor_2)
2026-04-20T10:17:09.975374Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 1 excluded)
2026-04-20T10:17:10.050320Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 1 excluded)
2026-04-20T10:17:10.109022Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=52481, dur=72ms
2026-04-20T10:17:10.197530Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 2: frame_id=52482, dur=98ms
2026-04-20T10:17:10.926185Z WARN sqlx::query: summary="SELECT f.id, f.timestamp, f.offset_index, …" db.statement="\n\nSELECT\n f.id,\n f.timestamp,\n f.offset_index,\n COALESCE(\n SUBSTR(f.full_text, 1, 200),\n SUBSTR(f.accessibility_text, 1, 200),\n (\n SELECT\n SUBSTR(ot.text, 1, 200)\n FROM\n ocr_text ot\n WHERE\n ot.frame_id = f.id\n LIMIT\n 1\n )\n ) as text,\n COALESCE(\n f.app_name,\n (\n SELECT\n ot.app_name\n FROM\n ocr_text ot\n WHERE\n ot.frame_id = f.id\n LIMIT\n 1\n )\n ) as app_name,\n COALESCE(\n f.window_name,\n (\n SELECT\n ot.window_name\n FROM\n ocr_text ot\n WHERE\n ot.frame_id = f.id\n LIMIT\n 1\n )\n ) as window_name,\n COALESCE(vc.device_name, f.device_name) as screen_device,\n COALESCE(vc.file_path, f.snapshot_path) as video_path,\n COALESCE(vc.fps, 0.033) as chunk_fps,\n f.browser_url,\n f.machine_id\nFROM\n frames f\n LEFT JOIN video_chunks vc ON f.video_chunk_id = vc.id\nWHERE\n f.timestamp >= ?1\n AND f.timestamp <= ?2\n AND COALESCE(vc.file_path, f.snapshot_path, '') NOT LIKE 'cloud://%'\nORDER BY\n f.timestamp DESC,\n f.offset_index DESC\nLIMIT\n 10000\n" rows_affected=0 rows_returned=974 elapsed=1.657379083s
2026-04-20T10:17:10.928810Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 974 frame entries, coverage from 2026-04-19 07:17:09.268169 UTC
2026-04-20T10:17:36.605708Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5556097941235749601, trigger=visual_change)
2026-04-20T10:17:41.066595Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5621935701738529327, trigger=click)
2026-04-20T10:17:41.100078Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5621935701738529327, trigger=click)
2026-04-20T10:17:46.116429Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5621935701738529327, trigger=click)
2026-04-20T10:17:46.148269Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5621935701738529327, trigger=click)
2026-04-20T10:18:13.360099Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=145 elapsed=4.153777416s
2026-04-20T10:18:13.360276Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 145 eligible frames
2026-04-20T10:18:18.937138Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 90 frames, 15.2MB → 6.4MB (2.4x), 90 JPEGs deleted
2026-04-20T10:18:22.014745Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 53 frames, 9.4MB → 2.0MB (4.6x), 53 JPEGs deleted
2026-04-20T10:18:56.067965Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1399546062189663050, trigger=visual_change)
2026-04-20T10:18:56.859644Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1399546062189663050, trigger=click)
2026-04-20T10:18:59.894779Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=[CREDIT_CARD], trigger=click)
2026-04-20T10:19:12.201247Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5621935701738529327, trigger=visual_change)
2026-04-20T10:21:22.063263Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=1399546062189663050, trigger=visual_change)
2026-04-20T10:21:35.657143Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5007800743451086391, trigger=visual_change)
2026-04-20T10:21:35.899663Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5007800743451086391, trigger=visual_change)
2026-04-20T10:21:38.094166Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5007800743451086391, trigger=click)
2026-04-20T10:21:38.149655Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5007800743451086391, trigger=click)
2026-04-20T10:21:38.947641Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5007800743451086391, trigger=click)
2026-04-20T10:21:38.991934Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5007800743451086391, trigger=click)
2026-04-20T10:23:28.231526Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=2 elapsed=6.103025792s
2026-04-20T10:23:28.232845Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
2026-04-20T10:25:18.292352Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=133505750984754566, trigger=click)
2026-04-20T10:25:33.154631Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:25:33.227754Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:25:34.786990Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:25:36.507114Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:25:36.556707Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:25:37.741060Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:25:39.466175Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:25:39.547293Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:02.072902Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=2625703622302799632, trigger=visual_change)
2026-04-20T10:26:05.038754Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8395829747728977847, trigger=visual_change)
2026-04-20T10:26:10.400901Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:10.459718Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:14.431146Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:26:17.437868Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:26:35.296162Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:35.339241Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:37.233387Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:26:37.326557Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:00.031681Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:00.067495Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:01.950749Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:02.027316Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:13.045805Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:13.116607Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:15.272022Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:15.311144Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:17.880859Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:17.952143Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:21.645455Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:21.706889Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:36.304603Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:36.380537Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:37.368951Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:37.459157Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:40.420505Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:40.469217Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:27:41.179717Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:28:00.173884Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:00.251737Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:01.241028Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:01.288002Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:02.985445Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:03.078932Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:04.726087Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:04.770305Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:18.186992Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:18.272249Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:28.337807Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 14 eligible frames
2026-04-20T10:28:29.608030Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 8 frames, 0.7MB → 0.5MB (1.4x), 8 JPEGs deleted
2026-04-20T10:28:30.685845Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 6 frames, 1.2MB → 0.7MB (1.8x), 6 JPEGs deleted
2026-04-20T10:28:49.943477Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:49.984595Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:50.611087Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:50.628530Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:54.853245Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:28:57.739309Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:29:03.177558Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:03.231322Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:03.857989Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:29:04.993121Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:05.032838Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:06.923393Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:29:07.890421Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:07.960410Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:08.812301Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:26.656780Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:26.775833Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:27.602791Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:27.639583Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:34.060332Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2389025338591748766, trigger=visual_change)
2026-04-20T10:29:37.050675Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2389025338591748766, trigger=click)
2026-04-20T10:29:37.085946Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2389025338591748766, trigger=click)
2026-04-20T10:29:40.501396Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-2389025338591748766, trigger=visual_change)
2026-04-20T10:29:43.751715Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:29:43.843367Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:44.468329Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:46.931137Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:49.616400Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:49.692474Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:50.298335Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=visual_change)
2026-04-20T10:29:51.348506Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=588687738866170495, trigger=click)
2026-04-20T10:29:51.436585Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=588687738866170495, trigger=click)
2026-04-20T10:30:12.602958Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=8200761366188343712, trigger=click)
2026-04-20T10:31:17.535958Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5166044279428207369, trigger=click)
2026-04-20T10:31:18.668547Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5166044279428207369, trigger=visual_change)
2026-04-20T10:31:19.518515Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5166044279428207369, trigger=click)
2026-04-20T10:31:19.681398Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5166044279428207369, trigger=click)
2026-04-20T10:31:21.044436Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5166044279428207369, trigger=click)
2026-04-20T10:31:21.086009Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5166044279428207369, trigger=click)
2026-04-20T10:31:21.680970Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5166044279428207369, trigger=visual_change)
2026-04-20T10:32:05.428125Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=visual_change)
2026-04-20T10:32:07.004460Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:07.088172Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:08.380482Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=visual_change)
2026-04-20T10:32:11.588306Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:11.689288Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:12.318265Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:12.381069Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:20.139124Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:20.175356Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:23.490851Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:27.111949Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=visual_change)
2026-04-20T10:32:37.220458Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:37.303363Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:38.554270Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:38.619116Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-6999516640019587394, trigger=click)
2026-04-20T10:32:44.030894Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:32:44.098803Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:32:45.233990Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:32:45.238569Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:32:48.884987Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=visual_change)
2026-04-20T10:32:51.832116Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:51.860110Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:53.754008Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:53.796899Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:55.635715Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:55.675828Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:57.084341Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:57.128626Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:58.841455Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:32:58.882031Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:00.965217Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:01.040922Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:02.591751Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:02.633245Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:03.324241Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:03.353493Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:05.802391Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:05.849275Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3564605891676988236, trigger=click)
2026-04-20T10:33:06.911518Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3564605891676988236, trigger=visual_change)
2026-04-20T10:33:14.484135Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:33:14.530843Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:33:34.189406Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:33:34.205308Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=94 elapsed=3.603974333s
2026-04-20T10:33:34.205567Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 94 eligible frames
2026-04-20T10:33:34.240884Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=visual_change)
2026-04-20T10:33:35.686677Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:33:35.780825Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=click)
2026-04-20T10:33:37.134576Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 8.0MB → 4.4MB (1.8x), 38 JPEGs deleted
2026-04-20T10:33:40.850354Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 54 frames, 7.9MB → 3.4MB (2.3x), 54 JPEGs deleted
2026-04-20T10:33:55.372436Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-4838132251856752988, trigger=visual_change)
2026-04-20T10:35:01.169212Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:01.245363Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:02.392419Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:35:05.029174Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:05.073174Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:07.222477Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:07.329020Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:08.707660Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:35:27.744689Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:35:27.812062Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:18.265456Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:18.437457Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:23.437791Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:23.487637Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:24.299771Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:36:25.135894Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:25.257064Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:36:27.317393Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:36:50.815358Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:04.728644Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4435744464912499495, trigger=visual_change)
2026-04-20T10:38:07.749721Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-4435744464912499495, trigger=visual_change)
2026-04-20T10:38:13.318000Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:38:13.969769Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:38:14.800566Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:14.834512Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:17.252696Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:17.328544Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:24.892322Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:24.943640Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:35.256001Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:35.322251Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:38:40.980335Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 88 eligible frames
2026-04-20T10:38:43.345927Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 39 frames, 6.6MB → 2.6MB (2.5x), 39 JPEGs deleted
2026-04-20T10:38:46.544495Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 47 frames, 7.3MB → 2.8MB (2.6x), 47 JPEGs deleted
2026-04-20T10:39:26.663352Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:39:29.597544Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=click)
2026-04-20T10:39:29.637879Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7711588205739105973, trigger=click)
2026-04-20T10:40:07.495065Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=7711588205739105973, trigger=visual_change)
2026-04-20T10:40:11.064923Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=visual_change)
2026-04-20T10:40:11.431065Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3919322128440588956, trigger=click)
2026-04-20T10:40:12.068565Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=click)
2026-04-20T10:40:12.110719Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3919322128440588956, trigger=click)
2026-04-20T10:40:14.179306Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=click)
2026-04-20T10:40:14.239361Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3919322128440588956, trigger=click)
2026-04-20T10:41:20.489623Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=click)
2026-04-20T10:43:48.184341Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=82 elapsed=1.63218175s
2026-04-20T10:43:48.184571Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 82 eligible frames
2026-04-20T10:43:50.234957Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 30 frames, 2.2MB → 0.1MB (16.1x), 30 JPEGs deleted
2026-04-20T10:43:55.342383Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 50 frames, 7.9MB → 3.2MB (2.5x), 50 JPEGs deleted
2026-04-20T10:44:06.225390Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4079037146782974603, trigger=click)
2026-04-20T10:44:14.808445Z INFO screenpipe_engine::meeting_detector: meeting v2: Idle -> Confirming (app=Slack, signals=2)
2026-04-20T10:44:19.110273Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-539912533838677065, trigger=click)
2026-04-20T10:44:19.155111Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-539912533838677065, trigger=click)
2026-04-20T10:44:19.832463Z INFO screenpipe_engine::meeting_detector: meeting v2: Confirming -> Active (app=Slack, signals=2, browser=false)
2026-04-20T10:44:19.834928Z INFO screenpipe_engine::meeting_detector: meeting v2: meeting started (id=3, app=Slack, title=None)
2026-04-20T10:44:27.766267Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5412550087722993493, trigger=visual_change)
2026-04-20T10:44:39.799864Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5412550087722993493, trigger=visual_change)
2026-04-20T10:44:57.832108Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5412550087722993493, trigger=visual_change)
2026-04-20T10:44:57.940548Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5412550087722993493, trigger=click)
2026-04-20T10:44:58.605782Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5412550087722993493, trigger=click)
2026-04-20T10:44:58.637243Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5412550087722993493, trigger=click)
2026-04-20T10:45:00.807501Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5412550087722993493, trigger=visual_change)
2026-04-20T10:45:16.166619Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8594311245071571574, trigger=visual_change)
2026-04-20T10:45:56.391618Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3919322128440588956, trigger=click)
2026-04-20T10:45:56.468127Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=click)
2026-04-20T10:46:03.056730Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8594311245071571574, trigger=visual_change)
2026-04-20T10:46:12.195973Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8594311245071571574, trigger=visual_change)
2026-04-20T10:46:17.958643Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=3919322128440588956, trigger=click)
2026-04-20T10:46:18.011452Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=3919322128440588956, trigger=click)
2026-04-20T10:47:02.211065Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5662459752758049610, trigger=click)
2026-04-20T10:47:02.257675Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5662459752758049610, trigger=click)
2026-04-20T10:47:05.697096Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5662459752758049610, trigger=click)
2026-04-20T10:47:06.566076Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5662459752758049610, trigger=click)
2026-04-20T10:47:07.827281Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping captur...
|
iTerm2
|
screenpipe"
|
NULL
|
54470
|