|
40740
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
40740
|
|
40741
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40741
|
|
40742
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40742
|
|
40743
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40743
|
|
40744
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40744
|
|
40745
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40745
|
|
40746
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40746
|
|
40747
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40747
|
|
40748
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40748
|
|
40749
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40749
|
|
40750
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40750
|
|
40751
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
cp
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
cp...
|
iTerm2
|
cp
|
NULL
|
40751
|
|
40752
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40752
|
|
40753
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40753
|
|
40754
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40754
|
|
40755
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40755
|
|
40756
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40756
|
|
40757
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40757
|
|
40758
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40758
|
|
40759
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40759
|
|
40760
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40760
|
|
40761
|
idx_elements_source_role_text|elements|CREATE INDE idx_elements_source_role_text|elements|CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL
idx_elements_frame_source_role|elements|CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL
idx_frames_timestamp|frames|CREATE INDEX idx_frames_timestamp ON frames(timestamp)
idx_frames_video_chunk_id|frames|CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id)
idx_frames_timestamp_device|frames|CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name)
idx_frames_snapshot_path|frames|CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL
idx_frames_cloud_blob_id|frames|CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL
idx_frames_sync_id|frames|CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL
idx_frames_elements_ref_frame_id|frames|CREATE INDEX idx_frames_elements_ref_frame_id
ON frames(elements_ref_frame_id)
WHERE elements_ref_frame_id IS NOT NULL
idx_meetings_start|meetings|CREATE INDEX idx_meetings_start ON meetings(meeting_start)
idx_meetings_end|meetings|CREATE INDEX idx_meetings_end ON meetings(meeting_end)
idx_memories_created_at|memories|CREATE INDEX idx_memories_created_at ON memories(created_at)
idx_memories_importance|memories|CREATE INDEX idx_memories_importance ON memories(importance DESC)
idx_memories_source|memories|CREATE INDEX idx_memories_source ON memories(source)
idx_memories_frame_id|memories|CREATE INDEX idx_memories_frame_id ON memories(frame_id)
idx_ocr_text_frame_id|ocr_text|CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id)
idx_ocr_text_frame_app_window|ocr_text|CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name)
idx_ocr_text_length|ocr_text|CREATE INDEX idx_ocr_text_length ON ocr_text (text_length)
idx_ocr_text_sync_id|ocr_text|CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL
idx_pipe_exec_name_status|pipe_executions|CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status)
idx_pipe_exec_running|pipe_executions|CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running'
idx_pipe_exec_name_time|pipe_executions|CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC)
idx_ui_events_timestamp|ui_events|CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp)
idx_ui_events_event_type|ui_events|CREATE INDEX idx_ui_events_event_type ON ui_events(event_type)
idx_ui_events_app_name|ui_events|CREATE INDEX idx_ui_events_app_name ON ui_events(app_name)
idx_ui_events_session_id|ui_events|CREATE INDEX idx_ui_events_session_id ON ui_events(session_id)
idx_ui_events_frame_id|ui_events|CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id)
idx_ui_events_sync_id|ui_events|CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id)
idx_ui_events_synced_at|ui_events|CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at)
idx_ui_events_unsynced|ui_events|CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL
idx_video_chunks_device_name|video_chunks|CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name)
idx_video_chunks_device_name_id|video_chunks|CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC)
idx_video_chunks_cloud_blob_id|video_chunks|CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL
idx_vision_tags_vision_id|vision_tags|CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id)
idx_vision_tags_tag_id|vision_tags|CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'elements_fts' as name, COUNT(*) as rows FROM elements_fts
UNION ALL SELECT 'frames_fts', COUNT(*) FROM frames_fts
UNION ALL SELECT 'ui_events_fts', COUNT(*) FROM ui_events_fts
UNION ALL SELECT 'audio_transcriptions_fts', COUNT(*) FROM audio_transcriptions_fts;"
elements_fts|2595462
frames_fts|40394
ui_events_fts|51394
audio_transcriptions_fts|3
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements_fts_data|49417125
frames_fts_data|46211048
ui_events_fts_data|1661147
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name, SUM(payload) as bytes
FROM dbstat
WHERE name IN ('frames', 'ui_events', 'elements', 'elements_fts_data','frames_fts_data','ui_events_fts_data')
GROUP BY name;"
elements|334884969
elements_fts_data|49472096
frames|689381789
frames_fts_data|46270876
ui_events|8354906
ui_events_fts_data|1663427
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT sql FROM sqlite_master WHERE type='table' AND name IN ('elements_fts','frames_fts','ui_events_fts','memories_fts') ORDER BY name;"
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
id UNINDEXED,
tokenize='unicode61'
UW PICO 5.09 New Buffer
[ Read 1 line ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
)
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls
config.json db.sqlite-shm screenpipe.2026-04-09.0.log screenpipe.2026-04-13.0.log screenpipe.2026-04-16.0.log
data db.sqlite-wal screenpipe.2026-04-11.0.log screenpipe.2026-04-14.0.log
db.sqlite pipes screenpipe.2026-04-12.0.log screenpipe.2026-04-15.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5632584
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 18:54 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2875498496 16 Apr 19:16 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7004032 16 Apr 19:19 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 177594 16 Apr 19:19 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 0 16 Apr 19:19 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5637600
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2877014016 16 Apr 19:21 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 7807432 16 Apr 19:25 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 178896 16 Apr 19:24 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ screenpipe_sync.sh
zsh: command not found: screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo $HOME
/Users/lukas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll /Users/lukas/.screenpipe
total 5646848
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2880700416 16 Apr 19:31 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 8602592 16 Apr 19:36 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
UW PICO 5.09 New Buffer
[ Read 25 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 180718 16 Apr 19:34 screenpipe.2026-04-16.0.log
-rw-r--r-- 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
zsh: permission denied: /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ chmod +x ~/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 5640560
drwxr-xr-x 17 lukas staff 544 16 Apr 19:19 .
drwx------+ 91 lukas staff 2912 16 Apr 19:24 ..
-rw-r--r--@ 1 lukas staff 8196 16 Apr 17:07 .DS_Store
-rw-r--r-- 1 lukas staff 358 16 Apr 16:49 config.json
drwxr-xr-x 6 lukas staff 192 15 Apr 14:53 data
-rw-r--r-- 1 lukas staff 2882723840 16 Apr 19:36 db.sqlite
-rw-r--r-- 1 lukas staff 65536 16 Apr 18:33 db.sqlite-shm
-rw-r--r-- 1 lukas staff 3930512 16 Apr 19:37 db.sqlite-wal
drwxr-xr-x 9 lukas staff 288 15 Apr 14:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 95425 11 Apr 23:14 screenpipe.2026-04-11.0.log
-rw-r--r-- 1 lukas staff 72332 12 Apr 23:55 screenpipe.2026-04-12.0.log
-rw-r--r-- 1 lukas staff 71555 13 Apr 19:50 screenpipe.2026-04-13.0.log
-rw-r--r-- 1 lukas staff 162389 14 Apr 19:31 screenpipe.2026-04-14.0.log
-rw-r--r-- 1 lukas staff 175763 15 Apr 18:55 screenpipe.2026-04-15.0.log
-rw-r--r-- 1 lukas staff 181112 16 Apr 19:36 screenpipe.2026-04-16.0.log
-rwxr-xr-x 1 lukas staff 666 16 Apr 19:20 screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
ERROR: NAS not mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh
OK: NAS mounted
OK: Source DB exists
2.7G /Users/lukas/.screenpipe/db.sqlite
INFO: archive.db does not exist yet - will be created on first sync
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE=$(date -v-1d +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Yesterday: $DATE"
Yesterday: 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE_TODAY=$(date +%Y-%m-%d)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Today: $DATE_TODAY"
Today: 2026-04-16
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE'"
1 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' elements for ' || '$DATE' FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$DATE');"
886876 elements for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' ui_events for ' || '$DATE' FROM ui_events WHERE date(timestamp) = '$DATE';"
14453 ui_events for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' meetings for ' || '$DATE' FROM meetings WHERE date(meeting_start) = '$DATE';"
0 meetings for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) || ' frames for ' || '$DATE' FROM frames WHERE date(timestamp) = '$DATE';"
12874 frames for 2026-04-15
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ NAS_DB="/Volumes/Test/screenpipe/archive.db"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DB_SRC="$HOME/.screenpipe/db.sqlite"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ DATE="2026-04-15"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 1: creating archive.db and syncing frames..."
Stage 1: creating archive.db and syncing frames...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames WHERE 0;
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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40761
|
|
40762
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
40762
|
|
40763
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
40763
|
|
40764
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
40764
|
|
40811
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40811
|
|
40812
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40812
|
|
40813
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40813
|
|
40852
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40852
|
|
40853
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40853
|
|
40854
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40854
|
|
40855
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40855
|
|
40856
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40856
|
|
40857
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
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
-zsh...
|
iTerm2
|
-zsh
|
NULL
|
40857
|
|
40858
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 3: syncing remaining tables..."
echo -n "ui_events... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
INSERT OR IGNORE INTO nas.ui_events SELECT * FROM main.ui_events WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
echo -n "ocr_text... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
echo -n "video_chunks... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
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) = '$DATE' AND video_chunk_id IS NOT NULL);
DETACH nas;
EOF
echo -n "meetings... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
INSERT OR IGNORE INTO nas.meetings SELECT * FROM main.meetings WHERE date(meeting_start) = '$DATE';
DETACH nas;
EOF
echo "Verification:"
sqlite3 "$NAS_DB" "
SELECT 'frames' as tbl, COUNT(*) as rows FROM frames
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ui_events', COUNT(*) FROM ui_events
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text
UNION ALL SELECT 'video_chunks', COUNT(*) FROM video_chunks
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings;"
du -sh "$NAS_DB"
Stage 3: syncing remaining tables...
ui_events...
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
40858
|
|
40859
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 3: syncing remaining tables..."
echo -n "ui_events... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
INSERT OR IGNORE INTO nas.ui_events SELECT * FROM main.ui_events WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
echo -n "ocr_text... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
echo -n "video_chunks... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
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) = '$DATE' AND video_chunk_id IS NOT NULL);
DETACH nas;
EOF
echo -n "meetings... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
INSERT OR IGNORE INTO nas.meetings SELECT * FROM main.meetings WHERE date(meeting_start) = '$DATE';
DETACH nas;
EOF
echo "Verification:"
sqlite3 "$NAS_DB" "
SELECT 'frames' as tbl, COUNT(*) as rows FROM frames
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ui_events', COUNT(*) FROM ui_events
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text
UNION ALL SELECT 'video_chunks', COUNT(*) FROM video_chunks
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings;"
du -sh "$NAS_DB"
Stage 3: syncing remaining tables...
ui_events...
sqlite3 "$DB_SRC" <<<"" 0.02s user 0.05s system 1% cpu 5.578 total
ocr_text...
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
40859
|
|
40860
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 3: syncing remaining tables..."
echo -n "ui_events... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
INSERT OR IGNORE INTO nas.ui_events SELECT * FROM main.ui_events WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
echo -n "ocr_text... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
echo -n "video_chunks... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
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) = '$DATE' AND video_chunk_id IS NOT NULL);
DETACH nas;
EOF
echo -n "meetings... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
INSERT OR IGNORE INTO nas.meetings SELECT * FROM main.meetings WHERE date(meeting_start) = '$DATE';
DETACH nas;
EOF
echo "Verification:"
sqlite3 "$NAS_DB" "
SELECT 'frames' as tbl, COUNT(*) as rows FROM frames
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ui_events', COUNT(*) FROM ui_events
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text
UNION ALL SELECT 'video_chunks', COUNT(*) FROM video_chunks
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings;"
du -sh "$NAS_DB"
Stage 3: syncing remaining tables...
ui_events...
sqlite3 "$DB_SRC" <<<"" 0.02s user 0.05s system 1% cpu 5.578 total
ocr_text...
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
40860
|
|
40861
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 3: syncing remaining tables..."
echo -n "ui_events... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
INSERT OR IGNORE INTO nas.ui_events SELECT * FROM main.ui_events WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
echo -n "ocr_text... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
echo -n "video_chunks... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
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) = '$DATE' AND video_chunk_id IS NOT NULL);
DETACH nas;
EOF
echo -n "meetings... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
INSERT OR IGNORE INTO nas.meetings SELECT * FROM main.meetings WHERE date(meeting_start) = '$DATE';
DETACH nas;
EOF
echo "Verification:"
sqlite3 "$NAS_DB" "
SELECT 'frames' as tbl, COUNT(*) as rows FROM frames
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ui_events', COUNT(*) FROM ui_events
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text
UNION ALL SELECT 'video_chunks', COUNT(*) FROM video_chunks
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings;"
du -sh "$NAS_DB"
Stage 3: syncing remaining tables...
ui_events...
sqlite3 "$DB_SRC" <<<"" 0.02s user 0.05s system 1% cpu 5.578 total
ocr_text...
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
40861
|
|
40870
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 3: syncing remaining tables..."
echo -n "ui_events... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
INSERT OR IGNORE INTO nas.ui_events SELECT * FROM main.ui_events WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
echo -n "ocr_text... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
echo -n "video_chunks... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
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) = '$DATE' AND video_chunk_id IS NOT NULL);
DETACH nas;
EOF
echo -n "meetings... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
INSERT OR IGNORE INTO nas.meetings SELECT * FROM main.meetings WHERE date(meeting_start) = '$DATE';
DETACH nas;
EOF
echo "Verification:"
sqlite3 "$NAS_DB" "
SELECT 'frames' as tbl, COUNT(*) as rows FROM frames
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ui_events', COUNT(*) FROM ui_events
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text
UNION ALL SELECT 'video_chunks', COUNT(*) FROM video_chunks
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings;"
du -sh "$NAS_DB"
Stage 3: syncing remaining tables...
ui_events...
sqlite3 "$DB_SRC" <<<"" 0.02s user 0.05s system 1% cpu 5.578 total
ocr_text...
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
40870
|
|
40871
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 3: syncing remaining tables..."
echo -n "ui_events... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
INSERT OR IGNORE INTO nas.ui_events SELECT * FROM main.ui_events WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
echo -n "ocr_text... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
echo -n "video_chunks... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
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) = '$DATE' AND video_chunk_id IS NOT NULL);
DETACH nas;
EOF
echo -n "meetings... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
INSERT OR IGNORE INTO nas.meetings SELECT * FROM main.meetings WHERE date(meeting_start) = '$DATE';
DETACH nas;
EOF
echo "Verification:"
sqlite3 "$NAS_DB" "
SELECT 'frames' as tbl, COUNT(*) as rows FROM frames
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ui_events', COUNT(*) FROM ui_events
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text
UNION ALL SELECT 'video_chunks', COUNT(*) FROM video_chunks
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings;"
du -sh "$NAS_DB"
Stage 3: syncing remaining tables...
ui_events...
sqlite3 "$DB_SRC" <<<"" 0.02s user 0.05s system 1% cpu 5.578 total
ocr_text...
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
40871
|
|
40872
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 3: syncing remaining tables..."
echo -n "ui_events... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
INSERT OR IGNORE INTO nas.ui_events SELECT * FROM main.ui_events WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
echo -n "ocr_text... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
echo -n "video_chunks... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
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) = '$DATE' AND video_chunk_id IS NOT NULL);
DETACH nas;
EOF
echo -n "meetings... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
INSERT OR IGNORE INTO nas.meetings SELECT * FROM main.meetings WHERE date(meeting_start) = '$DATE';
DETACH nas;
EOF
echo "Verification:"
sqlite3 "$NAS_DB" "
SELECT 'frames' as tbl, COUNT(*) as rows FROM frames
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ui_events', COUNT(*) FROM ui_events
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text
UNION ALL SELECT 'video_chunks', COUNT(*) FROM video_chunks
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings;"
du -sh "$NAS_DB"
Stage 3: syncing remaining tables...
ui_events...
sqlite3 "$DB_SRC" <<<"" 0.02s user 0.05s system 1% cpu 5.578 total
ocr_text...
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
40872
|
|
40877
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 3: syncing remaining tables..."
echo -n "ui_events... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
INSERT OR IGNORE INTO nas.ui_events SELECT * FROM main.ui_events WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
echo -n "ocr_text... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
echo -n "video_chunks... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
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) = '$DATE' AND video_chunk_id IS NOT NULL);
DETACH nas;
EOF
echo -n "meetings... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
INSERT OR IGNORE INTO nas.meetings SELECT * FROM main.meetings WHERE date(meeting_start) = '$DATE';
DETACH nas;
EOF
echo "Verification:"
sqlite3 "$NAS_DB" "
SELECT 'frames' as tbl, COUNT(*) as rows FROM frames
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ui_events', COUNT(*) FROM ui_events
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text
UNION ALL SELECT 'video_chunks', COUNT(*) FROM video_chunks
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings;"
du -sh "$NAS_DB"
Stage 3: syncing remaining tables...
ui_events...
sqlite3 "$DB_SRC" <<<"" 0.02s user 0.05s system 1% cpu 5.578 total
ocr_text...
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
40877
|
|
40878
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 3: syncing remaining tables..."
echo -n "ui_events... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
INSERT OR IGNORE INTO nas.ui_events SELECT * FROM main.ui_events WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
echo -n "ocr_text... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
echo -n "video_chunks... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
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) = '$DATE' AND video_chunk_id IS NOT NULL);
DETACH nas;
EOF
echo -n "meetings... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
INSERT OR IGNORE INTO nas.meetings SELECT * FROM main.meetings WHERE date(meeting_start) = '$DATE';
DETACH nas;
EOF
echo "Verification:"
sqlite3 "$NAS_DB" "
SELECT 'frames' as tbl, COUNT(*) as rows FROM frames
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ui_events', COUNT(*) FROM ui_events
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text
UNION ALL SELECT 'video_chunks', COUNT(*) FROM video_chunks
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings;"
du -sh "$NAS_DB"
Stage 3: syncing remaining tables...
ui_events...
sqlite3 "$DB_SRC" <<<"" 0.02s user 0.05s system 1% cpu 5.578 total
ocr_text...
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
40878
|
|
40896
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 3: syncing remaining tables..."
echo -n "ui_events... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
INSERT OR IGNORE INTO nas.ui_events SELECT * FROM main.ui_events WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
echo -n "ocr_text... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
echo -n "video_chunks... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
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) = '$DATE' AND video_chunk_id IS NOT NULL);
DETACH nas;
EOF
echo -n "meetings... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
INSERT OR IGNORE INTO nas.meetings SELECT * FROM main.meetings WHERE date(meeting_start) = '$DATE';
DETACH nas;
EOF
echo "Verification:"
sqlite3 "$NAS_DB" "
SELECT 'frames' as tbl, COUNT(*) as rows FROM frames
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ui_events', COUNT(*) FROM ui_events
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text
UNION ALL SELECT 'video_chunks', COUNT(*) FROM video_chunks
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings;"
du -sh "$NAS_DB"
Stage 3: syncing remaining tables...
ui_events...
sqlite3 "$DB_SRC" <<<"" 0.02s user 0.05s system 1% cpu 5.578 total
ocr_text...
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
40896
|
|
40897
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 3: syncing remaining tables..."
echo -n "ui_events... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
INSERT OR IGNORE INTO nas.ui_events SELECT * FROM main.ui_events WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
echo -n "ocr_text... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
echo -n "video_chunks... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
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) = '$DATE' AND video_chunk_id IS NOT NULL);
DETACH nas;
EOF
echo -n "meetings... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
INSERT OR IGNORE INTO nas.meetings SELECT * FROM main.meetings WHERE date(meeting_start) = '$DATE';
DETACH nas;
EOF
echo "Verification:"
sqlite3 "$NAS_DB" "
SELECT 'frames' as tbl, COUNT(*) as rows FROM frames
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ui_events', COUNT(*) FROM ui_events
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text
UNION ALL SELECT 'video_chunks', COUNT(*) FROM video_chunks
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings;"
du -sh "$NAS_DB"
Stage 3: syncing remaining tables...
ui_events...
sqlite3 "$DB_SRC" <<<"" 0.02s user 0.05s system 1% cpu 5.578 total
ocr_text...
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
40897
|
|
40898
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 3: syncing remaining tables..."
echo -n "ui_events... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
INSERT OR IGNORE INTO nas.ui_events SELECT * FROM main.ui_events WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
echo -n "ocr_text... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
echo -n "video_chunks... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
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) = '$DATE' AND video_chunk_id IS NOT NULL);
DETACH nas;
EOF
echo -n "meetings... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
INSERT OR IGNORE INTO nas.meetings SELECT * FROM main.meetings WHERE date(meeting_start) = '$DATE';
DETACH nas;
EOF
echo "Verification:"
sqlite3 "$NAS_DB" "
SELECT 'frames' as tbl, COUNT(*) as rows FROM frames
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ui_events', COUNT(*) FROM ui_events
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text
UNION ALL SELECT 'video_chunks', COUNT(*) FROM video_chunks
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings;"
du -sh "$NAS_DB"
Stage 3: syncing remaining tables...
ui_events...
sqlite3 "$DB_SRC" <<<"" 0.02s user 0.05s system 1% cpu 5.578 total
ocr_text...
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
40898
|
|
40899
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 3: syncing remaining tables..."
echo -n "ui_events... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
INSERT OR IGNORE INTO nas.ui_events SELECT * FROM main.ui_events WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
echo -n "ocr_text... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
echo -n "video_chunks... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
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) = '$DATE' AND video_chunk_id IS NOT NULL);
DETACH nas;
EOF
echo -n "meetings... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
INSERT OR IGNORE INTO nas.meetings SELECT * FROM main.meetings WHERE date(meeting_start) = '$DATE';
DETACH nas;
EOF
echo "Verification:"
sqlite3 "$NAS_DB" "
SELECT 'frames' as tbl, COUNT(*) as rows FROM frames
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ui_events', COUNT(*) FROM ui_events
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text
UNION ALL SELECT 'video_chunks', COUNT(*) FROM video_chunks
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings;"
du -sh "$NAS_DB"
Stage 3: syncing remaining tables...
ui_events...
sqlite3 "$DB_SRC" <<<"" 0.02s user 0.05s system 1% cpu 5.578 total
ocr_text...
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
40899
|
|
40908
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 3: syncing remaining tables..."
echo -n "ui_events... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
INSERT OR IGNORE INTO nas.ui_events SELECT * FROM main.ui_events WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
echo -n "ocr_text... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
echo -n "video_chunks... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
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) = '$DATE' AND video_chunk_id IS NOT NULL);
DETACH nas;
EOF
echo -n "meetings... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
INSERT OR IGNORE INTO nas.meetings SELECT * FROM main.meetings WHERE date(meeting_start) = '$DATE';
DETACH nas;
EOF
echo "Verification:"
sqlite3 "$NAS_DB" "
SELECT 'frames' as tbl, COUNT(*) as rows FROM frames
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ui_events', COUNT(*) FROM ui_events
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text
UNION ALL SELECT 'video_chunks', COUNT(*) FROM video_chunks
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings;"
du -sh "$NAS_DB"
Stage 3: syncing remaining tables...
ui_events...
sqlite3 "$DB_SRC" <<<"" 0.02s user 0.05s system 1% cpu 5.578 total
ocr_text...
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
40908
|
|
40910
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 3: syncing remaining tables..."
echo -n "ui_events... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
INSERT OR IGNORE INTO nas.ui_events SELECT * FROM main.ui_events WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
echo -n "ocr_text... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
echo -n "video_chunks... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
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) = '$DATE' AND video_chunk_id IS NOT NULL);
DETACH nas;
EOF
echo -n "meetings... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
INSERT OR IGNORE INTO nas.meetings SELECT * FROM main.meetings WHERE date(meeting_start) = '$DATE';
DETACH nas;
EOF
echo "Verification:"
sqlite3 "$NAS_DB" "
SELECT 'frames' as tbl, COUNT(*) as rows FROM frames
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ui_events', COUNT(*) FROM ui_events
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text
UNION ALL SELECT 'video_chunks', COUNT(*) FROM video_chunks
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings;"
du -sh "$NAS_DB"
Stage 3: syncing remaining tables...
ui_events...
sqlite3 "$DB_SRC" <<<"" 0.02s user 0.05s system 1% cpu 5.578 total
ocr_text...
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
40910
|
|
40911
|
CREATE INDEX IF NOT EXISTS nas.idx_frames_timestam 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);
INSERT OR IGNORE INTO nas.frames
SELECT * FROM main.frames WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
sqlite3 "$DB_SRC" <<<"" 0.44s user 1.41s system 0% cpu 3:28.33 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Verifying..."
Verifying...
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' frames in archive' FROM frames;"
12874 frames in archive
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh "$NAS_DB"
110M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Write test: create a 100MB test file locally and copy to NAS, measure speed
dd if=/dev/urandom of=/tmp/test_100mb.bin bs=1m count=100
time cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
rm /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin
zsh: command not found: #
100+0 records in
100+0 records out
104857600 bytes transferred in 0.265359 secs (395153735 bytes/sec)
cp /tmp/test_100mb.bin /Volumes/Test/screenpipe/test_100mb.bin 0.00s user 0.17s system 1% cpu 9.476 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # First sync the current partial archive.db to NAS
time rsync -av --progress \
~/.screenpipe/archive_build.db \
/Volumes/Test/screenpipe/archive.db
zsh: command not found: #
building file list ...
rsync: link_stat "/Users/lukas/.screenpipe/archive_build.db" failed: No such file or directory (2)
0 files to consider
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/4ff29661-3588-11ef-9513-e2437461156c/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
rsync -av --progress ~/.screenpipe/archive_build.db 0.00s user 0.01s system 20% cpu 0.079 total
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 2: inserting elements (886k rows) directly to NAS..."
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
sqlite3 "$NAS_DB" "SELECT COUNT(*) || ' elements in archive' FROM elements;"
du -sh "$NAS_DB"
Stage 2: inserting elements (886k rows) directly to NAS...
sqlite3 "$DB_SRC" <<<"" 0.92s user 1.12s system 1% cpu 2:42.08 total
886876 elements in archive
197M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ echo "Stage 3: syncing remaining tables..."
echo -n "ui_events... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events WHERE 0;
INSERT OR IGNORE INTO nas.ui_events SELECT * FROM main.ui_events WHERE date(timestamp) = '$DATE';
DETACH nas;
EOF
echo -n "ocr_text... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text WHERE 0;
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) = '$DATE';
DETACH nas;
EOF
echo -n "video_chunks... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks WHERE 0;
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) = '$DATE' AND video_chunk_id IS NOT NULL);
DETACH nas;
EOF
echo -n "meetings... "
time sqlite3 "$DB_SRC" <<EOF
ATTACH '$NAS_DB' AS nas;
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings WHERE 0;
INSERT OR IGNORE INTO nas.meetings SELECT * FROM main.meetings WHERE date(meeting_start) = '$DATE';
DETACH nas;
EOF
echo "Verification:"
sqlite3 "$NAS_DB" "
SELECT 'frames' as tbl, COUNT(*) as rows FROM frames
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ui_events', COUNT(*) FROM ui_events
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text
UNION ALL SELECT 'video_chunks', COUNT(*) FROM video_chunks
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings;"
du -sh "$NAS_DB"
Stage 3: syncing remaining tables...
ui_events...
sqlite3 "$DB_SRC" <<<"" 0.02s user 0.05s system 1% cpu 5.578 total
ocr_text...
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
sqlite3
Close Tab
✳ Review screenpipe usage and Boosteroid integration (node)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
40911
|