|
40377
|
work='cd ~/jiminny/infrastructure/dev/docker & work='cd ~/jiminny/infrastructure/dev/docker && docker compose up'
xd='make docker-xdebug-disable'
xe='make docker-xdebug-enable'
zp='nano ~/.zprofile'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano zp
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano ~/.zprofile
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ source ~/.zprofile
Poetry could not find a pyproject.toml file in /Users/lukas/.screenpipe or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= datetime('now', '-1 hour');"
1722
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= datetime('now', '-1 hour');"
1722|2026-04-16T07:04:01.107353+00:00|2026-04-16T13:36:06.286533+00:00
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT MIN(timestamp) FROM frames WHERE timestamp >= datetime('now', '-2 hours');"
2026-04-16T06:12:46.590663+00:00
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ps aux | grep screenpipe | grep -v grep
lukas 21754 6.1 3.7 412825680 628320 s009 S+ 5:21pm 11:48.74 /Users/lukas/.npm/_npx/21722/lib/node_modules/screenpipe/node_modules/@screenpipe/cli-darwin-arm64/bin/screenpipe record --disable-audio --ignored-windows Boosteroid
lukas 21722 0.0 0.1 411289504 21712 s009 S+ 5:21pm 0:00.08 node /Users/lukas/.nvm/versions/node/v14.15.4/bin/npx screenpipe@latest record --disable-audio --ignored-windows Boosteroid
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT MIN(timestamp) FROM frames WHERE timestamp >= datetime('now', '-20 minutes');"
2026-04-16T06:12:46.590663+00:00
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= '2026-04-16T17:21:45';"
0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= '2026-04-16T17:20:45';"
0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= '2026-04-16T14:20:45';"
0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= '2026-04-16T10:20:45';"
1720
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ zp
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ zp
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ alias sp-status
sp-status='curl -s [URL_WITH_CREDENTIALS] ~/.screenpipe $ zp
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT name FROM sqlite_master WHERE type='table'
ORDER BY name;" | while read t; do
count=$(sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM $t;")
echo "$t: $count"
done
_sqlx_migrations: 74
audio_chunks: 90
audio_tags: 0
audio_transcriptions: 3
audio_transcriptions_fts: 3
audio_transcriptions_fts_config: 1
audio_transcriptions_fts_data: 5
audio_transcriptions_fts_docsize: 3
audio_transcriptions_fts_idx: 3
elements: 2583644
elements_fts: 2583644
elements_fts_config: 1
elements_fts_data: 12471
elements_fts_docsize: 2575943
elements_fts_idx: 5265
frames: 40262
frames_fts: 40240
frames_fts_config: 1
frames_fts_content: 40240
frames_fts_data: 11680
frames_fts_docsize: 40240
frames_fts_idx: 7447
meetings: 2
memories: 0
memories_fts: 0
memories_fts_config: 1
memories_fts_data: 2
memories_fts_docsize: 0
memories_fts_idx: 0
ocr_text: 32365
pipe_executions: 0
pipe_scheduler_state: 0
secrets: 1
speaker_embeddings: 3
speakers: 3
sqlite_sequence: 9
tags: 0
ui_events: 50996
ui_events_fts: 50996
ui_events_fts_config: 1
ui_events_fts_data: 468
ui_events_fts_docsize: 50996
ui_events_fts_idx: 154
video_chunks: 829
vision_tags: 0
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM frames WHERE timestamp >= datetime('now', '-1 day');"
sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM ui_events WHERE timestamp >= datetime('now', '-1 day');"
sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE timestamp >= datetime('now', '-1 day'));"
21496
24765
1446831
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
6.7G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.0G /Users/lukas/.screenpipe/data
2.7G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
232K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema meetings"
CREATE TABLE meetings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
meeting_start TEXT NOT NULL,
meeting_end TEXT,
meeting_app TEXT NOT NULL,
title TEXT,
attendees TEXT,
detection_source TEXT NOT NULL DEFAULT 'app',
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
, note TEXT);
CREATE INDEX idx_meetings_start ON meetings(meeting_start);
CREATE INDEX idx_meetings_end ON meetings(meeting_end);
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
1|2026-04-16T07:33:44.830Z|2026-04-16T07:44:33.417Z|Slack|||ui_scan|2026-04-16T07:33:44.830Z|## typed during meeting
ststg
vstg
docker ps
--report-id
--result-id
```
```
2|2026-04-16T10:50:05.968Z|2026-04-16T10:59:54.482Z|Slack|||ui_scan|2026-04-16T10:50:05.968Z|
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
|
40377
|
|
40417
|
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;"
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
|
40417
|
|
40661
|
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 $
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
|
40661
|
|
40683
|
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
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
|
40683
|
|
40684
|
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
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
|
40684
|
|
40685
|
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
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
|
40685
|
|
40686
|
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
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
|
40686
|
|
40687
|
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
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
|
40687
|
|
40709
|
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
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
|
40709
|
|
40710
|
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
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
|
40710
|
|
40711
|
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
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
|
40711
|
|
40712
|
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
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
|
40712
|
|
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
|
|
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
|
|
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
|
|
50160
|
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...
zsh: terminated sqlite3 "$DB_SRC" <<<""
sqlite3 "$DB_SRC" <<<"" 1.36s user 5.25s system 1% cpu 9:57.77 total
video_chunks... sqlite3 "$DB_SRC" <<<"" 0.04s user 0.06s system 8% cpu 1.162 total
meetings... sqlite3 "$DB_SRC" <<<"" 0.00s user 0.01s system 1% cpu 0.454 total
Verification:
frames|12874
^CError: stepping, interrupted (9)
Program interrupted.
199M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
8.0G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.6G /Users/lukas/.screenpipe/data
3.4G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
232K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.7G /Users/lukas/.screenpipe/data
3.6G /Users/lukas/.screenpipe/db.sqlite
128K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl, SUM(payload) as bytes FROM dbstat WHERE name = 'frames'
UNION ALL SELECT 'elements', SUM(payload) FROM dbstat WHERE name = 'elements'
UNION ALL SELECT 'ui_events', SUM(payload) FROM dbstat WHERE name = 'ui_events'
UNION ALL SELECT 'ocr_text', SUM(payload) FROM dbstat WHERE name = 'ocr_text';"
frames|1004938379
elements|465966705
ui_events|9804622
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
sqlite3
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
ec2-user@ip-10-20-6-111:~ (nc)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
50160
|
|
50161
|
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...
zsh: terminated sqlite3 "$DB_SRC" <<<""
sqlite3 "$DB_SRC" <<<"" 1.36s user 5.25s system 1% cpu 9:57.77 total
video_chunks... sqlite3 "$DB_SRC" <<<"" 0.04s user 0.06s system 8% cpu 1.162 total
meetings... sqlite3 "$DB_SRC" <<<"" 0.00s user 0.01s system 1% cpu 0.454 total
Verification:
frames|12874
^CError: stepping, interrupted (9)
Program interrupted.
199M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
8.0G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.6G /Users/lukas/.screenpipe/data
3.4G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
232K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.7G /Users/lukas/.screenpipe/data
3.6G /Users/lukas/.screenpipe/db.sqlite
128K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl, SUM(payload) as bytes FROM dbstat WHERE name = 'frames'
UNION ALL SELECT 'elements', SUM(payload) FROM dbstat WHERE name = 'elements'
UNION ALL SELECT 'ui_events', SUM(payload) FROM dbstat WHERE name = 'ui_events'
UNION ALL SELECT 'ocr_text', SUM(payload) FROM dbstat WHERE name = 'ocr_text';"
frames|1004938379
elements|465966705
ui_events|9804622
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
sqlite3
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
ec2-user@ip-10-20-6-111:~ (nc)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
50161
|
|
50178
|
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...
zsh: terminated sqlite3 "$DB_SRC" <<<""
sqlite3 "$DB_SRC" <<<"" 1.36s user 5.25s system 1% cpu 9:57.77 total
video_chunks... sqlite3 "$DB_SRC" <<<"" 0.04s user 0.06s system 8% cpu 1.162 total
meetings... sqlite3 "$DB_SRC" <<<"" 0.00s user 0.01s system 1% cpu 0.454 total
Verification:
frames|12874
^CError: stepping, interrupted (9)
Program interrupted.
199M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
8.0G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.6G /Users/lukas/.screenpipe/data
3.4G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
232K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.7G /Users/lukas/.screenpipe/data
3.6G /Users/lukas/.screenpipe/db.sqlite
128K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl, SUM(payload) as bytes FROM dbstat WHERE name = 'frames'
UNION ALL SELECT 'elements', SUM(payload) FROM dbstat WHERE name = 'elements'
UNION ALL SELECT 'ui_events', SUM(payload) FROM dbstat WHERE name = 'ui_events'
UNION ALL SELECT 'ocr_text', SUM(payload) FROM dbstat WHERE name = 'ocr_text';"
frames|1004938379
elements|465966705
ui_events|9804622
ocr_text|1443084543
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl,
COUNT(*) as total_rows,
SUM(payload) as total_bytes,
SUM(payload)/COUNT(*) as bytes_per_row,
-- estimate yesterday's rows
(SELECT COUNT(*) FROM frames WHERE date(timestamp) = '2026-04-15') as day_rows
FROM dbstat d, frames f
WHERE d.name = 'frames'
UNION ALL
SELECT 'elements',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '2026-04-15'))
FROM dbstat d, elements e
WHERE d.name = 'elements'
UNION ALL
SELECT 'ui_events',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '2026-04-15')
FROM dbstat d, ui_events e
WHERE d.name = 'ui_events';"
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
sqlite3
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
ec2-user@ip-10-20-6-111:~ (nc)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
50178
|
|
50179
|
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...
zsh: terminated sqlite3 "$DB_SRC" <<<""
sqlite3 "$DB_SRC" <<<"" 1.36s user 5.25s system 1% cpu 9:57.77 total
video_chunks... sqlite3 "$DB_SRC" <<<"" 0.04s user 0.06s system 8% cpu 1.162 total
meetings... sqlite3 "$DB_SRC" <<<"" 0.00s user 0.01s system 1% cpu 0.454 total
Verification:
frames|12874
^CError: stepping, interrupted (9)
Program interrupted.
199M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
8.0G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.6G /Users/lukas/.screenpipe/data
3.4G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
232K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.7G /Users/lukas/.screenpipe/data
3.6G /Users/lukas/.screenpipe/db.sqlite
128K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl, SUM(payload) as bytes FROM dbstat WHERE name = 'frames'
UNION ALL SELECT 'elements', SUM(payload) FROM dbstat WHERE name = 'elements'
UNION ALL SELECT 'ui_events', SUM(payload) FROM dbstat WHERE name = 'ui_events'
UNION ALL SELECT 'ocr_text', SUM(payload) FROM dbstat WHERE name = 'ocr_text';"
frames|1004938379
elements|465966705
ui_events|9804622
ocr_text|1443084543
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl,
COUNT(*) as total_rows,
SUM(payload) as total_bytes,
SUM(payload)/COUNT(*) as bytes_per_row,
-- estimate yesterday's rows
(SELECT COUNT(*) FROM frames WHERE date(timestamp) = '2026-04-15') as day_rows
FROM dbstat d, frames f
WHERE d.name = 'frames'
UNION ALL
SELECT 'elements',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '2026-04-15'))
FROM dbstat d, elements e
WHERE d.name = 'elements'
UNION ALL
SELECT 'ui_events',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '2026-04-15')
FROM dbstat d, ui_events e
WHERE d.name = 'ui_events';"
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
sqlite3
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
ec2-user@ip-10-20-6-111:~ (nc)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
50179
|
|
50180
|
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...
zsh: terminated sqlite3 "$DB_SRC" <<<""
sqlite3 "$DB_SRC" <<<"" 1.36s user 5.25s system 1% cpu 9:57.77 total
video_chunks... sqlite3 "$DB_SRC" <<<"" 0.04s user 0.06s system 8% cpu 1.162 total
meetings... sqlite3 "$DB_SRC" <<<"" 0.00s user 0.01s system 1% cpu 0.454 total
Verification:
frames|12874
^CError: stepping, interrupted (9)
Program interrupted.
199M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
8.0G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.6G /Users/lukas/.screenpipe/data
3.4G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
232K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.7G /Users/lukas/.screenpipe/data
3.6G /Users/lukas/.screenpipe/db.sqlite
128K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl, SUM(payload) as bytes FROM dbstat WHERE name = 'frames'
UNION ALL SELECT 'elements', SUM(payload) FROM dbstat WHERE name = 'elements'
UNION ALL SELECT 'ui_events', SUM(payload) FROM dbstat WHERE name = 'ui_events'
UNION ALL SELECT 'ocr_text', SUM(payload) FROM dbstat WHERE name = 'ocr_text';"
frames|1004938379
elements|465966705
ui_events|9804622
ocr_text|1443084543
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl,
COUNT(*) as total_rows,
SUM(payload) as total_bytes,
SUM(payload)/COUNT(*) as bytes_per_row,
-- estimate yesterday's rows
(SELECT COUNT(*) FROM frames WHERE date(timestamp) = '2026-04-15') as day_rows
FROM dbstat d, frames f
WHERE d.name = 'frames'
UNION ALL
SELECT 'elements',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '2026-04-15'))
FROM dbstat d, elements e
WHERE d.name = 'elements'
UNION ALL
SELECT 'ui_events',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '2026-04-15')
FROM dbstat d, ui_events e
WHERE d.name = 'ui_events';"
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
sqlite3
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
ec2-user@ip-10-20-6-111:~ (nc)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
50180
|
|
50181
|
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...
zsh: terminated sqlite3 "$DB_SRC" <<<""
sqlite3 "$DB_SRC" <<<"" 1.36s user 5.25s system 1% cpu 9:57.77 total
video_chunks... sqlite3 "$DB_SRC" <<<"" 0.04s user 0.06s system 8% cpu 1.162 total
meetings... sqlite3 "$DB_SRC" <<<"" 0.00s user 0.01s system 1% cpu 0.454 total
Verification:
frames|12874
^CError: stepping, interrupted (9)
Program interrupted.
199M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
8.0G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.6G /Users/lukas/.screenpipe/data
3.4G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
232K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.7G /Users/lukas/.screenpipe/data
3.6G /Users/lukas/.screenpipe/db.sqlite
128K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl, SUM(payload) as bytes FROM dbstat WHERE name = 'frames'
UNION ALL SELECT 'elements', SUM(payload) FROM dbstat WHERE name = 'elements'
UNION ALL SELECT 'ui_events', SUM(payload) FROM dbstat WHERE name = 'ui_events'
UNION ALL SELECT 'ocr_text', SUM(payload) FROM dbstat WHERE name = 'ocr_text';"
frames|1004938379
elements|465966705
ui_events|9804622
ocr_text|1443084543
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl,
COUNT(*) as total_rows,
SUM(payload) as total_bytes,
SUM(payload)/COUNT(*) as bytes_per_row,
-- estimate yesterday's rows
(SELECT COUNT(*) FROM frames WHERE date(timestamp) = '2026-04-15') as day_rows
FROM dbstat d, frames f
WHERE d.name = 'frames'
UNION ALL
SELECT 'elements',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '2026-04-15'))
FROM dbstat d, elements e
WHERE d.name = 'elements'
UNION ALL
SELECT 'ui_events',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '2026-04-15')
FROM dbstat d, ui_events e
WHERE d.name = 'ui_events';"
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
sqlite3
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
ec2-user@ip-10-20-6-111:~ (nc)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
50181
|
|
50182
|
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...
zsh: terminated sqlite3 "$DB_SRC" <<<""
sqlite3 "$DB_SRC" <<<"" 1.36s user 5.25s system 1% cpu 9:57.77 total
video_chunks... sqlite3 "$DB_SRC" <<<"" 0.04s user 0.06s system 8% cpu 1.162 total
meetings... sqlite3 "$DB_SRC" <<<"" 0.00s user 0.01s system 1% cpu 0.454 total
Verification:
frames|12874
^CError: stepping, interrupted (9)
Program interrupted.
199M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
8.0G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.6G /Users/lukas/.screenpipe/data
3.4G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
232K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.7G /Users/lukas/.screenpipe/data
3.6G /Users/lukas/.screenpipe/db.sqlite
128K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl, SUM(payload) as bytes FROM dbstat WHERE name = 'frames'
UNION ALL SELECT 'elements', SUM(payload) FROM dbstat WHERE name = 'elements'
UNION ALL SELECT 'ui_events', SUM(payload) FROM dbstat WHERE name = 'ui_events'
UNION ALL SELECT 'ocr_text', SUM(payload) FROM dbstat WHERE name = 'ocr_text';"
frames|1004938379
elements|465966705
ui_events|9804622
ocr_text|1443084543
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl,
COUNT(*) as total_rows,
SUM(payload) as total_bytes,
SUM(payload)/COUNT(*) as bytes_per_row,
-- estimate yesterday's rows
(SELECT COUNT(*) FROM frames WHERE date(timestamp) = '2026-04-15') as day_rows
FROM dbstat d, frames f
WHERE d.name = 'frames'
UNION ALL
SELECT 'elements',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '2026-04-15'))
FROM dbstat d, elements e
WHERE d.name = 'elements'
UNION ALL
SELECT 'ui_events',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '2026-04-15')
FROM dbstat d, ui_events e
WHERE d.name = 'ui_events';"
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
sqlite3
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
ec2-user@ip-10-20-6-111:~ (nc)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
50182
|
|
50183
|
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...
zsh: terminated sqlite3 "$DB_SRC" <<<""
sqlite3 "$DB_SRC" <<<"" 1.36s user 5.25s system 1% cpu 9:57.77 total
video_chunks... sqlite3 "$DB_SRC" <<<"" 0.04s user 0.06s system 8% cpu 1.162 total
meetings... sqlite3 "$DB_SRC" <<<"" 0.00s user 0.01s system 1% cpu 0.454 total
Verification:
frames|12874
^CError: stepping, interrupted (9)
Program interrupted.
199M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
8.0G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.6G /Users/lukas/.screenpipe/data
3.4G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
232K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.7G /Users/lukas/.screenpipe/data
3.6G /Users/lukas/.screenpipe/db.sqlite
128K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl, SUM(payload) as bytes FROM dbstat WHERE name = 'frames'
UNION ALL SELECT 'elements', SUM(payload) FROM dbstat WHERE name = 'elements'
UNION ALL SELECT 'ui_events', SUM(payload) FROM dbstat WHERE name = 'ui_events'
UNION ALL SELECT 'ocr_text', SUM(payload) FROM dbstat WHERE name = 'ocr_text';"
frames|1004938379
elements|465966705
ui_events|9804622
ocr_text|1443084543
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl,
COUNT(*) as total_rows,
SUM(payload) as total_bytes,
SUM(payload)/COUNT(*) as bytes_per_row,
-- estimate yesterday's rows
(SELECT COUNT(*) FROM frames WHERE date(timestamp) = '2026-04-15') as day_rows
FROM dbstat d, frames f
WHERE d.name = 'frames'
UNION ALL
SELECT 'elements',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '2026-04-15'))
FROM dbstat d, elements e
WHERE d.name = 'elements'
UNION ALL
SELECT 'ui_events',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '2026-04-15')
FROM dbstat d, ui_events e
WHERE d.name = 'ui_events';"
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
sqlite3
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
ec2-user@ip-10-20-6-111:~ (nc)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
50183
|
|
50184
|
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...
zsh: terminated sqlite3 "$DB_SRC" <<<""
sqlite3 "$DB_SRC" <<<"" 1.36s user 5.25s system 1% cpu 9:57.77 total
video_chunks... sqlite3 "$DB_SRC" <<<"" 0.04s user 0.06s system 8% cpu 1.162 total
meetings... sqlite3 "$DB_SRC" <<<"" 0.00s user 0.01s system 1% cpu 0.454 total
Verification:
frames|12874
^CError: stepping, interrupted (9)
Program interrupted.
199M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
8.0G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.6G /Users/lukas/.screenpipe/data
3.4G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
232K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.7G /Users/lukas/.screenpipe/data
3.6G /Users/lukas/.screenpipe/db.sqlite
128K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl, SUM(payload) as bytes FROM dbstat WHERE name = 'frames'
UNION ALL SELECT 'elements', SUM(payload) FROM dbstat WHERE name = 'elements'
UNION ALL SELECT 'ui_events', SUM(payload) FROM dbstat WHERE name = 'ui_events'
UNION ALL SELECT 'ocr_text', SUM(payload) FROM dbstat WHERE name = 'ocr_text';"
frames|1004938379
elements|465966705
ui_events|9804622
ocr_text|1443084543
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl,
COUNT(*) as total_rows,
SUM(payload) as total_bytes,
SUM(payload)/COUNT(*) as bytes_per_row,
-- estimate yesterday's rows
(SELECT COUNT(*) FROM frames WHERE date(timestamp) = '2026-04-15') as day_rows
FROM dbstat d, frames f
WHERE d.name = 'frames'
UNION ALL
SELECT 'elements',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '2026-04-15'))
FROM dbstat d, elements e
WHERE d.name = 'elements'
UNION ALL
SELECT 'ui_events',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '2026-04-15')
FROM dbstat d, ui_events e
WHERE d.name = 'ui_events';"
20
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
sqlite3
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
ec2-user@ip-10-20-6-111:~ (nc)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
50184
|
|
50185
|
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...
zsh: terminated sqlite3 "$DB_SRC" <<<""
sqlite3 "$DB_SRC" <<<"" 1.36s user 5.25s system 1% cpu 9:57.77 total
video_chunks... sqlite3 "$DB_SRC" <<<"" 0.04s user 0.06s system 8% cpu 1.162 total
meetings... sqlite3 "$DB_SRC" <<<"" 0.00s user 0.01s system 1% cpu 0.454 total
Verification:
frames|12874
^CError: stepping, interrupted (9)
Program interrupted.
199M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
8.0G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.6G /Users/lukas/.screenpipe/data
3.4G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
232K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.7G /Users/lukas/.screenpipe/data
3.6G /Users/lukas/.screenpipe/db.sqlite
128K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl, SUM(payload) as bytes FROM dbstat WHERE name = 'frames'
UNION ALL SELECT 'elements', SUM(payload) FROM dbstat WHERE name = 'elements'
UNION ALL SELECT 'ui_events', SUM(payload) FROM dbstat WHERE name = 'ui_events'
UNION ALL SELECT 'ocr_text', SUM(payload) FROM dbstat WHERE name = 'ocr_text';"
frames|1004938379
elements|465966705
ui_events|9804622
ocr_text|1443084543
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl,
COUNT(*) as total_rows,
SUM(payload) as total_bytes,
SUM(payload)/COUNT(*) as bytes_per_row,
-- estimate yesterday's rows
(SELECT COUNT(*) FROM frames WHERE date(timestamp) = '2026-04-15') as day_rows
FROM dbstat d, frames f
WHERE d.name = 'frames'
UNION ALL
SELECT 'elements',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '2026-04-15'))
FROM dbstat d, elements e
WHERE d.name = 'elements'
UNION ALL
SELECT 'ui_events',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '2026-04-15')
FROM dbstat d, ui_events e
WHERE d.name = 'ui_events';"
20
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
sqlite3
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
ec2-user@ip-10-20-6-111:~ (nc)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
50185
|
|
50186
|
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...
zsh: terminated sqlite3 "$DB_SRC" <<<""
sqlite3 "$DB_SRC" <<<"" 1.36s user 5.25s system 1% cpu 9:57.77 total
video_chunks... sqlite3 "$DB_SRC" <<<"" 0.04s user 0.06s system 8% cpu 1.162 total
meetings... sqlite3 "$DB_SRC" <<<"" 0.00s user 0.01s system 1% cpu 0.454 total
Verification:
frames|12874
^CError: stepping, interrupted (9)
Program interrupted.
199M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
8.0G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.6G /Users/lukas/.screenpipe/data
3.4G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
232K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.7G /Users/lukas/.screenpipe/data
3.6G /Users/lukas/.screenpipe/db.sqlite
128K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl, SUM(payload) as bytes FROM dbstat WHERE name = 'frames'
UNION ALL SELECT 'elements', SUM(payload) FROM dbstat WHERE name = 'elements'
UNION ALL SELECT 'ui_events', SUM(payload) FROM dbstat WHERE name = 'ui_events'
UNION ALL SELECT 'ocr_text', SUM(payload) FROM dbstat WHERE name = 'ocr_text';"
frames|1004938379
elements|465966705
ui_events|9804622
ocr_text|1443084543
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl,
COUNT(*) as total_rows,
SUM(payload) as total_bytes,
SUM(payload)/COUNT(*) as bytes_per_row,
-- estimate yesterday's rows
(SELECT COUNT(*) FROM frames WHERE date(timestamp) = '2026-04-15') as day_rows
FROM dbstat d, frames f
WHERE d.name = 'frames'
UNION ALL
SELECT 'elements',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '2026-04-15'))
FROM dbstat d, elements e
WHERE d.name = 'elements'
UNION ALL
SELECT 'ui_events',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '2026-04-15')
FROM dbstat d, ui_events e
WHERE d.name = 'ui_events';"
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
sqlite3
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
ec2-user@ip-10-20-6-111:~ (nc)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
50186
|
|
50187
|
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...
zsh: terminated sqlite3 "$DB_SRC" <<<""
sqlite3 "$DB_SRC" <<<"" 1.36s user 5.25s system 1% cpu 9:57.77 total
video_chunks... sqlite3 "$DB_SRC" <<<"" 0.04s user 0.06s system 8% cpu 1.162 total
meetings... sqlite3 "$DB_SRC" <<<"" 0.00s user 0.01s system 1% cpu 0.454 total
Verification:
frames|12874
^CError: stepping, interrupted (9)
Program interrupted.
199M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
8.0G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.6G /Users/lukas/.screenpipe/data
3.4G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
232K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.7G /Users/lukas/.screenpipe/data
3.6G /Users/lukas/.screenpipe/db.sqlite
128K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl, SUM(payload) as bytes FROM dbstat WHERE name = 'frames'
UNION ALL SELECT 'elements', SUM(payload) FROM dbstat WHERE name = 'elements'
UNION ALL SELECT 'ui_events', SUM(payload) FROM dbstat WHERE name = 'ui_events'
UNION ALL SELECT 'ocr_text', SUM(payload) FROM dbstat WHERE name = 'ocr_text';"
frames|1004938379
elements|465966705
ui_events|9804622
ocr_text|1443084543
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl,
COUNT(*) as total_rows,
SUM(payload) as total_bytes,
SUM(payload)/COUNT(*) as bytes_per_row,
-- estimate yesterday's rows
(SELECT COUNT(*) FROM frames WHERE date(timestamp) = '2026-04-15') as day_rows
FROM dbstat d, frames f
WHERE d.name = 'frames'
UNION ALL
SELECT 'elements',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '2026-04-15'))
FROM dbstat d, elements e
WHERE d.name = 'elements'
UNION ALL
SELECT 'ui_events',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '2026-04-15')
FROM dbstat d, ui_events e
WHERE d.name = 'ui_events';"
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
sqlite3
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
ec2-user@ip-10-20-6-111:~ (nc)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
50187
|
|
50188
|
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...
zsh: terminated sqlite3 "$DB_SRC" <<<""
sqlite3 "$DB_SRC" <<<"" 1.36s user 5.25s system 1% cpu 9:57.77 total
video_chunks... sqlite3 "$DB_SRC" <<<"" 0.04s user 0.06s system 8% cpu 1.162 total
meetings... sqlite3 "$DB_SRC" <<<"" 0.00s user 0.01s system 1% cpu 0.454 total
Verification:
frames|12874
^CError: stepping, interrupted (9)
Program interrupted.
199M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
8.0G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.6G /Users/lukas/.screenpipe/data
3.4G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
232K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.7G /Users/lukas/.screenpipe/data
3.6G /Users/lukas/.screenpipe/db.sqlite
128K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl, SUM(payload) as bytes FROM dbstat WHERE name = 'frames'
UNION ALL SELECT 'elements', SUM(payload) FROM dbstat WHERE name = 'elements'
UNION ALL SELECT 'ui_events', SUM(payload) FROM dbstat WHERE name = 'ui_events'
UNION ALL SELECT 'ocr_text', SUM(payload) FROM dbstat WHERE name = 'ocr_text';"
frames|1004938379
elements|465966705
ui_events|9804622
ocr_text|1443084543
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl,
COUNT(*) as total_rows,
SUM(payload) as total_bytes,
SUM(payload)/COUNT(*) as bytes_per_row,
-- estimate yesterday's rows
(SELECT COUNT(*) FROM frames WHERE date(timestamp) = '2026-04-15') as day_rows
FROM dbstat d, frames f
WHERE d.name = 'frames'
UNION ALL
SELECT 'elements',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '2026-04-15'))
FROM dbstat d, elements e
WHERE d.name = 'elements'
UNION ALL
SELECT 'ui_events',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '2026-04-15')
FROM dbstat d, ui_events e
WHERE d.name = 'ui_events';"
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
sqlite3
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
ec2-user@ip-10-20-6-111:~ (nc)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
50188
|
|
50189
|
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...
zsh: terminated sqlite3 "$DB_SRC" <<<""
sqlite3 "$DB_SRC" <<<"" 1.36s user 5.25s system 1% cpu 9:57.77 total
video_chunks... sqlite3 "$DB_SRC" <<<"" 0.04s user 0.06s system 8% cpu 1.162 total
meetings... sqlite3 "$DB_SRC" <<<"" 0.00s user 0.01s system 1% cpu 0.454 total
Verification:
frames|12874
^CError: stepping, interrupted (9)
Program interrupted.
199M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
8.0G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.6G /Users/lukas/.screenpipe/data
3.4G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
232K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.7G /Users/lukas/.screenpipe/data
3.6G /Users/lukas/.screenpipe/db.sqlite
128K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl, SUM(payload) as bytes FROM dbstat WHERE name = 'frames'
UNION ALL SELECT 'elements', SUM(payload) FROM dbstat WHERE name = 'elements'
UNION ALL SELECT 'ui_events', SUM(payload) FROM dbstat WHERE name = 'ui_events'
UNION ALL SELECT 'ocr_text', SUM(payload) FROM dbstat WHERE name = 'ocr_text';"
frames|1004938379
elements|465966705
ui_events|9804622
ocr_text|1443084543
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl,
COUNT(*) as total_rows,
SUM(payload) as total_bytes,
SUM(payload)/COUNT(*) as bytes_per_row,
-- estimate yesterday's rows
(SELECT COUNT(*) FROM frames WHERE date(timestamp) = '2026-04-15') as day_rows
FROM dbstat d, frames f
WHERE d.name = 'frames'
UNION ALL
SELECT 'elements',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '2026-04-15'))
FROM dbstat d, elements e
WHERE d.name = 'elements'
UNION ALL
SELECT 'ui_events',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '2026-04-15')
FROM dbstat d, ui_events e
WHERE d.name = 'ui_events';"
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
sqlite3
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
ec2-user@ip-10-20-6-111:~ (nc)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
50189
|
|
50190
|
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...
zsh: terminated sqlite3 "$DB_SRC" <<<""
sqlite3 "$DB_SRC" <<<"" 1.36s user 5.25s system 1% cpu 9:57.77 total
video_chunks... sqlite3 "$DB_SRC" <<<"" 0.04s user 0.06s system 8% cpu 1.162 total
meetings... sqlite3 "$DB_SRC" <<<"" 0.00s user 0.01s system 1% cpu 0.454 total
Verification:
frames|12874
^CError: stepping, interrupted (9)
Program interrupted.
199M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
8.0G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.6G /Users/lukas/.screenpipe/data
3.4G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
232K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.7G /Users/lukas/.screenpipe/data
3.6G /Users/lukas/.screenpipe/db.sqlite
128K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl, SUM(payload) as bytes FROM dbstat WHERE name = 'frames'
UNION ALL SELECT 'elements', SUM(payload) FROM dbstat WHERE name = 'elements'
UNION ALL SELECT 'ui_events', SUM(payload) FROM dbstat WHERE name = 'ui_events'
UNION ALL SELECT 'ocr_text', SUM(payload) FROM dbstat WHERE name = 'ocr_text';"
frames|1004938379
elements|465966705
ui_events|9804622
ocr_text|1443084543
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl,
COUNT(*) as total_rows,
SUM(payload) as total_bytes,
SUM(payload)/COUNT(*) as bytes_per_row,
-- estimate yesterday's rows
(SELECT COUNT(*) FROM frames WHERE date(timestamp) = '2026-04-15') as day_rows
FROM dbstat d, frames f
WHERE d.name = 'frames'
UNION ALL
SELECT 'elements',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '2026-04-15'))
FROM dbstat d, elements e
WHERE d.name = 'elements'
UNION ALL
SELECT 'ui_events',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '2026-04-15')
FROM dbstat d, ui_events e
WHERE d.name = 'ui_events';"
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
sqlite3
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
ec2-user@ip-10-20-6-111:~ (nc)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
50190
|
|
50191
|
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...
zsh: terminated sqlite3 "$DB_SRC" <<<""
sqlite3 "$DB_SRC" <<<"" 1.36s user 5.25s system 1% cpu 9:57.77 total
video_chunks... sqlite3 "$DB_SRC" <<<"" 0.04s user 0.06s system 8% cpu 1.162 total
meetings... sqlite3 "$DB_SRC" <<<"" 0.00s user 0.01s system 1% cpu 0.454 total
Verification:
frames|12874
^CError: stepping, interrupted (9)
Program interrupted.
199M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
8.0G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.6G /Users/lukas/.screenpipe/data
3.4G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
232K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.7G /Users/lukas/.screenpipe/data
3.6G /Users/lukas/.screenpipe/db.sqlite
128K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl, SUM(payload) as bytes FROM dbstat WHERE name = 'frames'
UNION ALL SELECT 'elements', SUM(payload) FROM dbstat WHERE name = 'elements'
UNION ALL SELECT 'ui_events', SUM(payload) FROM dbstat WHERE name = 'ui_events'
UNION ALL SELECT 'ocr_text', SUM(payload) FROM dbstat WHERE name = 'ocr_text';"
frames|1004938379
elements|465966705
ui_events|9804622
ocr_text|1443084543
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl,
COUNT(*) as total_rows,
SUM(payload) as total_bytes,
SUM(payload)/COUNT(*) as bytes_per_row,
-- estimate yesterday's rows
(SELECT COUNT(*) FROM frames WHERE date(timestamp) = '2026-04-15') as day_rows
FROM dbstat d, frames f
WHERE d.name = 'frames'
UNION ALL
SELECT 'elements',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '2026-04-15'))
FROM dbstat d, elements e
WHERE d.name = 'elements'
UNION ALL
SELECT 'ui_events',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '2026-04-15')
FROM dbstat d, ui_events e
WHERE d.name = 'ui_events';"
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
sqlite3
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
ec2-user@ip-10-20-6-111:~ (nc)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
50191
|
|
50204
|
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...
zsh: terminated sqlite3 "$DB_SRC" <<<""
sqlite3 "$DB_SRC" <<<"" 1.36s user 5.25s system 1% cpu 9:57.77 total
video_chunks... sqlite3 "$DB_SRC" <<<"" 0.04s user 0.06s system 8% cpu 1.162 total
meetings... sqlite3 "$DB_SRC" <<<"" 0.00s user 0.01s system 1% cpu 0.454 total
Verification:
frames|12874
^CError: stepping, interrupted (9)
Program interrupted.
199M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
8.0G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.6G /Users/lukas/.screenpipe/data
3.4G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
232K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.7G /Users/lukas/.screenpipe/data
3.6G /Users/lukas/.screenpipe/db.sqlite
128K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl, SUM(payload) as bytes FROM dbstat WHERE name = 'frames'
UNION ALL SELECT 'elements', SUM(payload) FROM dbstat WHERE name = 'elements'
UNION ALL SELECT 'ui_events', SUM(payload) FROM dbstat WHERE name = 'ui_events'
UNION ALL SELECT 'ocr_text', SUM(payload) FROM dbstat WHERE name = 'ocr_text';"
frames|1004938379
elements|465966705
ui_events|9804622
ocr_text|1443084543
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl,
COUNT(*) as total_rows,
SUM(payload) as total_bytes,
SUM(payload)/COUNT(*) as bytes_per_row,
-- estimate yesterday's rows
(SELECT COUNT(*) FROM frames WHERE date(timestamp) = '2026-04-15') as day_rows
FROM dbstat d, frames f
WHERE d.name = 'frames'
UNION ALL
SELECT 'elements',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '2026-04-15'))
FROM dbstat d, elements e
WHERE d.name = 'elements'
UNION ALL
SELECT 'ui_events',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '2026-04-15')
FROM dbstat d, ui_events e
WHERE d.name = 'ui_events';"
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
sqlite3
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
ec2-user@ip-10-20-6-111:~ (nc)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
50204
|
|
50205
|
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...
zsh: terminated sqlite3 "$DB_SRC" <<<""
sqlite3 "$DB_SRC" <<<"" 1.36s user 5.25s system 1% cpu 9:57.77 total
video_chunks... sqlite3 "$DB_SRC" <<<"" 0.04s user 0.06s system 8% cpu 1.162 total
meetings... sqlite3 "$DB_SRC" <<<"" 0.00s user 0.01s system 1% cpu 0.454 total
Verification:
frames|12874
^CError: stepping, interrupted (9)
Program interrupted.
199M /Volumes/Test/screenpipe/archive.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
8.0G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.6G /Users/lukas/.screenpipe/data
3.4G /Users/lukas/.screenpipe/db.sqlite
64K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
232K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
132K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe/*
4.0K /Users/lukas/.screenpipe/config.json
4.7G /Users/lukas/.screenpipe/data
3.6G /Users/lukas/.screenpipe/db.sqlite
128K /Users/lukas/.screenpipe/db.sqlite-shm
16M /Users/lukas/.screenpipe/db.sqlite-wal
36K /Users/lukas/.screenpipe/pipes
132K /Users/lukas/.screenpipe/screenpipe.2026-04-09.0.log
96K /Users/lukas/.screenpipe/screenpipe.2026-04-11.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-12.0.log
72K /Users/lukas/.screenpipe/screenpipe.2026-04-13.0.log
160K /Users/lukas/.screenpipe/screenpipe.2026-04-14.0.log
172K /Users/lukas/.screenpipe/screenpipe.2026-04-15.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-16.0.log
196K /Users/lukas/.screenpipe/screenpipe.2026-04-17.0.log
4.0K /Users/lukas/.screenpipe/screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl, SUM(payload) as bytes FROM dbstat WHERE name = 'frames'
UNION ALL SELECT 'elements', SUM(payload) FROM dbstat WHERE name = 'elements'
UNION ALL SELECT 'ui_events', SUM(payload) FROM dbstat WHERE name = 'ui_events'
UNION ALL SELECT 'ocr_text', SUM(payload) FROM dbstat WHERE name = 'ocr_text';"
frames|1004938379
elements|465966705
ui_events|9804622
ocr_text|1443084543
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT
'frames' as tbl,
COUNT(*) as total_rows,
SUM(payload) as total_bytes,
SUM(payload)/COUNT(*) as bytes_per_row,
-- estimate yesterday's rows
(SELECT COUNT(*) FROM frames WHERE date(timestamp) = '2026-04-15') as day_rows
FROM dbstat d, frames f
WHERE d.name = 'frames'
UNION ALL
SELECT 'elements',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM elements WHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '2026-04-15'))
FROM dbstat d, elements e
WHERE d.name = 'elements'
UNION ALL
SELECT 'ui_events',
COUNT(*),
SUM(payload),
SUM(payload)/COUNT(*),
(SELECT COUNT(*) FROM ui_events WHERE date(timestamp) = '2026-04-15')
FROM dbstat d, ui_events e
WHERE d.name = 'ui_events';"
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
sqlite3
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
ec2-user@ip-10-30-159-186:~ (nc)
Close Tab
ec2-user@ip-10-20-6-111:~ (nc)
Close Tab
⌥⌘1
sqlite3...
|
iTerm2
|
sqlite3
|
NULL
|
50205
|