|
674
|
16
|
27
|
2026-04-11T12:05:40.353999+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909140353_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
'
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\n\n'","depth":4,"value":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\n\n'","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
5641509469195278206
|
6802014899152775717
|
visual_change
|
accessibility
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
'
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
673
|
|
675
|
16
|
28
|
2026-04-11T12:06:01.470632+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909161470_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp<lhl100% C-zshDOCKER• ₴1DEV (-zsh)O $2APP (-zsh)• *3-zsh• 84lukas@Lukas-Kovaliks-MacBook-Pro-Jiminnyfind ~/.screenpipe -name"*.db"~/.screenpipe $ # Find all sqlite/db files screenpipe created-0 -name"*.sqlite" 2>/dev/null-zshCheck what files exist at allls -lah ~/.screenpipe/ls-lah ~/.screenpipe/data/ 2>/dev/null# Maybe it's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path "*screenpipe*"2>/dev/nullquote>quote>zsh: command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwx---88lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9 Apr 20:27config.jsondrwxr-xr-x5 lukasstaff160B11Apr 15:03data-rw-r--r--lukasstaff67M 11Apr 15:05db.sqlitelukasstaff32K 11Apr 14:52-rw-r--r--lukasstaffdb.sqlite-shm16M11 Apr 15:05db.sqlite-waldrwxr-xr-x8lukasstaff256B9Apr 19:53 pipes-rw-r--r--1lukasstaff130KApr21:27-rw-r--r--1 lukasstaff11K 11screenpipe.2026-04-09.0.10gApr 15:05screenpipe.2026-04-11.0.logtotal odrwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10lukasstaff320B11 Apr 14:52drwxr-xr-x5 lukasstaff160B11 Apr 14:52datadrwxr-xr-x2 lukasstaff64B9Apr 20:05pending-transcriptions-rw-r--r--1lukasstaffOB11 Apr 15:03screenpipe.dbzsh: commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db"-o -name"*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $|• 85-zsh• *6Sat 11 Apr 15:06:01-zshT81*7...
|
NULL
|
1221078531710606276
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp<lhl100% C-zshDOCKER• ₴1DEV (-zsh)O $2APP (-zsh)• *3-zsh• 84lukas@Lukas-Kovaliks-MacBook-Pro-Jiminnyfind ~/.screenpipe -name"*.db"~/.screenpipe $ # Find all sqlite/db files screenpipe created-0 -name"*.sqlite" 2>/dev/null-zshCheck what files exist at allls -lah ~/.screenpipe/ls-lah ~/.screenpipe/data/ 2>/dev/null# Maybe it's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path "*screenpipe*"2>/dev/nullquote>quote>zsh: command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwx---88lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9 Apr 20:27config.jsondrwxr-xr-x5 lukasstaff160B11Apr 15:03data-rw-r--r--lukasstaff67M 11Apr 15:05db.sqlitelukasstaff32K 11Apr 14:52-rw-r--r--lukasstaffdb.sqlite-shm16M11 Apr 15:05db.sqlite-waldrwxr-xr-x8lukasstaff256B9Apr 19:53 pipes-rw-r--r--1lukasstaff130KApr21:27-rw-r--r--1 lukasstaff11K 11screenpipe.2026-04-09.0.10gApr 15:05screenpipe.2026-04-11.0.logtotal odrwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10lukasstaff320B11 Apr 14:52drwxr-xr-x5 lukasstaff160B11 Apr 14:52datadrwxr-xr-x2 lukasstaff64B9Apr 20:05pending-transcriptions-rw-r--r--1lukasstaffOB11 Apr 15:03screenpipe.dbzsh: commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db"-o -name"*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $|• 85-zsh• *6Sat 11 Apr 15:06:01-zshT81*7...
|
NULL
|
|
676
|
16
|
29
|
2026-04-11T12:06:02.118821+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909162118_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp• 0-zsh|DOCKER0 ₴1DEV (-zsh)О 882APP (-zsh)• ₴з-zsh• 84lukas@Lukas-Kovaliks-MacBook-Pro-Jiminnyfind ~/.screenpipe -name"*.db"~/.screenpipe $ # Find all sqlite/db files screenpipe created-0 -name"*.sqlite" 2>/dev/null-zshCheck what files exist at allls -lah ~/.screenpipe/ls-lah ~/.screenpipe/data/ 2>/dev/null# Maybe it's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path "*screenpipe*"2>/dev/nullquote>quote>zsh:command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwx----88lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9 Apr 20:27config. jsondrwxr-xr-x5 lukasstaff160B11Apr 15:03data-rw-r--r--lukasstaff67M 11Apr 15:05db.sqlitelukasstaff-rw-r--r--lukasstaff32K 11 Apr 14:52db.sqlite-shm16M11 Apr 15:05db.sqlite-waldrwxr-xr-x8 lukasstaff256B9Apr 19:53 pipes-rw-r--r--1lukasstaff130KApr21:27-rw-r--r--1 lukasstaff11K 11Apr 15:05screenpipe.2026-04-09.0.10gscreenpipe.2026-04-11.0.logtotal odrwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10lukasstaff320B11 Apr 14:52drwxr-xr-x5 lukasstaff160B11 Apr 14:52datadrwxr-xr-x2 lukasstaff64B9Apr 20:05pending-transcriptions-rw-r--r--1lukasstaffOB11 Apr 15:03screenpipe.dbzsh: commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db"-o -name"*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ 0$0(ahl• ₴5-zsh100% <7O 886Sat 11 Apr 15:06:01-zsh181*7...
|
NULL
|
-3567941180921229101
|
NULL
|
visual_change
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp• 0-zsh|DOCKER0 ₴1DEV (-zsh)О 882APP (-zsh)• ₴з-zsh• 84lukas@Lukas-Kovaliks-MacBook-Pro-Jiminnyfind ~/.screenpipe -name"*.db"~/.screenpipe $ # Find all sqlite/db files screenpipe created-0 -name"*.sqlite" 2>/dev/null-zshCheck what files exist at allls -lah ~/.screenpipe/ls-lah ~/.screenpipe/data/ 2>/dev/null# Maybe it's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path "*screenpipe*"2>/dev/nullquote>quote>zsh:command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwx----88lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9 Apr 20:27config. jsondrwxr-xr-x5 lukasstaff160B11Apr 15:03data-rw-r--r--lukasstaff67M 11Apr 15:05db.sqlitelukasstaff-rw-r--r--lukasstaff32K 11 Apr 14:52db.sqlite-shm16M11 Apr 15:05db.sqlite-waldrwxr-xr-x8 lukasstaff256B9Apr 19:53 pipes-rw-r--r--1lukasstaff130KApr21:27-rw-r--r--1 lukasstaff11K 11Apr 15:05screenpipe.2026-04-09.0.10gscreenpipe.2026-04-11.0.logtotal odrwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10lukasstaff320B11 Apr 14:52drwxr-xr-x5 lukasstaff160B11 Apr 14:52datadrwxr-xr-x2 lukasstaff64B9Apr 20:05pending-transcriptions-rw-r--r--1lukasstaffOB11 Apr 15:03screenpipe.dbzsh: commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db"-o -name"*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ 0$0(ahl• ₴5-zsh100% <7O 886Sat 11 Apr 15:06:01-zsh181*7...
|
675
|
|
677
|
16
|
30
|
2026-04-11T12:06:04.096257+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909164096_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp• 0-zsh|DOCKER0 ₴1DEV (-zsh)О 882APP (-zsh)• ₴з-zsh• 84lukas@Lukas-Kovaliks-MacBook-Pro-Jiminnyfind ~/.screenpipe -name"*.db"~/.screenpipe $ # Find all sqlite/db files screenpipe created-0 -name"*.sqlite" 2>/dev/null-zshCheck what files exist at allls -lah ~/.screenpipe/ls-lah ~/.screenpipe/data/ 2>/dev/null# Maybe it's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path "*screenpipe*"2>/dev/nullquote>quote>zsh:command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwx---88lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9 Apr 20:27config. jsondrwxr-xr-x5 lukasstaff160B11Apr 15:03data-rw-r--r--lukasstaff67M 11Apr 15:05db.sqlitelukasstaff-rw-r--r--lukasstaff32K 11 Apr 14:52db.sqlite-shm16M11 Apr 15:05db.sqlite-waldrwxr-xr-x8 lukasstaff256B9Apr 19:53 pipes-rw-r--r--1lukasstaff130KApr21:27-rw-r--r--1 lukasstaff11K 11Apr 15:05screenpipe.2026-04-09.0.10gscreenpipe.2026-04-11.0.logtotal odrwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10lukasstaff320B11 Apr 14:52drwxr-xr-x5 lukasstaff160B11 Apr 14:52datadrwxr-xr-x2 lukasstaff64B9Apr 20:05pending-transcriptions-rw-r--r--1lukasstaffOB11 Apr 15:03screenpipe.dbzsh: commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db"-o -name"*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ 0$0(ahl• ₴5-zsh100% <7• *6Sat 11 Apr 15:06:03-zsh181*7...
|
NULL
|
-5867764893050076675
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp• 0-zsh|DOCKER0 ₴1DEV (-zsh)О 882APP (-zsh)• ₴з-zsh• 84lukas@Lukas-Kovaliks-MacBook-Pro-Jiminnyfind ~/.screenpipe -name"*.db"~/.screenpipe $ # Find all sqlite/db files screenpipe created-0 -name"*.sqlite" 2>/dev/null-zshCheck what files exist at allls -lah ~/.screenpipe/ls-lah ~/.screenpipe/data/ 2>/dev/null# Maybe it's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path "*screenpipe*"2>/dev/nullquote>quote>zsh:command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwx---88lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9 Apr 20:27config. jsondrwxr-xr-x5 lukasstaff160B11Apr 15:03data-rw-r--r--lukasstaff67M 11Apr 15:05db.sqlitelukasstaff-rw-r--r--lukasstaff32K 11 Apr 14:52db.sqlite-shm16M11 Apr 15:05db.sqlite-waldrwxr-xr-x8 lukasstaff256B9Apr 19:53 pipes-rw-r--r--1lukasstaff130KApr21:27-rw-r--r--1 lukasstaff11K 11Apr 15:05screenpipe.2026-04-09.0.10gscreenpipe.2026-04-11.0.logtotal odrwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10lukasstaff320B11 Apr 14:52drwxr-xr-x5 lukasstaff160B11 Apr 14:52datadrwxr-xr-x2 lukasstaff64B9Apr 20:05pending-transcriptions-rw-r--r--1lukasstaffOB11 Apr 15:03screenpipe.dbzsh: commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db"-o -name"*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ 0$0(ahl• ₴5-zsh100% <7• *6Sat 11 Apr 15:06:03-zsh181*7...
|
NULL
|
|
678
|
16
|
31
|
2026-04-11T12:06:06.565983+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909166565_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp• 0-zsh|DOCKER0 ₴1DEV (-zsh)О 882APP (-zsh)• ₴з-zsh• 84lukas@Lukas-Kovaliks-MacBook-Pro-Jiminnyfind ~/.screenpipe -name"*.db"~/.screenpipe $ # Find all sqlite/db files screenpipe created-0 -name"*.sqlite" 2>/dev/null-zshCheck what files exist at allls -lah ~/.screenpipe/ls-lah ~/.screenpipe/data/ 2>/dev/null# Maybe it's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path "*screenpipe*"2>/dev/nullquote>quote>zsh:command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwx---88lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9 Apr 20:27config. jsondrwxr-xr-x5 lukasstaff160B11Apr 15:03data-rw-r--r--lukasstaff67M 11Apr 15:05db.sqlitelukasstaff-rw-r--r--lukasstaff32K 11 Apr 14:52db.sqlite-shm16M11 Apr 15:05db.sqlite-waldrwxr-xr-x8 lukasstaff256B9Apr 19:53 pipes-rw-r--r--1lukasstaff130KApr21:27-rw-r--r--1 lukasstaff11K 11Apr 15:05screenpipe.2026-04-09.0.10gscreenpipe.2026-04-11.0.logtotal odrwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10lukasstaff320B11 Apr 14:52drwxr-xr-x5 lukasstaff160B11 Apr 14:52datadrwxr-xr-x2 lukasstaff64B9Apr 20:05pending-transcriptions-rw-r--r--1lukasstaffOB11 Apr 15:03screenpipe.dbzsh: commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db"-o -name"*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ 0$0(ahl• ₴5-zsh100% <7• *6Sat 11 Apr 15:06:06-zsh181X7...
|
NULL
|
-1835728256699293775
|
NULL
|
clipboard
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp• 0-zsh|DOCKER0 ₴1DEV (-zsh)О 882APP (-zsh)• ₴з-zsh• 84lukas@Lukas-Kovaliks-MacBook-Pro-Jiminnyfind ~/.screenpipe -name"*.db"~/.screenpipe $ # Find all sqlite/db files screenpipe created-0 -name"*.sqlite" 2>/dev/null-zshCheck what files exist at allls -lah ~/.screenpipe/ls-lah ~/.screenpipe/data/ 2>/dev/null# Maybe it's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path "*screenpipe*"2>/dev/nullquote>quote>zsh:command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwx---88lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9 Apr 20:27config. jsondrwxr-xr-x5 lukasstaff160B11Apr 15:03data-rw-r--r--lukasstaff67M 11Apr 15:05db.sqlitelukasstaff-rw-r--r--lukasstaff32K 11 Apr 14:52db.sqlite-shm16M11 Apr 15:05db.sqlite-waldrwxr-xr-x8 lukasstaff256B9Apr 19:53 pipes-rw-r--r--1lukasstaff130KApr21:27-rw-r--r--1 lukasstaff11K 11Apr 15:05screenpipe.2026-04-09.0.10gscreenpipe.2026-04-11.0.logtotal odrwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10lukasstaff320B11 Apr 14:52drwxr-xr-x5 lukasstaff160B11 Apr 14:52datadrwxr-xr-x2 lukasstaff64B9Apr 20:05pending-transcriptions-rw-r--r--1lukasstaffOB11 Apr 15:03screenpipe.dbzsh: commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db"-o -name"*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ 0$0(ahl• ₴5-zsh100% <7• *6Sat 11 Apr 15:06:06-zsh181X7...
|
677
|
|
679
|
16
|
32
|
2026-04-11T12:06:07.286626+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909167286_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","depth":4,"value":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-5930708421234799980
|
5649410328772639269
|
click
|
accessibility
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
680
|
16
|
33
|
2026-04-11T12:06:07.713459+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909167713_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/","depth":4,"value":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-6477846571989988829
|
5649410328772635173
|
clipboard
|
accessibility
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
679
|
|
681
|
16
|
34
|
2026-04-11T12:06:12.242805+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909172242_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh40lhl• 85DOCKERO ₴1find~/.screenpipe-name"*.db"DEV (-zsh)-nameO ₴2APP (-zsh)"*.sqlite"2>/dev/null• *3-zsh• 84-zsh#Check what files existat allls-lah~/.screenpipe/15-lah ~/.screenpipe/data/ 2>/dev/null# Maybe it's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path"*screenpipe*"2>/dev/nullquote>quote>zsh: command not found:#/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B11Apr 14:52drwx-88lukasstaff2.8K 11 Apr 14:53-rw-r--r--lukasstaff270BApr20:27config. jsondrwxr-xr-x5lukasstaff160B11 Apr 15:03data-rw-r--r--1lukasstaff67M 11 Apr 15:05db.sqlite-rw-r--r--lukasstaff32K 11Apr 14:52db.sqlite-shmlukasstaffdrwxr-xr-x8lukasstaff16M 11 Apr 15:05db.sqlite-wal256B9 Apr 19:53pipes-W-r=-1lukasstaff130K9 Apr 21:27 screenpipe.2026-04-09.0.10g-rw-r--r--1lukasstaff11K 11 Apr 15:05screenpipe.2026-04-11.0.10gtotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B11 Apr 14:52drwxr-xr-x5 lukasstaff160B11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03screenpipe.dbzsh: command not found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db"-0 -name"*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: 5total 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11Apr 14:52drwxr-xr-X5lukasstaff160B11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $-zsh100% C• *6Sat 11 Apr 15:06:11-zshT81X7...
|
NULL
|
6594105156806125819
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh40lhl• 85DOCKERO ₴1find~/.screenpipe-name"*.db"DEV (-zsh)-nameO ₴2APP (-zsh)"*.sqlite"2>/dev/null• *3-zsh• 84-zsh#Check what files existat allls-lah~/.screenpipe/15-lah ~/.screenpipe/data/ 2>/dev/null# Maybe it's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path"*screenpipe*"2>/dev/nullquote>quote>zsh: command not found:#/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B11Apr 14:52drwx-88lukasstaff2.8K 11 Apr 14:53-rw-r--r--lukasstaff270BApr20:27config. jsondrwxr-xr-x5lukasstaff160B11 Apr 15:03data-rw-r--r--1lukasstaff67M 11 Apr 15:05db.sqlite-rw-r--r--lukasstaff32K 11Apr 14:52db.sqlite-shmlukasstaffdrwxr-xr-x8lukasstaff16M 11 Apr 15:05db.sqlite-wal256B9 Apr 19:53pipes-W-r=-1lukasstaff130K9 Apr 21:27 screenpipe.2026-04-09.0.10g-rw-r--r--1lukasstaff11K 11 Apr 15:05screenpipe.2026-04-11.0.10gtotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B11 Apr 14:52drwxr-xr-x5 lukasstaff160B11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03screenpipe.dbzsh: command not found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db"-0 -name"*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: 5total 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11Apr 14:52drwxr-xr-X5lukasstaff160B11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $-zsh100% C• *6Sat 11 Apr 15:06:11-zshT81X7...
|
NULL
|
|
682
|
16
|
35
|
2026-04-11T12:06:14.230578+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909174230_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh$0(ahl• ₴5DOCKERO ₴1find~/.screenpipe-name"*.db"DEV (-zsh)-nameO ₴2APP (-zsh)"*.sqlite" 2>/dev/null• ₴з-zsh• 84-zsh#Check what files existat allls-lah~/.screenpipe/ls-lah ~/.screenpipe/data/ 2>/dev/null# Maybe it's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path"*screenpipe*"2>/dev/nullquote>quote>zsh: command not found:#/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B11Apr 14:52drwx-88lukasstaff2.8K 11Apr 14:53-rw-r--r--lukasstaff270BApr20:27config. jsondrwxr-xr-x5lukasstaff160B11 Apr 15:03data-rw-r--r--1lukasstaff67M 11 Apr 15:05db.sqlite-rw-r--r--lukasstaff32K 11Apr 14:52db.sqlite-shmlukasstaffdrwxr-xr-x8lukasstaff16M 11 Apr 15:05db.sqlite-wal256B9 Apr 19:53pipes-rw-r-1lukasstaff130K9 Apr 21:27 screenpipe.2026-04-09.0.10g-rw-r--r--1lukasstaff11K 11 Apr 15:05screenpipe.2026-04-11.0.10gtotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B11 Apr 14:52drwxr-xr-x5 lukasstaff160B11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03screenpipe.dbzsh: command not found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db" -o -name"*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ П-zsh100% <7O 886Sat 11 Apr 15:06:13-zsh181X7...
|
NULL
|
-8401504570792939856
|
NULL
|
visual_change
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh$0(ahl• ₴5DOCKERO ₴1find~/.screenpipe-name"*.db"DEV (-zsh)-nameO ₴2APP (-zsh)"*.sqlite" 2>/dev/null• ₴з-zsh• 84-zsh#Check what files existat allls-lah~/.screenpipe/ls-lah ~/.screenpipe/data/ 2>/dev/null# Maybe it's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path"*screenpipe*"2>/dev/nullquote>quote>zsh: command not found:#/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B11Apr 14:52drwx-88lukasstaff2.8K 11Apr 14:53-rw-r--r--lukasstaff270BApr20:27config. jsondrwxr-xr-x5lukasstaff160B11 Apr 15:03data-rw-r--r--1lukasstaff67M 11 Apr 15:05db.sqlite-rw-r--r--lukasstaff32K 11Apr 14:52db.sqlite-shmlukasstaffdrwxr-xr-x8lukasstaff16M 11 Apr 15:05db.sqlite-wal256B9 Apr 19:53pipes-rw-r-1lukasstaff130K9 Apr 21:27 screenpipe.2026-04-09.0.10g-rw-r--r--1lukasstaff11K 11 Apr 15:05screenpipe.2026-04-11.0.10gtotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B11 Apr 14:52drwxr-xr-x5 lukasstaff160B11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03screenpipe.dbzsh: command not found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db" -o -name"*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ П-zsh100% <7O 886Sat 11 Apr 15:06:13-zsh181X7...
|
681
|
|
683
|
16
|
36
|
2026-04-11T12:06:14.850926+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909174850_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","depth":4,"value":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-4589231096839639958
|
5649410328772635173
|
click
|
accessibility
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
684
|
16
|
37
|
2026-04-11T12:06:17.252276+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909177252_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null","depth":4,"value":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
5266994363241837721
|
5649410328772635173
|
visual_change
|
accessibility
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
683
|
|
685
|
16
|
38
|
2026-04-11T12:06:20.280610+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909180280_m1.jpg...
|
iTerm2
|
find
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
find
Close Tab
⌥⌘1
find...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null","depth":4,"value":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"find","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"find","depth":1,"bounds":{"left":0.48958334,"top":0.033333335,"width":0.020833334,"height":0.017777778},"role_description":"text"}]...
|
-1464934225832934370
|
5649410328772635173
|
visual_change
|
accessibility
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
find
Close Tab
⌥⌘1
find...
|
NULL
|
|
686
|
16
|
39
|
2026-04-11T12:06:50.358473+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909210358_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","depth":4,"value":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
581186469891904606
|
5648354797609970213
|
idle
|
accessibility
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
685
|
|
687
|
16
|
40
|
2026-04-11T12:06:59.762958+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909219762_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zshlhl• 85100% CS- 886Sat 11 Apr 15:06:59-zshT81*7DOCKERO ₴1DEV (-zsh)-ls-lah ~/.screenpipe/1s-lah ~/.screenpipe/data/ 2>/dev/nullO 882APP (-zsh)• *3-zsh• 84-zsh-zsh# Maybeit's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path"*screenpipe*"2>/dev/nullquote>quote>zsh: command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B11Apr 14:52drwx----88 lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9Apr 20:27config. jsondrwxr-xr-x5lukasstaff160B11Apr 15:03datalukasstaff67M 11 Apr 15:05db.sqlite-rw-r--r--lukasstaff32K 11Apr14:52db.sqlite-shm-rw-r--r--1lukasstaff16M 11 Apr 15:05 db.sqlite-waldrwxr-xr-x8lukasstaff256B9 Apr 19:53 pipes-rw-r--r--lukasstaff130K9 Apr 21:27 screenpipe.2026-04-09.0.10g-rw-r--r--1 lukasstaff11K 11 Apr 15:05 screenpipe.2026-04-11.0.10gtotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03 .drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dbzsh:commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db" -o -name "*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nulllukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/nullptt neser eneto path "елспрiрe 2/dev/nu11/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $...
|
NULL
|
-2579959944989756949
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zshlhl• 85100% CS- 886Sat 11 Apr 15:06:59-zshT81*7DOCKERO ₴1DEV (-zsh)-ls-lah ~/.screenpipe/1s-lah ~/.screenpipe/data/ 2>/dev/nullO 882APP (-zsh)• *3-zsh• 84-zsh-zsh# Maybeit's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path"*screenpipe*"2>/dev/nullquote>quote>zsh: command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B11Apr 14:52drwx----88 lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9Apr 20:27config. jsondrwxr-xr-x5lukasstaff160B11Apr 15:03datalukasstaff67M 11 Apr 15:05db.sqlite-rw-r--r--lukasstaff32K 11Apr14:52db.sqlite-shm-rw-r--r--1lukasstaff16M 11 Apr 15:05 db.sqlite-waldrwxr-xr-x8lukasstaff256B9 Apr 19:53 pipes-rw-r--r--lukasstaff130K9 Apr 21:27 screenpipe.2026-04-09.0.10g-rw-r--r--1 lukasstaff11K 11 Apr 15:05 screenpipe.2026-04-11.0.10gtotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03 .drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dbzsh:commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db" -o -name "*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nulllukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/nullptt neser eneto path "елспрiрe 2/dev/nu11/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $...
|
NULL
|
|
688
|
16
|
41
|
2026-04-11T12:07:02.634712+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909222634_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh$0(ahl• ₴5100% <7• ₴6Sat 11 Apr 15:07:02-zsh181*7DOCKERO ₴1DEV (-zsh)ls-lah ~/.screenpipe/1s-lah ~/.screenpipe/data/ 2>/dev/nullО 882APP (-zsh)• ₴з-zsh• 84-zsh-zsh# Maybeit's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path"*screenpipe*"2>/dev/nullquote>quote>zsh: command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B11Apr 14:52drwx----88 lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9Apr 20:27config. jsondrwxr-xr-x5lukasstaff160B11Apr 15:03datalukasstaff67M 11Apr 15:05db.sqlite-rw-r--r--lukasstaff32K 11Apr14:52db.sqlite-shm-rw-r--r--1lukasstaff16M 11 Apr 15:05 db.sqlite-waldrwxr-xr-x8lukasstaff256B9 Apr 19:53 pipes-rw-r--r--lukasstaff130K9 Apr 21:27 screenpipe.2026-04-09.0.10g-rw-r--r--1 lukasstaff11K 11 Apr 15:05 screenpipe.2026-04-11.0.10gtotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03 .drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dbzsh:commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db" -o -name "*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nulllukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $...
|
NULL
|
-1186735194666456484
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh$0(ahl• ₴5100% <7• ₴6Sat 11 Apr 15:07:02-zsh181*7DOCKERO ₴1DEV (-zsh)ls-lah ~/.screenpipe/1s-lah ~/.screenpipe/data/ 2>/dev/nullО 882APP (-zsh)• ₴з-zsh• 84-zsh-zsh# Maybeit's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path"*screenpipe*"2>/dev/nullquote>quote>zsh: command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B11Apr 14:52drwx----88 lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9Apr 20:27config. jsondrwxr-xr-x5lukasstaff160B11Apr 15:03datalukasstaff67M 11Apr 15:05db.sqlite-rw-r--r--lukasstaff32K 11Apr14:52db.sqlite-shm-rw-r--r--1lukasstaff16M 11 Apr 15:05 db.sqlite-waldrwxr-xr-x8lukasstaff256B9 Apr 19:53 pipes-rw-r--r--lukasstaff130K9 Apr 21:27 screenpipe.2026-04-09.0.10g-rw-r--r--1 lukasstaff11K 11 Apr 15:05 screenpipe.2026-04-11.0.10gtotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03 .drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dbzsh:commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db" -o -name "*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nulllukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $...
|
687
|
|
689
|
16
|
42
|
2026-04-11T12:07:06.752105+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909226752_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh$0(ahl• ₴5100% <7• ₴6Sat 11 Apr 15:07:06-zsh181*7DOCKERO ₴1DEV (-zsh)ls-lah ~/.screenpipe/1s-lah ~/.screenpipe/data/ 2>/dev/nullО 882APP (-zsh)• ₴з-zsh• 84-zsh-zsh# Maybeit's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path"*screenpipe*"2>/dev/nullquote>quote>zsh: command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B11Apr 14:52drwx----88 lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9Apr 20:27config. jsondrwxr-xr-x5lukasstaff160B11Apr 15:03datalukasstaff67M 11Apr 15:05db.sqlite-rw-r--r--lukasstaff32K 11Apr14:52db.sqlite-shm-rw-r--r--1lukasstaff16M 11 Apr 15:05 db.sqlite-waldrwxr-xr-x8lukasstaff256B9 Apr 19:53 pipes-rw-r--r--lukasstaff130K9 Apr 21:27 screenpipe.2026-04-09.0.10g-rw-r--r--1 lukasstaff11K 11 Apr 15:05 screenpipe.2026-04-11.0.10gtotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03 .drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dbzsh:commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db" -o -name "*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nulllukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $...
|
NULL
|
2764066608628764382
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh$0(ahl• ₴5100% <7• ₴6Sat 11 Apr 15:07:06-zsh181*7DOCKERO ₴1DEV (-zsh)ls-lah ~/.screenpipe/1s-lah ~/.screenpipe/data/ 2>/dev/nullО 882APP (-zsh)• ₴з-zsh• 84-zsh-zsh# Maybeit's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path"*screenpipe*"2>/dev/nullquote>quote>zsh: command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B11Apr 14:52drwx----88 lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9Apr 20:27config. jsondrwxr-xr-x5lukasstaff160B11Apr 15:03datalukasstaff67M 11Apr 15:05db.sqlite-rw-r--r--lukasstaff32K 11Apr14:52db.sqlite-shm-rw-r--r--1lukasstaff16M 11 Apr 15:05 db.sqlite-waldrwxr-xr-x8lukasstaff256B9 Apr 19:53 pipes-rw-r--r--lukasstaff130K9 Apr 21:27 screenpipe.2026-04-09.0.10g-rw-r--r--1 lukasstaff11K 11 Apr 15:05 screenpipe.2026-04-11.0.10gtotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03 .drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dbzsh:commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db" -o -name "*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nulllukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $...
|
NULL
|
|
690
|
16
|
43
|
2026-04-11T12:07:08.891706+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909228891_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh$0(ahl• ₴5100% <7• ₴6Sat 11 Apr 15:07:08-zsh181*7DOCKERO ₴1DEV (-zsh)ls-lah ~/.screenpipe/1s-lah ~/.screenpipe/data/ 2>/dev/nullО 882APP (-zsh)• ₴з-zsh• 84-zsh-zsh# Maybeit's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path"*screenpipe*"2>/dev/nullquote>quote>zsh: command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B11Apr 14:52drwx----88 lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9Apr 20:27config. jsondrwxr-xr-x5lukasstaff160B11Apr 15:03datalukasstaff67M 11Apr 15:05db.sqlite-rw-r--r--lukasstaff32K 11Apr14:52db.sqlite-shm-rw-r--r--1lukasstaff16M 11 Apr 15:05 db.sqlite-waldrwxr-xr-x8lukasstaff256B9 Apr 19:53 pipes-rw-r--r--lukasstaff130K9 Apr 21:27 screenpipe.2026-04-09.0.10g-rw-r--r--1 lukasstaff11K 11 Apr 15:05 screenpipe.2026-04-11.0.10gtotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03 .drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dbzsh:commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db" -o -name "*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nulllukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $...
|
NULL
|
5490494604732090717
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh$0(ahl• ₴5100% <7• ₴6Sat 11 Apr 15:07:08-zsh181*7DOCKERO ₴1DEV (-zsh)ls-lah ~/.screenpipe/1s-lah ~/.screenpipe/data/ 2>/dev/nullО 882APP (-zsh)• ₴з-zsh• 84-zsh-zsh# Maybeit's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path"*screenpipe*"2>/dev/nullquote>quote>zsh: command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B11Apr 14:52drwx----88 lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9Apr 20:27config. jsondrwxr-xr-x5lukasstaff160B11Apr 15:03datalukasstaff67M 11Apr 15:05db.sqlite-rw-r--r--lukasstaff32K 11Apr14:52db.sqlite-shm-rw-r--r--1lukasstaff16M 11 Apr 15:05 db.sqlite-waldrwxr-xr-x8lukasstaff256B9 Apr 19:53 pipes-rw-r--r--lukasstaff130K9 Apr 21:27 screenpipe.2026-04-09.0.10g-rw-r--r--1 lukasstaff11K 11 Apr 15:05 screenpipe.2026-04-11.0.10gtotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03 .drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dbzsh:commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db" -o -name "*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nulllukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $...
|
689
|
|
691
|
16
|
44
|
2026-04-11T12:07:12.398101+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909232398_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh$0(ahl• ₴5100% <7• ₴6Sat 11 Apr 15:07:11-zsh181*7DOCKERO ₴1DEV (-zsh)ls-lah ~/.screenpipe/1s-lah ~/.screenpipe/data/ 2>/dev/nullО 882APP (-zsh)• ₴з-zsh• 84-zsh-zsh# Maybeit's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path"*screenpipe*"2>/dev/nullquote>quote>zsh: command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B11Apr 14:52drwx----88 lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9Apr 20:27config. jsondrwxr-xr-x5lukasstaff160B11Apr 15:03datalukasstaff67M 11Apr 15:05db.sqlite-rw-r--r--lukasstaff32K 11Apr14:52db.sqlite-shm-rw-r--r--1lukasstaff16M 11 Apr 15:05 db.sqlite-waldrwxr-xr-x8lukasstaff256B9 Apr 19:53 pipes-rw-r--r--lukasstaff130K9 Apr 21:27 screenpipe.2026-04-09.0.10g-rw-r--r--1 lukasstaff11K 11 Apr 15:05 screenpipe.2026-04-11.0.10gtotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03 .drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dbzsh:commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db" -o -name "*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nulllukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $...
|
NULL
|
8250640128543884794
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh$0(ahl• ₴5100% <7• ₴6Sat 11 Apr 15:07:11-zsh181*7DOCKERO ₴1DEV (-zsh)ls-lah ~/.screenpipe/1s-lah ~/.screenpipe/data/ 2>/dev/nullО 882APP (-zsh)• ₴з-zsh• 84-zsh-zsh# Maybeit's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path"*screenpipe*"2>/dev/nullquote>quote>zsh: command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B11Apr 14:52drwx----88 lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9Apr 20:27config. jsondrwxr-xr-x5lukasstaff160B11Apr 15:03datalukasstaff67M 11Apr 15:05db.sqlite-rw-r--r--lukasstaff32K 11Apr14:52db.sqlite-shm-rw-r--r--1lukasstaff16M 11 Apr 15:05 db.sqlite-waldrwxr-xr-x8lukasstaff256B9 Apr 19:53 pipes-rw-r--r--lukasstaff130K9 Apr 21:27 screenpipe.2026-04-09.0.10g-rw-r--r--1 lukasstaff11K 11 Apr 15:05 screenpipe.2026-04-11.0.10gtotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03 .drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dbzsh:commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db" -o -name "*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nulllukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $...
|
NULL
|
|
692
|
16
|
45
|
2026-04-11T12:07:13.104313+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909233104_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh$0(ahl• ₴5100% <7• ₴6Sat 11 Apr 15:07:12-zsh181*7DOCKERO ₴1DEV (-zsh)ls-lah ~/.screenpipe/1s-lah ~/.screenpipe/data/ 2>/dev/nullО 882APP (-zsh)• ₴з-zsh• 84-zsh-zsh# Maybeit's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path"*screenpipe*"2>/dev/nullquote>quote>zsh: command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B11Apr 14:52drwx----88 lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9Apr 20:27config. jsondrwxr-xr-x5lukasstaff160B11Apr 15:03datalukasstaff67M 11Apr 15:05db.sqlite-rw-r--r--lukasstaff32K 11Apr14:52db.sqlite-shm-rw-r--r--1lukasstaff16M 11 Apr 15:05 db.sqlite-waldrwxr-xr-x8lukasstaff256B9 Apr 19:53 pipes-rw-r--r--lukasstaff130K9 Apr 21:27 screenpipe.2026-04-09.0.10g-rw-r--r--1 lukasstaff11K 11 Apr 15:05 screenpipe.2026-04-11.0.10gtotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03 .drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dbzsh:commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db" -o -name "*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nulllukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $...
|
NULL
|
-9008250180802683563
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh$0(ahl• ₴5100% <7• ₴6Sat 11 Apr 15:07:12-zsh181*7DOCKERO ₴1DEV (-zsh)ls-lah ~/.screenpipe/1s-lah ~/.screenpipe/data/ 2>/dev/nullО 882APP (-zsh)• ₴з-zsh• 84-zsh-zsh# Maybeit's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path"*screenpipe*"2>/dev/nullquote>quote>zsh: command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B11Apr 14:52drwx----88 lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9Apr 20:27config. jsondrwxr-xr-x5lukasstaff160B11Apr 15:03datalukasstaff67M 11Apr 15:05db.sqlite-rw-r--r--lukasstaff32K 11Apr14:52db.sqlite-shm-rw-r--r--1lukasstaff16M 11 Apr 15:05 db.sqlite-waldrwxr-xr-x8lukasstaff256B9 Apr 19:53 pipes-rw-r--r--lukasstaff130K9 Apr 21:27 screenpipe.2026-04-09.0.10g-rw-r--r--1 lukasstaff11K 11 Apr 15:05 screenpipe.2026-04-11.0.10gtotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03 .drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dbzsh:commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db" -o -name "*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nulllukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $...
|
691
|
|
693
|
16
|
46
|
2026-04-11T12:07:18.148724+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909238148_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh$0(ahl• ₴5100% <7• *6Sat 11 Apr 15:07:17-zsh181*7DOCKERO ₴1DEV (-zsh)ls-lah ~/.screenpipe/1s-lah ~/.screenpipe/data/ 2>/dev/nullО 882APP (-zsh)• ₴з-zsh• 84-zsh-zsh# Maybeit's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path"*screenpipe*"2>/dev/nullquote>quote>zsh: command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B11Apr 14:52drwx----88 lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9Apr 20:27config. jsondrwxr-xr-x5lukasstaff160B11Apr 15:03datalukasstaff67M 11Apr 15:05db.sqlite-rw-r--r--lukasstaff32K 11Apr14:52db.sqlite-shm-rw-r--r--1lukasstaff16M 11 Apr 15:05 db.sqlite-waldrwxr-xr-x8lukasstaff256B9 Apr 19:53 pipes-rw-r--r--lukasstaff130K9 Apr 21:27 screenpipe.2026-04-09.0.10g-rw-r--r--1 lukasstaff11K 11 Apr 15:05 screenpipe.2026-04-11.0.10gtotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03 .drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dbzsh:commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db" -o -name "*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nulllukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $...
|
NULL
|
5382246526465454907
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh$0(ahl• ₴5100% <7• *6Sat 11 Apr 15:07:17-zsh181*7DOCKERO ₴1DEV (-zsh)ls-lah ~/.screenpipe/1s-lah ~/.screenpipe/data/ 2>/dev/nullО 882APP (-zsh)• ₴з-zsh• 84-zsh-zsh# Maybeit's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path"*screenpipe*"2>/dev/nullquote>quote>zsh: command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B11Apr 14:52drwx----88 lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9Apr 20:27config. jsondrwxr-xr-x5lukasstaff160B11Apr 15:03datalukasstaff67M 11Apr 15:05db.sqlite-rw-r--r--lukasstaff32K 11Apr14:52db.sqlite-shm-rw-r--r--1lukasstaff16M 11 Apr 15:05 db.sqlite-waldrwxr-xr-x8lukasstaff256B9 Apr 19:53 pipes-rw-r--r--lukasstaff130K9 Apr 21:27 screenpipe.2026-04-09.0.10g-rw-r--r--1 lukasstaff11K 11 Apr 15:05 screenpipe.2026-04-11.0.10gtotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03 .drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dbzsh:commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db" -o -name "*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nulllukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $...
|
NULL
|
|
694
|
16
|
47
|
2026-04-11T12:07:20.755381+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909240755_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh$0(ahl• ₴5100% <7• ₴6Sat 11 Apr 15:07:20-zsh181*7DOCKERO ₴1DEV (-zsh)ls-lah ~/.screenpipe/1s-lah ~/.screenpipe/data/ 2>/dev/nullО 882APP (-zsh)• ₴з-zsh• 84-zsh-zsh# Maybeit's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path"*screenpipe*"2>/dev/nullquote>quote>zsh: command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B11Apr 14:52drwx----88 lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9Apr 20:27config. jsondrwxr-xr-x5lukasstaff160B11Apr 15:03datalukasstaff67M 11Apr 15:05db.sqlite-rw-r--r--lukasstaff32K 11Apr14:52db.sqlite-shm-rw-r--r--1lukasstaff16M 11 Apr 15:05 db.sqlite-waldrwxr-xr-x8lukasstaff256B9 Apr 19:53 pipes-rw-r--r--lukasstaff130K9 Apr 21:27 screenpipe.2026-04-09.0.10g-rw-r--r--1 lukasstaff11K 11 Apr 15:05 screenpipe.2026-04-11.0.10gtotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03 .drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dbzsh:commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db" -o -name "*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nulllukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $...
|
NULL
|
-685743121662640709
|
NULL
|
clipboard
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh$0(ahl• ₴5100% <7• ₴6Sat 11 Apr 15:07:20-zsh181*7DOCKERO ₴1DEV (-zsh)ls-lah ~/.screenpipe/1s-lah ~/.screenpipe/data/ 2>/dev/nullО 882APP (-zsh)• ₴з-zsh• 84-zsh-zsh# Maybeit's in Application Supportfind ~/Library/Application\ Support/-name"*.db"-path"*screenpipe*"2>/dev/nullquote>quote>zsh: command not found: #/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dbzsh: command not found: #total 170384drwxr-xr-x10lukasstaff320B11Apr 14:52drwx----88 lukasstaff2.8K 11Apr 14:53-rw-r--r--1lukasstaff270B9Apr 20:27config. jsondrwxr-xr-x5lukasstaff160B11Apr 15:03datalukasstaff67M 11Apr 15:05db.sqlite-rw-r--r--lukasstaff32K 11Apr14:52db.sqlite-shm-rw-r--r--1lukasstaff16M 11 Apr 15:05 db.sqlite-waldrwxr-xr-x8lukasstaff256B9 Apr 19:53 pipes-rw-r--r--lukasstaff130K9 Apr 21:27 screenpipe.2026-04-09.0.10g-rw-r--r--1 lukasstaff11K 11 Apr 15:05 screenpipe.2026-04-11.0.10gtotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03 .drwxr-xr-x10lukasstaff320B 11 Apr 14:52drwxr-xr-x5lukasstaff160B 11 Apr 14:52datadrwxr-xr-x2lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dbzsh:commandnot found:#lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name"*.db" -o -name "*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B 11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05 pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dblukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nulllukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $...
|
693
|
|
695
|
16
|
48
|
2026-04-11T12:07:22.449048+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909242449_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","depth":4,"value":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
581186469891904606
|
5648354797609970213
|
click
|
accessibility
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
696
|
16
|
49
|
2026-04-11T12:07:23.140134+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909243140_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"","depth":4,"value":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-5179389018618997729
|
5648284428865792549
|
clipboard
|
accessibility
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
695
|
|
697
|
16
|
50
|
2026-04-11T12:07:25.808686+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909245808_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
screenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"\nscreenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","depth":4,"value":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"\nscreenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-2949593395551601951
|
5648275250521958917
|
visual_change
|
accessibility
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
screenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
698
|
16
|
51
|
2026-04-11T12:07:32.091469+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909252091_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh‹ 40lihl• *5100% CS- $868Sat 11 Apr 15:07:31-zshT81*7DOCKERO ₴1DEV (-zsh)• ₴2APP (-zsh)• *3-zsh• x4-zsh-zsh®total 0drwxr-xr-x5lukasstaffdrwxr-xr-x10lukasstaffdrwxr-xr-x5 lukasstaffdrwxr-xr-x2 lukasstaff-rw-r-1lukasstaff160B11 Apr 15:03320B11 Apr 14:52160B 11 Apr 14:52data64B9 Apr 20:05OB 11 Apr 15:03pending-transcriptionsscreenpipe.dbzsh:command not found:#lukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/ .screenpipe -name.db"-o -name"*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dbLukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nullLukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminnyscreenpip 20525 lukastxt~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.dbl\.sqlite"REGscreenpip 20525 lukastxtREG1,[CREDIT_CARD] /Users/lukas/.screenpipe/db.sqlite-shm1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas17uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas22uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas23uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas24uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas25uREGscreenpip 20525 lukas26uREG1,[CREDIT_CARD] /Users/lukas/.screenpipe/db.sqlite-shmscreenpip 20525 lukas27uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas28uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-wal1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas29uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas31uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas33uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas55uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas56uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas57uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas58uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas59uREGscreenpip 20525 lukas60uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlite1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas61uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas62uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-wallukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
NULL
|
5518839354265320149
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh‹ 40lihl• *5100% CS- $868Sat 11 Apr 15:07:31-zshT81*7DOCKERO ₴1DEV (-zsh)• ₴2APP (-zsh)• *3-zsh• x4-zsh-zsh®total 0drwxr-xr-x5lukasstaffdrwxr-xr-x10lukasstaffdrwxr-xr-x5 lukasstaffdrwxr-xr-x2 lukasstaff-rw-r-1lukasstaff160B11 Apr 15:03320B11 Apr 14:52160B 11 Apr 14:52data64B9 Apr 20:05OB 11 Apr 15:03pending-transcriptionsscreenpipe.dbzsh:command not found:#lukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/ .screenpipe -name.db"-o -name"*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03 screenpipe.dbLukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nullLukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminnyscreenpip 20525 lukastxt~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.dbl\.sqlite"REGscreenpip 20525 lukastxtREG1,[CREDIT_CARD] /Users/lukas/.screenpipe/db.sqlite-shm1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas17uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas22uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas23uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas24uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas25uREGscreenpip 20525 lukas26uREG1,[CREDIT_CARD] /Users/lukas/.screenpipe/db.sqlite-shmscreenpip 20525 lukas27uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas28uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-wal1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas29uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas31uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas33uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas55uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas56uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas57uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas58uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas59uREGscreenpip 20525 lukas60uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlite1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas61uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas62uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-wallukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
697
|
|
699
|
16
|
52
|
2026-04-11T12:07:32.932882+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909252932_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0I|OOA• 0-zshDOCKERO ₴1DEV (-zsh)O $2APP (-zsh)• *3-zsh• 84-zsh• *5-zshtotal 0drwxr-xr-x5lukasstaffdrwxr-xr-x10lukasstaffdrwxr-xr-x5lukasstaffdrwxr-xr-x2 lukasstaff-rw-r-1lukasstaff160B11 Apr 15:03320B11 Apr 14:52160B 11Apr 14:52data64B9 Apr 20:05pending-transcriptionsOB11 Apr 15:03screenpipe.dbzsh:command not found:#lukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/ .screenpipe -name.db"-o -name"*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03screenpipe.dbLukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nullLukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminnyscreenpip 20525 lukastxt~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.dbl\. sqlite"REGscreenpip 20525 lukastxtREG1,[CREDIT_CARD] /Users/lukas/.screenpipe/db.sqlite-shm1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas17uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas22uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas23uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas24uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas25uREGscreenpip 20525 lukas26uREG1,[CREDIT_CARD] /Users/lukas/.screenpipe/db.sqlite-shmscreenpip 20525 lukas27uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas28uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-wal1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas29uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas31uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas33uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas55uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas56uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas57uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas58uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas59uREGscreenpip 20525 lukas60uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlite1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas61uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas62uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-wallukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $100% C₴86Sat 11 Apr 15:07:32-zshT81*7+...
|
NULL
|
-3174817046186151581
|
NULL
|
clipboard
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0I|OOA• 0-zshDOCKERO ₴1DEV (-zsh)O $2APP (-zsh)• *3-zsh• 84-zsh• *5-zshtotal 0drwxr-xr-x5lukasstaffdrwxr-xr-x10lukasstaffdrwxr-xr-x5lukasstaffdrwxr-xr-x2 lukasstaff-rw-r-1lukasstaff160B11 Apr 15:03320B11 Apr 14:52160B 11Apr 14:52data64B9 Apr 20:05pending-transcriptionsOB11 Apr 15:03screenpipe.dbzsh:command not found:#lukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/ .screenpipe -name.db"-o -name"*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03screenpipe.dbLukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nullLukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminnyscreenpip 20525 lukastxt~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.dbl\. sqlite"REGscreenpip 20525 lukastxtREG1,[CREDIT_CARD] /Users/lukas/.screenpipe/db.sqlite-shm1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas17uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas22uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas23uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas24uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas25uREGscreenpip 20525 lukas26uREG1,[CREDIT_CARD] /Users/lukas/.screenpipe/db.sqlite-shmscreenpip 20525 lukas27uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas28uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-wal1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas29uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas31uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas33uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas55uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas56uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas57uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas58uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas59uREGscreenpip 20525 lukas60uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlite1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas61uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas62uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-wallukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $100% C₴86Sat 11 Apr 15:07:32-zshT81*7+...
|
NULL
|
|
700
|
16
|
53
|
2026-04-11T12:07:45.749806+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909265749_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0• 0-zshDOCKERO ₴1DEV (-zsh)O $2APP (-zsh)• *3-zsh• 84-zsh• *5-zshtotal 0drwxr-xr-x5lukasstaffdrwxr-xr-x10lukasstaffdrwxr-xr-x5lukasstaffdrwxr-xr-x2 lukasstaff-rw-r-1lukasstaff160B11 Apr 15:03320B11 Apr 14:52160B 11Apr 14:52data64B9 Apr 20:05pending-transcriptionsOB11 Apr 15:03screenpipe.dbzsh:command not found:#lukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/ .screenpipe -name.db"-o -name"*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03screenpipe.dbLukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nullLukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminnyscreenpip 20525 lukastxt~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.dbl\. sqlite"REGscreenpip 20525 lukastxtREG1,[CREDIT_CARD] /Users/lukas/.screenpipe/db.sqlite-shm1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas17uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas22uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas23uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas24uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas25uREGscreenpip 20525 lukas26uREG1,[CREDIT_CARD] /Users/lukas/.screenpipe/db.sqlite-shmscreenpip 20525 lukas27uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas28uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-wal1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas29uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas31uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas33uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas55uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas56uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas57uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas58uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas59uREGscreenpip 20525 lukas60uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlite1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas61uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas62uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-wallukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $100% 147O 886Sat 11 Apr 15:07:45-zshT81*7+...
|
NULL
|
1136917739484869686
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp$0• 0-zshDOCKERO ₴1DEV (-zsh)O $2APP (-zsh)• *3-zsh• 84-zsh• *5-zshtotal 0drwxr-xr-x5lukasstaffdrwxr-xr-x10lukasstaffdrwxr-xr-x5lukasstaffdrwxr-xr-x2 lukasstaff-rw-r-1lukasstaff160B11 Apr 15:03320B11 Apr 14:52160B 11Apr 14:52data64B9 Apr 20:05pending-transcriptionsOB11 Apr 15:03screenpipe.dbzsh:command not found:#lukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/ .screenpipe -name.db"-o -name"*.sqlite" 2>/dev/null/Users/lukas/.screenpipe/db.sqlite/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/ls -lah ~/.screenpipe/data/ 2>/dev/nullzsh: command not found: stotal 0drwxr-xr-x5 lukasstaff160B 11 Apr 15:03drwxr-xr-x10 lukasstaff320B 11 Apr 14:52drwxr-xr-x5 lukasstaff160B11 Apr 14:52 datadrwxr-xr-x2 lukasstaff64B9 Apr 20:05pending-transcriptions-rw-r--r--1 lukasstaffOB 11 Apr 15:03screenpipe.dbLukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/nullLukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null/Users/lukas/.screenpipe/data/screenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminnyscreenpip 20525 lukastxt~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.dbl\. sqlite"REGscreenpip 20525 lukastxtREG1,[CREDIT_CARD] /Users/lukas/.screenpipe/db.sqlite-shm1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas17uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas22uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas23uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas24uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas25uREGscreenpip 20525 lukas26uREG1,[CREDIT_CARD] /Users/lukas/.screenpipe/db.sqlite-shmscreenpip 20525 lukas27uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas28uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-wal1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas29uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas31uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas33uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas55uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas56uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas57uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas58uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas59uREGscreenpip 20525 lukas60uREG1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlite1,15 70270976220904259 /Users/lukas/.screenpipe/db.sqlitescreenpip 20525 lukas61uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-walscreenpip 20525 lukas62uREG1,15 16533592220914770 /Users/lukas/.screenpipe/db.sqlite-wallukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $100% 147O 886Sat 11 Apr 15:07:45-zshT81*7+...
|
699
|
|
701
|
16
|
54
|
2026-04-11T12:07:46.613262+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909266613_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
screenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"\nscreenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","depth":4,"value":"\"pipeline\": {\n \"avg_db_latency_ms\": 333.52475247524757,\n \"avg_ocr_latency_ms\": 0.0,\n \"capture_fps_actual\": 0.22236224861039977,\n \"frame_drop_rate\": 0.0,\n \"frames_captured\": 101,\n \"frames_db_written\": 101,\n \"frames_dropped\": 0,\n \"ocr_cache_hit_rate\": 0.0,\n \"ocr_queue_depth\": 0,\n \"pipeline_stall_count\": 0,\n \"time_to_first_frame_ms\": 901.748,\n \"uptime_secs\": 454.213791375,\n \"video_queue_depth\": 0\n },\n \"pool_stats\": {\n \"read_pool_idle\": 7,\n \"read_pool_size\": 7,\n \"write_pool_idle\": 2,\n \"write_pool_size\": 2\n },\n \"schedule_paused\": false,\n \"status\": \"healthy\",\n \"status_code\": 200,\n \"verbose_instructions\": null,\n \"version\": \"0.3.278\",\n \"vision_db_write_stalled\": false\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"\nSELECT app_name, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nGROUP BY app_name\nORDER BY frames DESC;\n\"\nError: in prepare, no such table: frames\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".tables\" \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \".schema\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db \"SELECT name FROM sqlite_master WHERE type='table';\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created\nfind ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null\n\n# Check what files exist at all\nls -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\n\n# Maybe it's in Application Support\nfind ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nquote> \nquote> '\nzsh: command not found: #\n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nzsh: command not found: #\ntotal 170384\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .\ndrwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..\n-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite\n-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"\nscreenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-2949593395551601951
|
5648275250521958917
|
click
|
accessibility
|
NULL
|
"pipeline": {
"avg_db_latency_ms "pipeline": {
"avg_db_latency_ms": 333.52475247524757,
"avg_ocr_latency_ms": 0.0,
"capture_fps_actual": 0.22236224861039977,
"frame_drop_rate": 0.0,
"frames_captured": 101,
"frames_db_written": 101,
"frames_dropped": 0,
"ocr_cache_hit_rate": 0.0,
"ocr_queue_depth": 0,
"pipeline_stall_count": 0,
"time_to_first_frame_ms": 901.748,
"uptime_secs": 454.213791375,
"video_queue_depth": 0
},
"pool_stats": {
"read_pool_idle": 7,
"read_pool_size": 7,
"write_pool_idle": 2,
"write_pool_size": 2
},
"schedule_paused": false,
"status": "healthy",
"status_code": 200,
"verbose_instructions": null,
"version": "0.3.278",
"vision_db_write_stalled": false
}
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "
SELECT app_name, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
GROUP BY app_name
ORDER BY frames DESC;
"
Error: in prepare, no such table: frames
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".tables"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db ".schema"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/data/screenpipe.db "SELECT name FROM sqlite_master WHERE type='table';"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ # Find all sqlite/db files screenpipe created
find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
# Check what files exist at all
ls -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
# Maybe it's in Application Support
find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
quote>
quote> '
zsh: command not found: #
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
zsh: command not found: #
total 170384
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 .
drwx------+ 88 lukas staff 2.8K 11 Apr 14:53 ..
-rw-r--r-- 1 lukas staff 270B 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 67M 11 Apr 15:05 db.sqlite
-rw-r--r-- 1 lukas staff 32K 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 16M 11 Apr 15:05 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256B 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 130K 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 11K 11 Apr 15:05 screenpipe.2026-04-11.0.log
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
screenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
702
|
16
|
55
|
2026-04-11T12:07:49.204809+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909269204_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
screenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"\nscreenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\"","depth":4,"value":"drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"\nscreenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\"","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-798982562796399289
|
5508628469633640965
|
clipboard
|
accessibility
|
NULL
|
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
screenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
701
|
|
703
|
16
|
56
|
2026-04-11T12:07:50.015180+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909270015_m1.jpg...
|
iTerm2
|
sqlite3
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
screenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_sqlx_migrations meetings
audio_chunks memories
audio_tags memories_fts
audio_transcriptions memories_fts_config
audio_transcriptions_fts memories_fts_data
audio_transcriptions_fts_config memories_fts_docsize
audio_transcriptions_fts_data memories_fts_idx
audio_transcriptions_fts_docsize ocr_text
audio_transcriptions_fts_idx pipe_executions
elements pipe_scheduler_state
elements_fts speaker_embeddings
elements_fts_config speakers
elements_fts_data tags
elements_fts_docsize ui_events
elements_fts_idx ui_events_fts
frames ui_events_fts_config
frames_fts ui_events_fts_data
frames_fts_config ui_events_fts_docsize
frames_fts_content ui_events_fts_idx
frames_fts_data video_chunks
frames_fts_docsize vision_tags
frames_fts_idx
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
sqlite3
Close Tab
⌥⌘1
sqlite3...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"\nscreenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\"\n_sqlx_migrations meetings \naudio_chunks memories \naudio_tags memories_fts \naudio_transcriptions memories_fts_config \naudio_transcriptions_fts memories_fts_data \naudio_transcriptions_fts_config memories_fts_docsize \naudio_transcriptions_fts_data memories_fts_idx \naudio_transcriptions_fts_docsize ocr_text \naudio_transcriptions_fts_idx pipe_executions \nelements pipe_scheduler_state \nelements_fts speaker_embeddings \nelements_fts_config speakers \nelements_fts_data tags \nelements_fts_docsize ui_events \nelements_fts_idx ui_events_fts \nframes ui_events_fts_config \nframes_fts ui_events_fts_data \nframes_fts_config ui_events_fts_docsize \nframes_fts_content ui_events_fts_idx \nframes_fts_data video_chunks \nframes_fts_docsize vision_tags \nframes_fts_idx \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","depth":4,"value":"drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"\nscreenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\"\n_sqlx_migrations meetings \naudio_chunks memories \naudio_tags memories_fts \naudio_transcriptions memories_fts_config \naudio_transcriptions_fts memories_fts_data \naudio_transcriptions_fts_config memories_fts_docsize \naudio_transcriptions_fts_data memories_fts_idx \naudio_transcriptions_fts_docsize ocr_text \naudio_transcriptions_fts_idx pipe_executions \nelements pipe_scheduler_state \nelements_fts speaker_embeddings \nelements_fts_config speakers \nelements_fts_data tags \nelements_fts_docsize ui_events \nelements_fts_idx ui_events_fts \nframes ui_events_fts_config \nframes_fts ui_events_fts_data \nframes_fts_config ui_events_fts_docsize \nframes_fts_content ui_events_fts_idx \nframes_fts_data video_chunks \nframes_fts_docsize vision_tags \nframes_fts_idx \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"sqlite3","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"sqlite3","depth":1,"bounds":{"left":0.4826389,"top":0.033333335,"width":0.034027778,"height":0.017777778},"role_description":"text"}]...
|
-4744449960660385902
|
971287029161519621
|
visual_change
|
accessibility
|
NULL
|
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
screenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_sqlx_migrations meetings
audio_chunks memories
audio_tags memories_fts
audio_transcriptions memories_fts_config
audio_transcriptions_fts memories_fts_data
audio_transcriptions_fts_config memories_fts_docsize
audio_transcriptions_fts_data memories_fts_idx
audio_transcriptions_fts_docsize ocr_text
audio_transcriptions_fts_idx pipe_executions
elements pipe_scheduler_state
elements_fts speaker_embeddings
elements_fts_config speakers
elements_fts_data tags
elements_fts_docsize ui_events
elements_fts_idx ui_events_fts
frames ui_events_fts_config
frames_fts ui_events_fts_data
frames_fts_config ui_events_fts_docsize
frames_fts_content ui_events_fts_idx
frames_fts_data video_chunks
frames_fts_docsize vision_tags
frames_fts_idx
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
sqlite3
Close Tab
⌥⌘1
sqlite3...
|
NULL
|
|
704
|
16
|
57
|
2026-04-11T12:08:18.640346+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909298640_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp40lhl-zshDOCKER• ₴1DEV (-zsh)-O $2APP (-zsh)• *3-zsh• 84lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"_sqlx_migrationsmeetingsaudio_chunksmemoriesaudio_tagsmemories_ftsaudio_transcriptionsaudio_transcriptions_ftsmemories_fts_configmemories_fts_dataaudio_transcriptions_fts_configmemories_fts_docsizeaudio_transcriptions_fts_dataaudio_transcriptions_fts_docsizememories_fts_idxaudio_transcriptions_fts_idxocr_textpipe_executionselementselements_ftspipe_scheduler_statespeaker_embeddingselements_fts_configspeakerselements_fts_datatagselements_fts_docsizeui_eventselements_fts_idxui_events_ftsframesui_events_fts_configframes_ftsframes_fts_configui_events_fts_dataui_events_fts_docsizeframes_fts_contentui_events_fts_idxframes_fts_datavideo_chunksframes_fts_docsizeframes_fts_idxvision_tagslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $|-zsh• 85-zsh100% CSat 11 Apr 15:08:18T81• ÷6-zsh*7...
|
NULL
|
3096911439121115294
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp40lhl-zshDOCKER• ₴1DEV (-zsh)-O $2APP (-zsh)• *3-zsh• 84lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"_sqlx_migrationsmeetingsaudio_chunksmemoriesaudio_tagsmemories_ftsaudio_transcriptionsaudio_transcriptions_ftsmemories_fts_configmemories_fts_dataaudio_transcriptions_fts_configmemories_fts_docsizeaudio_transcriptions_fts_dataaudio_transcriptions_fts_docsizememories_fts_idxaudio_transcriptions_fts_idxocr_textpipe_executionselementselements_ftspipe_scheduler_statespeaker_embeddingselements_fts_configspeakerselements_fts_datatagselements_fts_docsizeui_eventselements_fts_idxui_events_ftsframesui_events_fts_configframes_ftsframes_fts_configui_events_fts_dataui_events_fts_docsizeframes_fts_contentui_events_fts_idxframes_fts_datavideo_chunksframes_fts_docsizeframes_fts_idxvision_tagslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $|-zsh• 85-zsh100% CSat 11 Apr 15:08:18T81• ÷6-zsh*7...
|
703
|
|
705
|
16
|
58
|
2026-04-11T12:08:19.839738+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909299839_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindovDOC iTerm2ShellEditViewSessionScriptsProfilesWindovDOCKERO ₴1DEV (-zsh)-О 882APP (-zsllukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite_sqlx_migrationsmeetingsaudio_chunksmemoriesaudio_tagsmemories_ftsaudio_transcriptionsaudio_transcriptions_ftsmemories_fts_configmemories_fts_dataaudio_transcriptions_fts_configmemories_fts_docsizeaudio_transcriptions_fts_dataaudio_transcriptions_fts_docsizememories_fts_idxaudio_transcriptions_fts_idxocr_textpipe_executionselementselements_ftspipe_scheduler_statespeaker_embeddingselements_fts_configspeakerselements_fts_datatagselements_fts_docsizeelements_fts_idxui_eventsui_events_ftsframesui_events_fts_configframes_ftsframes_fts_configui_events_fts_dataui_events_fts_docsizeframes_fts_contentui_events_fts_idxframes_fts_datavideo_chunksframes_fts_docsizevision_tagsframes_fts_idxlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ 0...
|
NULL
|
-3378063892619653220
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindovDOC iTerm2ShellEditViewSessionScriptsProfilesWindovDOCKERO ₴1DEV (-zsh)-О 882APP (-zsllukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite_sqlx_migrationsmeetingsaudio_chunksmemoriesaudio_tagsmemories_ftsaudio_transcriptionsaudio_transcriptions_ftsmemories_fts_configmemories_fts_dataaudio_transcriptions_fts_configmemories_fts_docsizeaudio_transcriptions_fts_dataaudio_transcriptions_fts_docsizememories_fts_idxaudio_transcriptions_fts_idxocr_textpipe_executionselementselements_ftspipe_scheduler_statespeaker_embeddingselements_fts_configspeakerselements_fts_datatagselements_fts_docsizeelements_fts_idxui_eventsui_events_ftsframesui_events_fts_configframes_ftsframes_fts_configui_events_fts_dataui_events_fts_docsizeframes_fts_contentui_events_fts_idxframes_fts_datavideo_chunksframes_fts_docsizevision_tagsframes_fts_idxlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ 0...
|
NULL
|
|
706
|
16
|
59
|
2026-04-11T12:08:20.550784+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909300550_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
screenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_sqlx_migrations meetings
audio_chunks memories
audio_tags memories_fts
audio_transcriptions memories_fts_config
audio_transcriptions_fts memories_fts_data
audio_transcriptions_fts_config memories_fts_docsize
audio_transcriptions_fts_data memories_fts_idx
audio_transcriptions_fts_docsize ocr_text
audio_transcriptions_fts_idx pipe_executions
elements pipe_scheduler_state
elements_fts speaker_embeddings
elements_fts_config speakers
elements_fts_data tags
elements_fts_docsize ui_events
elements_fts_idx ui_events_fts
frames ui_events_fts_config
frames_fts ui_events_fts_data
frames_fts_config ui_events_fts_docsize
frames_fts_content ui_events_fts_idx
frames_fts_data video_chunks
frames_fts_docsize vision_tags
frames_fts_idx
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"\nscreenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\"\n_sqlx_migrations meetings \naudio_chunks memories \naudio_tags memories_fts \naudio_transcriptions memories_fts_config \naudio_transcriptions_fts memories_fts_data \naudio_transcriptions_fts_config memories_fts_docsize \naudio_transcriptions_fts_data memories_fts_idx \naudio_transcriptions_fts_docsize ocr_text \naudio_transcriptions_fts_idx pipe_executions \nelements pipe_scheduler_state \nelements_fts speaker_embeddings \nelements_fts_config speakers \nelements_fts_data tags \nelements_fts_docsize ui_events \nelements_fts_idx ui_events_fts \nframes ui_events_fts_config \nframes_fts ui_events_fts_data \nframes_fts_config ui_events_fts_docsize \nframes_fts_content ui_events_fts_idx \nframes_fts_data video_chunks \nframes_fts_docsize vision_tags \nframes_fts_idx \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","depth":4,"value":"drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"\nscreenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\"\n_sqlx_migrations meetings \naudio_chunks memories \naudio_tags memories_fts \naudio_transcriptions memories_fts_config \naudio_transcriptions_fts memories_fts_data \naudio_transcriptions_fts_config memories_fts_docsize \naudio_transcriptions_fts_data memories_fts_idx \naudio_transcriptions_fts_docsize ocr_text \naudio_transcriptions_fts_idx pipe_executions \nelements pipe_scheduler_state \nelements_fts speaker_embeddings \nelements_fts_config speakers \nelements_fts_data tags \nelements_fts_docsize ui_events \nelements_fts_idx ui_events_fts \nframes ui_events_fts_config \nframes_fts ui_events_fts_data \nframes_fts_config ui_events_fts_docsize \nframes_fts_content ui_events_fts_idx \nframes_fts_data video_chunks \nframes_fts_docsize vision_tags \nframes_fts_idx \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
5896168947850374843
|
1043309438827358725
|
click
|
accessibility
|
NULL
|
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
screenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_sqlx_migrations meetings
audio_chunks memories
audio_tags memories_fts
audio_transcriptions memories_fts_config
audio_transcriptions_fts memories_fts_data
audio_transcriptions_fts_config memories_fts_docsize
audio_transcriptions_fts_data memories_fts_idx
audio_transcriptions_fts_docsize ocr_text
audio_transcriptions_fts_idx pipe_executions
elements pipe_scheduler_state
elements_fts speaker_embeddings
elements_fts_config speakers
elements_fts_data tags
elements_fts_docsize ui_events
elements_fts_idx ui_events_fts
frames ui_events_fts_config
frames_fts ui_events_fts_data
frames_fts_config ui_events_fts_docsize
frames_fts_content ui_events_fts_idx
frames_fts_data video_chunks
frames_fts_docsize vision_tags
frames_fts_idx
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
705
|
|
707
|
16
|
60
|
2026-04-11T12:08:21.344852+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909301344_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
screenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_sqlx_migrations meetings
audio_chunks memories
audio_tags memories_fts
audio_transcriptions memories_fts_config
audio_transcriptions_fts memories_fts_data
audio_transcriptions_fts_config memories_fts_docsize
audio_transcriptions_fts_data memories_fts_idx
audio_transcriptions_fts_docsize ocr_text
audio_transcriptions_fts_idx pipe_executions
elements pipe_scheduler_state
elements_fts speaker_embeddings
elements_fts_config speakers
elements_fts_data tags
elements_fts_docsize ui_events
elements_fts_idx ui_events_fts
frames ui_events_fts_config
frames_fts ui_events_fts_data
frames_fts_config ui_events_fts_docsize
frames_fts_content ui_events_fts_idx
frames_fts_data video_chunks
frames_fts_docsize vision_tags
frames_fts_idx
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema"
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"\nscreenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\"\n_sqlx_migrations meetings \naudio_chunks memories \naudio_tags memories_fts \naudio_transcriptions memories_fts_config \naudio_transcriptions_fts memories_fts_data \naudio_transcriptions_fts_config memories_fts_docsize \naudio_transcriptions_fts_data memories_fts_idx \naudio_transcriptions_fts_docsize ocr_text \naudio_transcriptions_fts_idx pipe_executions \nelements pipe_scheduler_state \nelements_fts speaker_embeddings \nelements_fts_config speakers \nelements_fts_data tags \nelements_fts_docsize ui_events \nelements_fts_idx ui_events_fts \nframes ui_events_fts_config \nframes_fts ui_events_fts_data \nframes_fts_config ui_events_fts_docsize \nframes_fts_content ui_events_fts_idx \nframes_fts_data video_chunks \nframes_fts_docsize vision_tags \nframes_fts_idx \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".schema\"","depth":4,"value":"drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"\nscreenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\"\n_sqlx_migrations meetings \naudio_chunks memories \naudio_tags memories_fts \naudio_transcriptions memories_fts_config \naudio_transcriptions_fts memories_fts_data \naudio_transcriptions_fts_config memories_fts_docsize \naudio_transcriptions_fts_data memories_fts_idx \naudio_transcriptions_fts_docsize ocr_text \naudio_transcriptions_fts_idx pipe_executions \nelements pipe_scheduler_state \nelements_fts speaker_embeddings \nelements_fts_config speakers \nelements_fts_data tags \nelements_fts_docsize ui_events \nelements_fts_idx ui_events_fts \nframes ui_events_fts_config \nframes_fts ui_events_fts_data \nframes_fts_config ui_events_fts_docsize \nframes_fts_content ui_events_fts_idx \nframes_fts_data video_chunks \nframes_fts_docsize vision_tags \nframes_fts_idx \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".schema\"","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-7666778357200871500
|
1115367032869612037
|
clipboard
|
accessibility
|
NULL
|
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
screenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_sqlx_migrations meetings
audio_chunks memories
audio_tags memories_fts
audio_transcriptions memories_fts_config
audio_transcriptions_fts memories_fts_data
audio_transcriptions_fts_config memories_fts_docsize
audio_transcriptions_fts_data memories_fts_idx
audio_transcriptions_fts_docsize ocr_text
audio_transcriptions_fts_idx pipe_executions
elements pipe_scheduler_state
elements_fts speaker_embeddings
elements_fts_config speakers
elements_fts_data tags
elements_fts_docsize ui_events
elements_fts_idx ui_events_fts
frames ui_events_fts_config
frames_fts ui_events_fts_data
frames_fts_config ui_events_fts_docsize
frames_fts_content ui_events_fts_idx
frames_fts_data video_chunks
frames_fts_docsize vision_tags
frames_fts_idx
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema"
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
708
|
16
|
61
|
2026-04-11T12:08:23.341863+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909303341_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
screenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_sqlx_migrations meetings
audio_chunks memories
audio_tags memories_fts
audio_transcriptions memories_fts_config
audio_transcriptions_fts memories_fts_data
audio_transcriptions_fts_config memories_fts_docsize
audio_transcriptions_fts_data memories_fts_idx
audio_transcriptions_fts_docsize ocr_text
audio_transcriptions_fts_idx pipe_executions
elements pipe_scheduler_state
elements_fts speaker_embeddings
elements_fts_config speakers
elements_fts_data tags
elements_fts_docsize ui_events
elements_fts_idx ui_events_fts
frames ui_events_fts_config
frames_fts ui_events_fts_data
frames_fts_config ui_events_fts_docsize
frames_fts_content ui_events_fts_idx
frames_fts_data video_chunks
frames_fts_docsize vision_tags
frames_fts_idx
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema"
CREATE TABLE _sqlx_migrations (
version BIGINT PRIMARY KEY,
description TEXT NOT NULL,
installed_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
success BOOLEAN NOT NULL,
checksum BLOB NOT NULL,
execution_time BIGINT NOT NULL
);
CREATE TABLE video_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, device_name TEXT NOT NULL DEFAULT '', sync_id TEXT, machine_id TEXT, synced_at DATETIME, fps REAL NOT NULL DEFAULT 0.5, cloud_blob_id TEXT DEFAULT NULL);
CREATE TABLE sqlite_sequence(name,seq);
CREATE TABLE audio_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE TABLE IF NOT EXISTS "ocr_text" (
frame_id INTEGER NOT NULL,
text TEXT NOT NULL,
text_json TEXT,
app_name TEXT NOT NULL DEFAULT '',
ocr_engine TEXT NOT NULL DEFAULT 'unknown'
, window_name TEXT, focused BOOLEAN DEFAULT FALSE, text_length INTEGER, sync_id TEXT, synced_at DATETIME);
CREATE TABLE tags (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE vision_tags (
vision_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (vision_id, tag_id),
FOREIGN KEY (vision_id) REFERENCES frames(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE TABLE audio_tags (
audio_chunk_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (audio_chunk_id, tag_id),
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id);
CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id);
CREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);
CREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);
CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name);
CREATE TABLE speakers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
metadata JSON
, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);
CREATE TABLE speaker_embeddings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
embedding FLOAT[512] NOT NULL
check(
typeof(embedding) == 'blob'
and vec_length(embedding) == 512
),
speaker_id INTEGER REFERENCES speakers(id)
);
CREATE TABLE IF NOT EXISTS "audio_transcriptions" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
audio_chunk_id INTEGER NOT NULL,
offset_index INTEGER NOT NULL,
timestamp TIMESTAMP NOT NULL,
transcription TEXT NOT NULL,
device TEXT NOT NULL DEFAULT '',
is_input_device BOOLEAN NOT NULL DEFAULT TRUE,
speaker_id INTEGER,
transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME,
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)
);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);
CREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);
CREATE INDEX idx_ocr_text_length ON ocr_text (text_length);
CREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);
CREATE TABLE ui_events (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
session_id TEXT,
relative_ms INTEGER NOT NULL DEFAULT 0,
event_type TEXT NOT NULL, -- click, move, scroll, key, text, app_switch, window_focus, clipboard
-- Position
x INTEGER,
y INTEGER,
delta_x INTEGER,
delta_y INTEGER,
-- Mouse/key
button INTEGER,
click_count INTEGER,
key_code INTEGER,
modifiers INTEGER,
-- Text content
text_content TEXT,
text_length INTEGER,
-- App context
app_name TEXT,
app_pid INTEGER,
window_title TEXT,
browser_url TEXT,
-- Element context (from accessibility APIs)
element_role TEXT,
element_name TEXT,
element_value TEXT,
element_description TEXT,
element_automation_id TEXT,
element_bounds TEXT, -- JSON: {"x":0,"y":0,"width":100,"height":50}
-- Frame correlation
frame_id INTEGER,
-- Sync columns
sync_id TEXT,
machine_id TEXT,
synced_at DATETIME
);
CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp);
CREATE INDEX idx_ui_events_event_type ON ui_events(event_type);
CREATE INDEX idx_ui_events_app_name ON ui_events(app_name);
CREATE INDEX idx_ui_events_session_id ON ui_events(session_id);
CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id);
CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id);
CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at);
CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL;
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
/* ui_events_fts(text_content,app_name,window_title,element_name) */;
CREATE TABLE IF NOT EXISTS 'ui_events_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'ui_events_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'ui_events_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'ui_events_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER ui_events_ad AFTER DELETE ON ui_events BEGIN
INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)
VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);
END;
CREATE TRIGGER ui_events_au AFTER UPDATE ON ui_events BEGIN
INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)
VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);
INSERT INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)
VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);
END;
CREATE UNIQUE INDEX idx_audio_transcription_chunk_text
ON audio_transcriptions(audio_chunk_id, transcription);
CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name);
CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC);
CREATE TABLE pipe_executions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
pipe_name TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'queued',
trigger_type TEXT NOT NULL DEFAULT 'manual',
pid INTEGER,
model TEXT,
provider TEXT,
started_at TEXT,
finished_at TEXT,
stdout TEXT DEFAULT '',
stderr TEXT DEFAULT '',
exit_code INTEGER,
error_type TEXT,
error_message TEXT,
duration_ms INTEGER
, session_path TEXT);
CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status);
CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running';
CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC);
CREATE TABLE pipe_scheduler_state (
pipe_name TEXT PRIMARY KEY,
last_run_at TEXT,
last_success_at TEXT,
consecutive_failures INTEGER DEFAULT 0
);
CREATE TABLE IF NOT EXISTS "frames" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
video_chunk_id INTEGER DEFAULT NULL,
offset_index INTEGER NOT NULL DEFAULT 0,
timestamp TIMESTAMP NOT NULL,
name TEXT,
app_name TEXT DEFAULT NULL,
window_name TEXT DEFAULT NULL,
focused BOOLEAN DEFAULT NULL,
browser_url TEXT DEFAULT NULL,
device_name TEXT NOT NULL DEFAULT '',
sync_id TEXT,
machine_id TEXT,
synced_at DATETIME,
-- New event-driven capture columns
snapshot_path TEXT DEFAULT NULL,
accessibility_text TEXT DEFAULT NULL,
accessibility_tree_json TEXT DEFAULT NULL,
content_hash INTEGER DEFAULT NULL,
simhash INTEGER DEFAULT NULL,
capture_trigger TEXT DEFAULT NULL,
text_source TEXT DEFAULT NULL, cloud_blob_id TEXT DEFAULT NULL, full_text TEXT DEFAULT NULL, elements_ref_frame_id INTEGER DEFAULT NULL,
FOREIGN KEY (video_chunk_id) REFERENCES video_chunks(id)
);
CREATE INDEX idx_frames_timestamp ON frames(timestamp);
CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id);
CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name);
CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL;
CREATE TRIGGER ui_events_ai AFTER INSERT ON ui_events BEGIN
INSERT OR IGNORE INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)
VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);
END;
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);
CREATE TABLE elements (
id INTEGER PRIMARY KEY AUTOINCREMENT,
frame_id INTEGER NOT NULL,
source TEXT NOT NULL, -- 'ocr' | 'accessibility'
role TEXT NOT NULL, -- OCR: 'page','block','paragraph','line','word'
-- AX: 'AXButton','AXTextField','AXStaticText', etc.
text TEXT, -- element text content (NULL for container nodes)
parent_id INTEGER, -- self-referential FK for tree hierarchy (NULL = root)
depth INTEGER NOT NULL DEFAULT 0, -- tree depth (0 = root)
left_bound REAL, -- normalized 0-1 bounding box
top_bound REAL,
width_bound REAL,
height_bound REAL,
confidence REAL, -- OCR confidence (0-100), NULL for AX
sort_order INTEGER NOT NULL DEFAULT 0, properties TEXT, -- sibling order within parent
FOREIGN KEY (frame_id) REFERENCES frames(id),
FOREIGN KEY (parent_id) REFERENCES elements(id)
);
CREATE INDEX idx_elements_frame_id ON elements(frame_id);
CREATE INDEX idx_elements_parent_id ON elements(parent_id);
CREATE INDEX idx_elements_source ON elements(source);
CREATE INDEX idx_elements_frame_source ON elements(frame_id, source);
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
/* elements_fts(text,role,frame_id) */;
CREATE TABLE IF NOT EXISTS 'elements_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'elements_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'elements_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'elements_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER elements_ai AFTER INSERT ON elements
WHEN NEW.text IS NOT NULL AND NEW.text != ''
BEGIN
INSERT INTO elements_fts(rowid, text, role, frame_id)
VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);
END;
CREATE TRIGGER elements_ad AFTER DELETE ON elements
WHEN OLD.text IS NOT NULL AND OLD.text != ''
BEGIN
INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)
VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);
END;
CREATE TRIGGER elements_au AFTER UPDATE ON elements
WHEN OLD.text IS NOT NULL AND OLD.text != ''
BEGIN
INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)
VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);
INSERT INTO elements_fts(rowid, text, role, frame_id)
VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);
END;
CREATE VIRTUAL TABLE audio_transcriptions_fts USING fts5(
transcription,
device,
speaker_id,
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
)
/* audio_transcriptions_fts(transcription,device,speaker_id) */;
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions
WHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL;
CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL;
CREATE TABLE memories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
content TEXT NOT NULL,
source TEXT NOT NULL DEFAULT 'user',
source_context TEXT,
tags TEXT DEFAULT '[]',
importance REAL DEFAULT 0.5,
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
, frame_id INTEGER REFERENCES frames(id) ON DELETE SET NULL);
CREATE INDEX idx_memories_created_at ON memories(created_at);
CREATE INDEX idx_memories_importance ON memories(importance DESC);
CREATE INDEX idx_memories_source ON memories(source);
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
/* memories_fts(content,tags) */;
CREATE TABLE IF NOT EXISTS 'memories_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'memories_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'memories_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'memories_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER memories_ai AFTER INSERT ON memories
WHEN NEW.content IS NOT NULL AND NEW.content != ''
BEGIN
INSERT INTO memories_fts(rowid, content, tags)
VALUES (NEW.id, NEW.content, COALESCE(NEW.tags, ''));
END;
CREATE TRIGGER memories_ad AFTER DELETE ON memories
WHEN OLD.content IS NOT NULL AND OLD.content != ''
BEGIN
INSERT INTO memories_fts(memories_fts, rowid, content, tags)
VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));
END;
CREATE TRIGGER memories_au AFTER UPDATE ON memories
WHEN OLD.content IS NOT NULL AND OLD.content != ''
BEGIN
INSERT INTO memories_fts(memories_fts, rowid, content, tags)
VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));
INSERT INTO memories_fts(rowid, content, tags)
VALUES (NEW.id, COALESCE(NEW.content, ''), COALESCE(NEW.tags, ''));
END;
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
id UNINDEXED,
tokenize='unicode61'
)
/* frames_fts(full_text,app_name,window_name,browser_url,id) */;
CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);
CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER frames_ai AFTER INSERT ON frames
WHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''
BEGIN
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
VALUES (
NEW.id,
NEW.full_text,
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
);
END;
CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
SELECT
NEW.id,
COALESCE(NEW.full_text, ''),
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';
END;
CREATE TRIGGER frames_ad AFTER DELETE ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
END;
CREATE INDEX idx_memories_frame_id ON memories(frame_id);
CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL;
CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"\nscreenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\"\n_sqlx_migrations meetings \naudio_chunks memories \naudio_tags memories_fts \naudio_transcriptions memories_fts_config \naudio_transcriptions_fts memories_fts_data \naudio_transcriptions_fts_config memories_fts_docsize \naudio_transcriptions_fts_data memories_fts_idx \naudio_transcriptions_fts_docsize ocr_text \naudio_transcriptions_fts_idx pipe_executions \nelements pipe_scheduler_state \nelements_fts speaker_embeddings \nelements_fts_config speakers \nelements_fts_data tags \nelements_fts_docsize ui_events \nelements_fts_idx ui_events_fts \nframes ui_events_fts_config \nframes_fts ui_events_fts_data \nframes_fts_config ui_events_fts_docsize \nframes_fts_content ui_events_fts_idx \nframes_fts_data video_chunks \nframes_fts_docsize vision_tags \nframes_fts_idx \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".schema\"\nCREATE TABLE _sqlx_migrations (\n version BIGINT PRIMARY KEY,\n description TEXT NOT NULL,\n installed_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,\n success BOOLEAN NOT NULL,\n checksum BLOB NOT NULL,\n execution_time BIGINT NOT NULL\n);\nCREATE TABLE video_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, device_name TEXT NOT NULL DEFAULT '', sync_id TEXT, machine_id TEXT, synced_at DATETIME, fps REAL NOT NULL DEFAULT 0.5, cloud_blob_id TEXT DEFAULT NULL);\nCREATE TABLE sqlite_sequence(name,seq);\nCREATE TABLE audio_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nCREATE TABLE IF NOT EXISTS \"ocr_text\" (\n frame_id INTEGER NOT NULL,\n text TEXT NOT NULL,\n text_json TEXT,\n app_name TEXT NOT NULL DEFAULT '',\n ocr_engine TEXT NOT NULL DEFAULT 'unknown'\n, window_name TEXT, focused BOOLEAN DEFAULT FALSE, text_length INTEGER, sync_id TEXT, synced_at DATETIME);\nCREATE TABLE tags (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT NOT NULL UNIQUE,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP\n);\nCREATE TABLE vision_tags (\n vision_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (vision_id, tag_id),\n FOREIGN KEY (vision_id) REFERENCES frames(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE TABLE audio_tags (\n audio_chunk_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (audio_chunk_id, tag_id),\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id);\nCREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id);\nCREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);\nCREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);\nCREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id);\nCREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name);\nCREATE TABLE speakers (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT,\n metadata JSON\n, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);\nCREATE TABLE speaker_embeddings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n embedding FLOAT[512] NOT NULL\n check(\n typeof(embedding) == 'blob'\n and vec_length(embedding) == 512\n ),\n speaker_id INTEGER REFERENCES speakers(id)\n);\nCREATE TABLE IF NOT EXISTS \"audio_transcriptions\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n audio_chunk_id INTEGER NOT NULL,\n offset_index INTEGER NOT NULL,\n timestamp TIMESTAMP NOT NULL,\n transcription TEXT NOT NULL,\n device TEXT NOT NULL DEFAULT '',\n is_input_device BOOLEAN NOT NULL DEFAULT TRUE,\n speaker_id INTEGER,\n transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME,\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)\n);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);\nCREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);\nCREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);\nCREATE INDEX idx_ocr_text_length ON ocr_text (text_length);\nCREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);\nCREATE TABLE ui_events (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n session_id TEXT,\n relative_ms INTEGER NOT NULL DEFAULT 0,\n event_type TEXT NOT NULL, -- click, move, scroll, key, text, app_switch, window_focus, clipboard\n -- Position\n x INTEGER,\n y INTEGER,\n delta_x INTEGER,\n delta_y INTEGER,\n -- Mouse/key\n button INTEGER,\n click_count INTEGER,\n key_code INTEGER,\n modifiers INTEGER,\n -- Text content\n text_content TEXT,\n text_length INTEGER,\n -- App context\n app_name TEXT,\n app_pid INTEGER,\n window_title TEXT,\n browser_url TEXT,\n -- Element context (from accessibility APIs)\n element_role TEXT,\n element_name TEXT,\n element_value TEXT,\n element_description TEXT,\n element_automation_id TEXT,\n element_bounds TEXT, -- JSON: {\"x\":0,\"y\":0,\"width\":100,\"height\":50}\n -- Frame correlation\n frame_id INTEGER,\n -- Sync columns\n sync_id TEXT,\n machine_id TEXT,\n synced_at DATETIME\n);\nCREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp);\nCREATE INDEX idx_ui_events_event_type ON ui_events(event_type);\nCREATE INDEX idx_ui_events_app_name ON ui_events(app_name);\nCREATE INDEX idx_ui_events_session_id ON ui_events(session_id);\nCREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id);\nCREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id);\nCREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at);\nCREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL;\nCREATE VIRTUAL TABLE ui_events_fts USING fts5(\n text_content,\n app_name,\n window_title,\n element_name,\n content='ui_events',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* ui_events_fts(text_content,app_name,window_title,element_name) */;\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER ui_events_ad AFTER DELETE ON ui_events BEGIN\n INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)\n VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);\nEND;\nCREATE TRIGGER ui_events_au AFTER UPDATE ON ui_events BEGIN\n INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)\n VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);\n INSERT INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)\n VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);\nEND;\nCREATE UNIQUE INDEX idx_audio_transcription_chunk_text\nON audio_transcriptions(audio_chunk_id, transcription);\nCREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name);\nCREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC);\nCREATE TABLE pipe_executions (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n pipe_name TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'queued',\n trigger_type TEXT NOT NULL DEFAULT 'manual',\n pid INTEGER,\n model TEXT,\n provider TEXT,\n started_at TEXT,\n finished_at TEXT,\n stdout TEXT DEFAULT '',\n stderr TEXT DEFAULT '',\n exit_code INTEGER,\n error_type TEXT,\n error_message TEXT,\n duration_ms INTEGER\n, session_path TEXT);\nCREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status);\nCREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running';\nCREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC);\nCREATE TABLE pipe_scheduler_state (\n pipe_name TEXT PRIMARY KEY,\n last_run_at TEXT,\n last_success_at TEXT,\n consecutive_failures INTEGER DEFAULT 0\n);\nCREATE TABLE IF NOT EXISTS \"frames\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n video_chunk_id INTEGER DEFAULT NULL,\n offset_index INTEGER NOT NULL DEFAULT 0,\n timestamp TIMESTAMP NOT NULL,\n name TEXT,\n app_name TEXT DEFAULT NULL,\n window_name TEXT DEFAULT NULL,\n focused BOOLEAN DEFAULT NULL,\n browser_url TEXT DEFAULT NULL,\n device_name TEXT NOT NULL DEFAULT '',\n sync_id TEXT,\n machine_id TEXT,\n synced_at DATETIME,\n -- New event-driven capture columns\n snapshot_path TEXT DEFAULT NULL,\n accessibility_text TEXT DEFAULT NULL,\n accessibility_tree_json TEXT DEFAULT NULL,\n content_hash INTEGER DEFAULT NULL,\n simhash INTEGER DEFAULT NULL,\n capture_trigger TEXT DEFAULT NULL,\n text_source TEXT DEFAULT NULL, cloud_blob_id TEXT DEFAULT NULL, full_text TEXT DEFAULT NULL, elements_ref_frame_id INTEGER DEFAULT NULL,\n FOREIGN KEY (video_chunk_id) REFERENCES video_chunks(id)\n);\nCREATE INDEX idx_frames_timestamp ON frames(timestamp);\nCREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id);\nCREATE INDEX idx_frames_timestamp_device\n ON frames(timestamp, device_name);\nCREATE INDEX idx_frames_snapshot_path\n ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL;\nCREATE TRIGGER ui_events_ai AFTER INSERT ON ui_events BEGIN\n INSERT OR IGNORE INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)\n VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);\nEND;\nCREATE TABLE meetings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n meeting_start TEXT NOT NULL,\n meeting_end TEXT,\n meeting_app TEXT NOT NULL,\n title TEXT,\n attendees TEXT,\n detection_source TEXT NOT NULL DEFAULT 'app',\n created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n, note TEXT);\nCREATE INDEX idx_meetings_start ON meetings(meeting_start);\nCREATE INDEX idx_meetings_end ON meetings(meeting_end);\nCREATE TABLE elements (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n frame_id INTEGER NOT NULL,\n source TEXT NOT NULL, -- 'ocr' | 'accessibility'\n role TEXT NOT NULL, -- OCR: 'page','block','paragraph','line','word'\n -- AX: 'AXButton','AXTextField','AXStaticText', etc.\n text TEXT, -- element text content (NULL for container nodes)\n parent_id INTEGER, -- self-referential FK for tree hierarchy (NULL = root)\n depth INTEGER NOT NULL DEFAULT 0, -- tree depth (0 = root)\n left_bound REAL, -- normalized 0-1 bounding box\n top_bound REAL,\n width_bound REAL,\n height_bound REAL,\n confidence REAL, -- OCR confidence (0-100), NULL for AX\n sort_order INTEGER NOT NULL DEFAULT 0, properties TEXT, -- sibling order within parent\n FOREIGN KEY (frame_id) REFERENCES frames(id),\n FOREIGN KEY (parent_id) REFERENCES elements(id)\n);\nCREATE INDEX idx_elements_frame_id ON elements(frame_id);\nCREATE INDEX idx_elements_parent_id ON elements(parent_id);\nCREATE INDEX idx_elements_source ON elements(source);\nCREATE INDEX idx_elements_frame_source ON elements(frame_id, source);\nCREATE VIRTUAL TABLE elements_fts USING fts5(\n text,\n role,\n frame_id UNINDEXED,\n content='elements',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* elements_fts(text,role,frame_id) */;\nCREATE TABLE IF NOT EXISTS 'elements_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'elements_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'elements_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'elements_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER elements_ai AFTER INSERT ON elements\nWHEN NEW.text IS NOT NULL AND NEW.text != ''\nBEGIN\n INSERT INTO elements_fts(rowid, text, role, frame_id)\n VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);\nEND;\nCREATE TRIGGER elements_ad AFTER DELETE ON elements\nWHEN OLD.text IS NOT NULL AND OLD.text != ''\nBEGIN\n INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)\n VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);\nEND;\nCREATE TRIGGER elements_au AFTER UPDATE ON elements\nWHEN OLD.text IS NOT NULL AND OLD.text != ''\nBEGIN\n INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)\n VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);\n INSERT INTO elements_fts(rowid, text, role, frame_id)\n VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);\nEND;\nCREATE VIRTUAL TABLE audio_transcriptions_fts USING fts5(\n transcription,\n device,\n speaker_id,\n content='audio_transcriptions',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* audio_transcriptions_fts(transcription,device,speaker_id) */;\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions\nWHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE INDEX idx_video_chunks_cloud_blob_id\n ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL;\nCREATE INDEX idx_frames_cloud_blob_id\n ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL;\nCREATE TABLE memories (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n content TEXT NOT NULL,\n source TEXT NOT NULL DEFAULT 'user',\n source_context TEXT,\n tags TEXT DEFAULT '[]',\n importance REAL DEFAULT 0.5,\n created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n, frame_id INTEGER REFERENCES frames(id) ON DELETE SET NULL);\nCREATE INDEX idx_memories_created_at ON memories(created_at);\nCREATE INDEX idx_memories_importance ON memories(importance DESC);\nCREATE INDEX idx_memories_source ON memories(source);\nCREATE VIRTUAL TABLE memories_fts USING fts5(\n content,\n tags,\n content='memories',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* memories_fts(content,tags) */;\nCREATE TABLE IF NOT EXISTS 'memories_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'memories_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'memories_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'memories_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER memories_ai AFTER INSERT ON memories\nWHEN NEW.content IS NOT NULL AND NEW.content != ''\nBEGIN\n INSERT INTO memories_fts(rowid, content, tags)\n VALUES (NEW.id, NEW.content, COALESCE(NEW.tags, ''));\nEND;\nCREATE TRIGGER memories_ad AFTER DELETE ON memories\nWHEN OLD.content IS NOT NULL AND OLD.content != ''\nBEGIN\n INSERT INTO memories_fts(memories_fts, rowid, content, tags)\n VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));\nEND;\nCREATE TRIGGER memories_au AFTER UPDATE ON memories\nWHEN OLD.content IS NOT NULL AND OLD.content != ''\nBEGIN\n INSERT INTO memories_fts(memories_fts, rowid, content, tags)\n VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));\n INSERT INTO memories_fts(rowid, content, tags)\n VALUES (NEW.id, COALESCE(NEW.content, ''), COALESCE(NEW.tags, ''));\nEND;\nCREATE VIRTUAL TABLE frames_fts USING fts5(\n full_text,\n app_name,\n window_name,\n browser_url,\n id UNINDEXED,\n tokenize='unicode61'\n)\n/* frames_fts(full_text,app_name,window_name,browser_url,id) */;\nCREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);\nCREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER frames_ai AFTER INSERT ON frames\nWHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''\nBEGIN\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n VALUES (\n NEW.id,\n NEW.full_text,\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n );\nEND;\nCREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n SELECT\n NEW.id,\n COALESCE(NEW.full_text, ''),\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';\nEND;\nCREATE TRIGGER frames_ad AFTER DELETE ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\nEND;\nCREATE INDEX idx_memories_frame_id ON memories(frame_id);\nCREATE INDEX idx_elements_source_role_text\n ON elements(source, role, frame_id)\n WHERE text IS NOT NULL;\nCREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","depth":4,"value":"drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"\nscreenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\"\n_sqlx_migrations meetings \naudio_chunks memories \naudio_tags memories_fts \naudio_transcriptions memories_fts_config \naudio_transcriptions_fts memories_fts_data \naudio_transcriptions_fts_config memories_fts_docsize \naudio_transcriptions_fts_data memories_fts_idx \naudio_transcriptions_fts_docsize ocr_text \naudio_transcriptions_fts_idx pipe_executions \nelements pipe_scheduler_state \nelements_fts speaker_embeddings \nelements_fts_config speakers \nelements_fts_data tags \nelements_fts_docsize ui_events \nelements_fts_idx ui_events_fts \nframes ui_events_fts_config \nframes_fts ui_events_fts_data \nframes_fts_config ui_events_fts_docsize \nframes_fts_content ui_events_fts_idx \nframes_fts_data video_chunks \nframes_fts_docsize vision_tags \nframes_fts_idx \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".schema\"\nCREATE TABLE _sqlx_migrations (\n version BIGINT PRIMARY KEY,\n description TEXT NOT NULL,\n installed_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,\n success BOOLEAN NOT NULL,\n checksum BLOB NOT NULL,\n execution_time BIGINT NOT NULL\n);\nCREATE TABLE video_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, device_name TEXT NOT NULL DEFAULT '', sync_id TEXT, machine_id TEXT, synced_at DATETIME, fps REAL NOT NULL DEFAULT 0.5, cloud_blob_id TEXT DEFAULT NULL);\nCREATE TABLE sqlite_sequence(name,seq);\nCREATE TABLE audio_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nCREATE TABLE IF NOT EXISTS \"ocr_text\" (\n frame_id INTEGER NOT NULL,\n text TEXT NOT NULL,\n text_json TEXT,\n app_name TEXT NOT NULL DEFAULT '',\n ocr_engine TEXT NOT NULL DEFAULT 'unknown'\n, window_name TEXT, focused BOOLEAN DEFAULT FALSE, text_length INTEGER, sync_id TEXT, synced_at DATETIME);\nCREATE TABLE tags (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT NOT NULL UNIQUE,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP\n);\nCREATE TABLE vision_tags (\n vision_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (vision_id, tag_id),\n FOREIGN KEY (vision_id) REFERENCES frames(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE TABLE audio_tags (\n audio_chunk_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (audio_chunk_id, tag_id),\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id);\nCREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id);\nCREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);\nCREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);\nCREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id);\nCREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name);\nCREATE TABLE speakers (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT,\n metadata JSON\n, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);\nCREATE TABLE speaker_embeddings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n embedding FLOAT[512] NOT NULL\n check(\n typeof(embedding) == 'blob'\n and vec_length(embedding) == 512\n ),\n speaker_id INTEGER REFERENCES speakers(id)\n);\nCREATE TABLE IF NOT EXISTS \"audio_transcriptions\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n audio_chunk_id INTEGER NOT NULL,\n offset_index INTEGER NOT NULL,\n timestamp TIMESTAMP NOT NULL,\n transcription TEXT NOT NULL,\n device TEXT NOT NULL DEFAULT '',\n is_input_device BOOLEAN NOT NULL DEFAULT TRUE,\n speaker_id INTEGER,\n transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME,\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)\n);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);\nCREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);\nCREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);\nCREATE INDEX idx_ocr_text_length ON ocr_text (text_length);\nCREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);\nCREATE TABLE ui_events (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n session_id TEXT,\n relative_ms INTEGER NOT NULL DEFAULT 0,\n event_type TEXT NOT NULL, -- click, move, scroll, key, text, app_switch, window_focus, clipboard\n -- Position\n x INTEGER,\n y INTEGER,\n delta_x INTEGER,\n delta_y INTEGER,\n -- Mouse/key\n button INTEGER,\n click_count INTEGER,\n key_code INTEGER,\n modifiers INTEGER,\n -- Text content\n text_content TEXT,\n text_length INTEGER,\n -- App context\n app_name TEXT,\n app_pid INTEGER,\n window_title TEXT,\n browser_url TEXT,\n -- Element context (from accessibility APIs)\n element_role TEXT,\n element_name TEXT,\n element_value TEXT,\n element_description TEXT,\n element_automation_id TEXT,\n element_bounds TEXT, -- JSON: {\"x\":0,\"y\":0,\"width\":100,\"height\":50}\n -- Frame correlation\n frame_id INTEGER,\n -- Sync columns\n sync_id TEXT,\n machine_id TEXT,\n synced_at DATETIME\n);\nCREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp);\nCREATE INDEX idx_ui_events_event_type ON ui_events(event_type);\nCREATE INDEX idx_ui_events_app_name ON ui_events(app_name);\nCREATE INDEX idx_ui_events_session_id ON ui_events(session_id);\nCREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id);\nCREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id);\nCREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at);\nCREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL;\nCREATE VIRTUAL TABLE ui_events_fts USING fts5(\n text_content,\n app_name,\n window_title,\n element_name,\n content='ui_events',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* ui_events_fts(text_content,app_name,window_title,element_name) */;\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER ui_events_ad AFTER DELETE ON ui_events BEGIN\n INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)\n VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);\nEND;\nCREATE TRIGGER ui_events_au AFTER UPDATE ON ui_events BEGIN\n INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)\n VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);\n INSERT INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)\n VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);\nEND;\nCREATE UNIQUE INDEX idx_audio_transcription_chunk_text\nON audio_transcriptions(audio_chunk_id, transcription);\nCREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name);\nCREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC);\nCREATE TABLE pipe_executions (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n pipe_name TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'queued',\n trigger_type TEXT NOT NULL DEFAULT 'manual',\n pid INTEGER,\n model TEXT,\n provider TEXT,\n started_at TEXT,\n finished_at TEXT,\n stdout TEXT DEFAULT '',\n stderr TEXT DEFAULT '',\n exit_code INTEGER,\n error_type TEXT,\n error_message TEXT,\n duration_ms INTEGER\n, session_path TEXT);\nCREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status);\nCREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running';\nCREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC);\nCREATE TABLE pipe_scheduler_state (\n pipe_name TEXT PRIMARY KEY,\n last_run_at TEXT,\n last_success_at TEXT,\n consecutive_failures INTEGER DEFAULT 0\n);\nCREATE TABLE IF NOT EXISTS \"frames\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n video_chunk_id INTEGER DEFAULT NULL,\n offset_index INTEGER NOT NULL DEFAULT 0,\n timestamp TIMESTAMP NOT NULL,\n name TEXT,\n app_name TEXT DEFAULT NULL,\n window_name TEXT DEFAULT NULL,\n focused BOOLEAN DEFAULT NULL,\n browser_url TEXT DEFAULT NULL,\n device_name TEXT NOT NULL DEFAULT '',\n sync_id TEXT,\n machine_id TEXT,\n synced_at DATETIME,\n -- New event-driven capture columns\n snapshot_path TEXT DEFAULT NULL,\n accessibility_text TEXT DEFAULT NULL,\n accessibility_tree_json TEXT DEFAULT NULL,\n content_hash INTEGER DEFAULT NULL,\n simhash INTEGER DEFAULT NULL,\n capture_trigger TEXT DEFAULT NULL,\n text_source TEXT DEFAULT NULL, cloud_blob_id TEXT DEFAULT NULL, full_text TEXT DEFAULT NULL, elements_ref_frame_id INTEGER DEFAULT NULL,\n FOREIGN KEY (video_chunk_id) REFERENCES video_chunks(id)\n);\nCREATE INDEX idx_frames_timestamp ON frames(timestamp);\nCREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id);\nCREATE INDEX idx_frames_timestamp_device\n ON frames(timestamp, device_name);\nCREATE INDEX idx_frames_snapshot_path\n ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL;\nCREATE TRIGGER ui_events_ai AFTER INSERT ON ui_events BEGIN\n INSERT OR IGNORE INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)\n VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);\nEND;\nCREATE TABLE meetings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n meeting_start TEXT NOT NULL,\n meeting_end TEXT,\n meeting_app TEXT NOT NULL,\n title TEXT,\n attendees TEXT,\n detection_source TEXT NOT NULL DEFAULT 'app',\n created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n, note TEXT);\nCREATE INDEX idx_meetings_start ON meetings(meeting_start);\nCREATE INDEX idx_meetings_end ON meetings(meeting_end);\nCREATE TABLE elements (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n frame_id INTEGER NOT NULL,\n source TEXT NOT NULL, -- 'ocr' | 'accessibility'\n role TEXT NOT NULL, -- OCR: 'page','block','paragraph','line','word'\n -- AX: 'AXButton','AXTextField','AXStaticText', etc.\n text TEXT, -- element text content (NULL for container nodes)\n parent_id INTEGER, -- self-referential FK for tree hierarchy (NULL = root)\n depth INTEGER NOT NULL DEFAULT 0, -- tree depth (0 = root)\n left_bound REAL, -- normalized 0-1 bounding box\n top_bound REAL,\n width_bound REAL,\n height_bound REAL,\n confidence REAL, -- OCR confidence (0-100), NULL for AX\n sort_order INTEGER NOT NULL DEFAULT 0, properties TEXT, -- sibling order within parent\n FOREIGN KEY (frame_id) REFERENCES frames(id),\n FOREIGN KEY (parent_id) REFERENCES elements(id)\n);\nCREATE INDEX idx_elements_frame_id ON elements(frame_id);\nCREATE INDEX idx_elements_parent_id ON elements(parent_id);\nCREATE INDEX idx_elements_source ON elements(source);\nCREATE INDEX idx_elements_frame_source ON elements(frame_id, source);\nCREATE VIRTUAL TABLE elements_fts USING fts5(\n text,\n role,\n frame_id UNINDEXED,\n content='elements',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* elements_fts(text,role,frame_id) */;\nCREATE TABLE IF NOT EXISTS 'elements_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'elements_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'elements_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'elements_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER elements_ai AFTER INSERT ON elements\nWHEN NEW.text IS NOT NULL AND NEW.text != ''\nBEGIN\n INSERT INTO elements_fts(rowid, text, role, frame_id)\n VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);\nEND;\nCREATE TRIGGER elements_ad AFTER DELETE ON elements\nWHEN OLD.text IS NOT NULL AND OLD.text != ''\nBEGIN\n INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)\n VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);\nEND;\nCREATE TRIGGER elements_au AFTER UPDATE ON elements\nWHEN OLD.text IS NOT NULL AND OLD.text != ''\nBEGIN\n INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)\n VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);\n INSERT INTO elements_fts(rowid, text, role, frame_id)\n VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);\nEND;\nCREATE VIRTUAL TABLE audio_transcriptions_fts USING fts5(\n transcription,\n device,\n speaker_id,\n content='audio_transcriptions',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* audio_transcriptions_fts(transcription,device,speaker_id) */;\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions\nWHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE INDEX idx_video_chunks_cloud_blob_id\n ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL;\nCREATE INDEX idx_frames_cloud_blob_id\n ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL;\nCREATE TABLE memories (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n content TEXT NOT NULL,\n source TEXT NOT NULL DEFAULT 'user',\n source_context TEXT,\n tags TEXT DEFAULT '[]',\n importance REAL DEFAULT 0.5,\n created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n, frame_id INTEGER REFERENCES frames(id) ON DELETE SET NULL);\nCREATE INDEX idx_memories_created_at ON memories(created_at);\nCREATE INDEX idx_memories_importance ON memories(importance DESC);\nCREATE INDEX idx_memories_source ON memories(source);\nCREATE VIRTUAL TABLE memories_fts USING fts5(\n content,\n tags,\n content='memories',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* memories_fts(content,tags) */;\nCREATE TABLE IF NOT EXISTS 'memories_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'memories_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'memories_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'memories_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER memories_ai AFTER INSERT ON memories\nWHEN NEW.content IS NOT NULL AND NEW.content != ''\nBEGIN\n INSERT INTO memories_fts(rowid, content, tags)\n VALUES (NEW.id, NEW.content, COALESCE(NEW.tags, ''));\nEND;\nCREATE TRIGGER memories_ad AFTER DELETE ON memories\nWHEN OLD.content IS NOT NULL AND OLD.content != ''\nBEGIN\n INSERT INTO memories_fts(memories_fts, rowid, content, tags)\n VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));\nEND;\nCREATE TRIGGER memories_au AFTER UPDATE ON memories\nWHEN OLD.content IS NOT NULL AND OLD.content != ''\nBEGIN\n INSERT INTO memories_fts(memories_fts, rowid, content, tags)\n VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));\n INSERT INTO memories_fts(rowid, content, tags)\n VALUES (NEW.id, COALESCE(NEW.content, ''), COALESCE(NEW.tags, ''));\nEND;\nCREATE VIRTUAL TABLE frames_fts USING fts5(\n full_text,\n app_name,\n window_name,\n browser_url,\n id UNINDEXED,\n tokenize='unicode61'\n)\n/* frames_fts(full_text,app_name,window_name,browser_url,id) */;\nCREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);\nCREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER frames_ai AFTER INSERT ON frames\nWHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''\nBEGIN\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n VALUES (\n NEW.id,\n NEW.full_text,\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n );\nEND;\nCREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n SELECT\n NEW.id,\n COALESCE(NEW.full_text, ''),\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';\nEND;\nCREATE TRIGGER frames_ad AFTER DELETE ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\nEND;\nCREATE INDEX idx_memories_frame_id ON memories(frame_id);\nCREATE INDEX idx_elements_source_role_text\n ON elements(source, role, frame_id)\n WHERE text IS NOT NULL;\nCREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
5853192385605379516
|
3173372984674339333
|
visual_change
|
accessibility
|
NULL
|
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
screenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_sqlx_migrations meetings
audio_chunks memories
audio_tags memories_fts
audio_transcriptions memories_fts_config
audio_transcriptions_fts memories_fts_data
audio_transcriptions_fts_config memories_fts_docsize
audio_transcriptions_fts_data memories_fts_idx
audio_transcriptions_fts_docsize ocr_text
audio_transcriptions_fts_idx pipe_executions
elements pipe_scheduler_state
elements_fts speaker_embeddings
elements_fts_config speakers
elements_fts_data tags
elements_fts_docsize ui_events
elements_fts_idx ui_events_fts
frames ui_events_fts_config
frames_fts ui_events_fts_data
frames_fts_config ui_events_fts_docsize
frames_fts_content ui_events_fts_idx
frames_fts_data video_chunks
frames_fts_docsize vision_tags
frames_fts_idx
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema"
CREATE TABLE _sqlx_migrations (
version BIGINT PRIMARY KEY,
description TEXT NOT NULL,
installed_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
success BOOLEAN NOT NULL,
checksum BLOB NOT NULL,
execution_time BIGINT NOT NULL
);
CREATE TABLE video_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, device_name TEXT NOT NULL DEFAULT '', sync_id TEXT, machine_id TEXT, synced_at DATETIME, fps REAL NOT NULL DEFAULT 0.5, cloud_blob_id TEXT DEFAULT NULL);
CREATE TABLE sqlite_sequence(name,seq);
CREATE TABLE audio_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE TABLE IF NOT EXISTS "ocr_text" (
frame_id INTEGER NOT NULL,
text TEXT NOT NULL,
text_json TEXT,
app_name TEXT NOT NULL DEFAULT '',
ocr_engine TEXT NOT NULL DEFAULT 'unknown'
, window_name TEXT, focused BOOLEAN DEFAULT FALSE, text_length INTEGER, sync_id TEXT, synced_at DATETIME);
CREATE TABLE tags (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE vision_tags (
vision_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (vision_id, tag_id),
FOREIGN KEY (vision_id) REFERENCES frames(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE TABLE audio_tags (
audio_chunk_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (audio_chunk_id, tag_id),
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id);
CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id);
CREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);
CREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);
CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name);
CREATE TABLE speakers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
metadata JSON
, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);
CREATE TABLE speaker_embeddings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
embedding FLOAT[512] NOT NULL
check(
typeof(embedding) == 'blob'
and vec_length(embedding) == 512
),
speaker_id INTEGER REFERENCES speakers(id)
);
CREATE TABLE IF NOT EXISTS "audio_transcriptions" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
audio_chunk_id INTEGER NOT NULL,
offset_index INTEGER NOT NULL,
timestamp TIMESTAMP NOT NULL,
transcription TEXT NOT NULL,
device TEXT NOT NULL DEFAULT '',
is_input_device BOOLEAN NOT NULL DEFAULT TRUE,
speaker_id INTEGER,
transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME,
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)
);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);
CREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);
CREATE INDEX idx_ocr_text_length ON ocr_text (text_length);
CREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);
CREATE TABLE ui_events (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
session_id TEXT,
relative_ms INTEGER NOT NULL DEFAULT 0,
event_type TEXT NOT NULL, -- click, move, scroll, key, text, app_switch, window_focus, clipboard
-- Position
x INTEGER,
y INTEGER,
delta_x INTEGER,
delta_y INTEGER,
-- Mouse/key
button INTEGER,
click_count INTEGER,
key_code INTEGER,
modifiers INTEGER,
-- Text content
text_content TEXT,
text_length INTEGER,
-- App context
app_name TEXT,
app_pid INTEGER,
window_title TEXT,
browser_url TEXT,
-- Element context (from accessibility APIs)
element_role TEXT,
element_name TEXT,
element_value TEXT,
element_description TEXT,
element_automation_id TEXT,
element_bounds TEXT, -- JSON: {"x":0,"y":0,"width":100,"height":50}
-- Frame correlation
frame_id INTEGER,
-- Sync columns
sync_id TEXT,
machine_id TEXT,
synced_at DATETIME
);
CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp);
CREATE INDEX idx_ui_events_event_type ON ui_events(event_type);
CREATE INDEX idx_ui_events_app_name ON ui_events(app_name);
CREATE INDEX idx_ui_events_session_id ON ui_events(session_id);
CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id);
CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id);
CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at);
CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL;
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
/* ui_events_fts(text_content,app_name,window_title,element_name) */;
CREATE TABLE IF NOT EXISTS 'ui_events_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'ui_events_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'ui_events_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'ui_events_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER ui_events_ad AFTER DELETE ON ui_events BEGIN
INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)
VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);
END;
CREATE TRIGGER ui_events_au AFTER UPDATE ON ui_events BEGIN
INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)
VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);
INSERT INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)
VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);
END;
CREATE UNIQUE INDEX idx_audio_transcription_chunk_text
ON audio_transcriptions(audio_chunk_id, transcription);
CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name);
CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC);
CREATE TABLE pipe_executions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
pipe_name TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'queued',
trigger_type TEXT NOT NULL DEFAULT 'manual',
pid INTEGER,
model TEXT,
provider TEXT,
started_at TEXT,
finished_at TEXT,
stdout TEXT DEFAULT '',
stderr TEXT DEFAULT '',
exit_code INTEGER,
error_type TEXT,
error_message TEXT,
duration_ms INTEGER
, session_path TEXT);
CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status);
CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running';
CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC);
CREATE TABLE pipe_scheduler_state (
pipe_name TEXT PRIMARY KEY,
last_run_at TEXT,
last_success_at TEXT,
consecutive_failures INTEGER DEFAULT 0
);
CREATE TABLE IF NOT EXISTS "frames" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
video_chunk_id INTEGER DEFAULT NULL,
offset_index INTEGER NOT NULL DEFAULT 0,
timestamp TIMESTAMP NOT NULL,
name TEXT,
app_name TEXT DEFAULT NULL,
window_name TEXT DEFAULT NULL,
focused BOOLEAN DEFAULT NULL,
browser_url TEXT DEFAULT NULL,
device_name TEXT NOT NULL DEFAULT '',
sync_id TEXT,
machine_id TEXT,
synced_at DATETIME,
-- New event-driven capture columns
snapshot_path TEXT DEFAULT NULL,
accessibility_text TEXT DEFAULT NULL,
accessibility_tree_json TEXT DEFAULT NULL,
content_hash INTEGER DEFAULT NULL,
simhash INTEGER DEFAULT NULL,
capture_trigger TEXT DEFAULT NULL,
text_source TEXT DEFAULT NULL, cloud_blob_id TEXT DEFAULT NULL, full_text TEXT DEFAULT NULL, elements_ref_frame_id INTEGER DEFAULT NULL,
FOREIGN KEY (video_chunk_id) REFERENCES video_chunks(id)
);
CREATE INDEX idx_frames_timestamp ON frames(timestamp);
CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id);
CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name);
CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL;
CREATE TRIGGER ui_events_ai AFTER INSERT ON ui_events BEGIN
INSERT OR IGNORE INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)
VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);
END;
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);
CREATE TABLE elements (
id INTEGER PRIMARY KEY AUTOINCREMENT,
frame_id INTEGER NOT NULL,
source TEXT NOT NULL, -- 'ocr' | 'accessibility'
role TEXT NOT NULL, -- OCR: 'page','block','paragraph','line','word'
-- AX: 'AXButton','AXTextField','AXStaticText', etc.
text TEXT, -- element text content (NULL for container nodes)
parent_id INTEGER, -- self-referential FK for tree hierarchy (NULL = root)
depth INTEGER NOT NULL DEFAULT 0, -- tree depth (0 = root)
left_bound REAL, -- normalized 0-1 bounding box
top_bound REAL,
width_bound REAL,
height_bound REAL,
confidence REAL, -- OCR confidence (0-100), NULL for AX
sort_order INTEGER NOT NULL DEFAULT 0, properties TEXT, -- sibling order within parent
FOREIGN KEY (frame_id) REFERENCES frames(id),
FOREIGN KEY (parent_id) REFERENCES elements(id)
);
CREATE INDEX idx_elements_frame_id ON elements(frame_id);
CREATE INDEX idx_elements_parent_id ON elements(parent_id);
CREATE INDEX idx_elements_source ON elements(source);
CREATE INDEX idx_elements_frame_source ON elements(frame_id, source);
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
/* elements_fts(text,role,frame_id) */;
CREATE TABLE IF NOT EXISTS 'elements_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'elements_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'elements_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'elements_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER elements_ai AFTER INSERT ON elements
WHEN NEW.text IS NOT NULL AND NEW.text != ''
BEGIN
INSERT INTO elements_fts(rowid, text, role, frame_id)
VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);
END;
CREATE TRIGGER elements_ad AFTER DELETE ON elements
WHEN OLD.text IS NOT NULL AND OLD.text != ''
BEGIN
INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)
VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);
END;
CREATE TRIGGER elements_au AFTER UPDATE ON elements
WHEN OLD.text IS NOT NULL AND OLD.text != ''
BEGIN
INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)
VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);
INSERT INTO elements_fts(rowid, text, role, frame_id)
VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);
END;
CREATE VIRTUAL TABLE audio_transcriptions_fts USING fts5(
transcription,
device,
speaker_id,
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
)
/* audio_transcriptions_fts(transcription,device,speaker_id) */;
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions
WHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL;
CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL;
CREATE TABLE memories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
content TEXT NOT NULL,
source TEXT NOT NULL DEFAULT 'user',
source_context TEXT,
tags TEXT DEFAULT '[]',
importance REAL DEFAULT 0.5,
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
, frame_id INTEGER REFERENCES frames(id) ON DELETE SET NULL);
CREATE INDEX idx_memories_created_at ON memories(created_at);
CREATE INDEX idx_memories_importance ON memories(importance DESC);
CREATE INDEX idx_memories_source ON memories(source);
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
/* memories_fts(content,tags) */;
CREATE TABLE IF NOT EXISTS 'memories_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'memories_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'memories_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'memories_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER memories_ai AFTER INSERT ON memories
WHEN NEW.content IS NOT NULL AND NEW.content != ''
BEGIN
INSERT INTO memories_fts(rowid, content, tags)
VALUES (NEW.id, NEW.content, COALESCE(NEW.tags, ''));
END;
CREATE TRIGGER memories_ad AFTER DELETE ON memories
WHEN OLD.content IS NOT NULL AND OLD.content != ''
BEGIN
INSERT INTO memories_fts(memories_fts, rowid, content, tags)
VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));
END;
CREATE TRIGGER memories_au AFTER UPDATE ON memories
WHEN OLD.content IS NOT NULL AND OLD.content != ''
BEGIN
INSERT INTO memories_fts(memories_fts, rowid, content, tags)
VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));
INSERT INTO memories_fts(rowid, content, tags)
VALUES (NEW.id, COALESCE(NEW.content, ''), COALESCE(NEW.tags, ''));
END;
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
id UNINDEXED,
tokenize='unicode61'
)
/* frames_fts(full_text,app_name,window_name,browser_url,id) */;
CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);
CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER frames_ai AFTER INSERT ON frames
WHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''
BEGIN
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
VALUES (
NEW.id,
NEW.full_text,
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
);
END;
CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
SELECT
NEW.id,
COALESCE(NEW.full_text, ''),
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';
END;
CREATE TRIGGER frames_ad AFTER DELETE ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
END;
CREATE INDEX idx_memories_frame_id ON memories(frame_id);
CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL;
CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
707
|
|
709
|
16
|
62
|
2026-04-11T12:08:32.704096+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909312704_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEdit ViewSessionScriptsProfilesWindowHe iTerm2ShellEdit ViewSessionScriptsProfilesWindowHelpr,o l•0100% <-zshDOCKERO ₴1tokenize='unicode61'DEV (-zsh)O $2APP (-zsh)• *3-zsh• 84/* frames_fts(full_text,app_name, window_name,browser_url, id) */;CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, CO, c1, c2, с3, с4);CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;CREATE TRIGGER frames_ai AFTER INSERT ON framesWHEN NEW.full_text IS NOT NULL AND NEW.full_text != "*BEGININSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)VALUES (NEW.id,NEW.full_text,COALESCE(NEW.app_name,"'),COALESCE(NEW.window_name,COALESCECNEW.browser_url,-zsh• *5-zshSat 11 Apr 15:08:32-zshT81X7);END;CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON framesBEGINDELETE FROM frames_fts WHERE id = OLD.id;INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)SELECTNEW. id,COALESCECNEW.full_text,"*),COALESCE(NEW.app_name,"*),COALESCE(NEW.window_name,"'),COALESCE(NEW.browser_url,"*)WHERE NEW.full_text IS NOT NULL AND NEW.full_text != "*;END;BEGINCREATE TRIGGER frames_ad AFTER DELETE ON framesDELETE FROM frames_fts WHERE id = OLD.id;END;CREATE INDEX idx_memories_frame_id ON memories(frame_id);CREATE INDEX idx_elements_source_role_textON elements(source, role, frame_id)WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
NULL
|
-5615697679527450473
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEdit ViewSessionScriptsProfilesWindowHe iTerm2ShellEdit ViewSessionScriptsProfilesWindowHelpr,o l•0100% <-zshDOCKERO ₴1tokenize='unicode61'DEV (-zsh)O $2APP (-zsh)• *3-zsh• 84/* frames_fts(full_text,app_name, window_name,browser_url, id) */;CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, CO, c1, c2, с3, с4);CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;CREATE TRIGGER frames_ai AFTER INSERT ON framesWHEN NEW.full_text IS NOT NULL AND NEW.full_text != "*BEGININSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)VALUES (NEW.id,NEW.full_text,COALESCE(NEW.app_name,"'),COALESCE(NEW.window_name,COALESCECNEW.browser_url,-zsh• *5-zshSat 11 Apr 15:08:32-zshT81X7);END;CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON framesBEGINDELETE FROM frames_fts WHERE id = OLD.id;INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)SELECTNEW. id,COALESCECNEW.full_text,"*),COALESCE(NEW.app_name,"*),COALESCE(NEW.window_name,"'),COALESCE(NEW.browser_url,"*)WHERE NEW.full_text IS NOT NULL AND NEW.full_text != "*;END;BEGINCREATE TRIGGER frames_ad AFTER DELETE ON framesDELETE FROM frames_fts WHERE id = OLD.id;END;CREATE INDEX idx_memories_frame_id ON memories(frame_id);CREATE INDEX idx_elements_source_role_textON elements(source, role, frame_id)WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
NULL
|
|
710
|
16
|
63
|
2026-04-11T12:08:33.989521+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909313989_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2Shell Edit ViewSessionScriptsProfilesWindo iTerm2Shell Edit ViewSessionScriptsProfilesWindowHelp-zshDOCKERO ₴1tokenize='unicode61'DEV (-zsh)• $2APP (-zsh)• *3-zsh• x4/* frames_fts(full_text,app_name, window_name,browser_url, id) */;CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, cO, c1, c2, с3, c4);CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;CREATE TRIGGER frames_ai AFTER INSERT ON framesWHEN NEW.full_text IS NOT NULL AND NEW.full_text != "'BEGININSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)VALUES (NEW.id,NEW.full_text,COALESCE(NEW.app_name,"'),COALESCE(NEW.window_name,COALESCECNEW.browser_url,-zsh• *5-zsh100% <7₴86Sat 11 Apr 15:08:33-zshT81X7);END;CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON framesBEGINDELETE FROM frames_fts WHERE id = OLD.id;INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)SELECTNEW. id,COALESCECNEW.full_text,"*),COALESCE(NEW.app_name,"*),COALESCE(NEW.window_name,"'),COALESCE(NEW.browser_url,"*)WHERE NEW.full_text IS NOT NULL AND NEW.full_text != "*;END;BEGINCREATE TRIGGER frames_ad AFTER DELETE ON framesDELETE FROM frames_fts WHERE id = OLD.id;END;CREATE INDEX idx_memories_frame_id ON memories(frame_id);CREATE INDEX idx_elements_source_role_textON elements(source, role, frame_id)WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
NULL
|
3950025176691117525
|
NULL
|
clipboard
|
ocr
|
NULL
|
iTerm2Shell Edit ViewSessionScriptsProfilesWindo iTerm2Shell Edit ViewSessionScriptsProfilesWindowHelp-zshDOCKERO ₴1tokenize='unicode61'DEV (-zsh)• $2APP (-zsh)• *3-zsh• x4/* frames_fts(full_text,app_name, window_name,browser_url, id) */;CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, cO, c1, c2, с3, c4);CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;CREATE TRIGGER frames_ai AFTER INSERT ON framesWHEN NEW.full_text IS NOT NULL AND NEW.full_text != "'BEGININSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)VALUES (NEW.id,NEW.full_text,COALESCE(NEW.app_name,"'),COALESCE(NEW.window_name,COALESCECNEW.browser_url,-zsh• *5-zsh100% <7₴86Sat 11 Apr 15:08:33-zshT81X7);END;CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON framesBEGINDELETE FROM frames_fts WHERE id = OLD.id;INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)SELECTNEW. id,COALESCECNEW.full_text,"*),COALESCE(NEW.app_name,"*),COALESCE(NEW.window_name,"'),COALESCE(NEW.browser_url,"*)WHERE NEW.full_text IS NOT NULL AND NEW.full_text != "*;END;BEGINCREATE TRIGGER frames_ad AFTER DELETE ON framesDELETE FROM frames_fts WHERE id = OLD.id;END;CREATE INDEX idx_memories_frame_id ON memories(frame_id);CREATE INDEX idx_elements_source_role_textON elements(source, role, frame_id)WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
709
|
|
711
|
16
|
64
|
2026-04-11T12:08:47.580256+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909327580_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2Shell Edit ViewSessionScriptsProfilesWindo iTerm2Shell Edit ViewSessionScriptsProfilesWindowHelp-zshDOCKERO ₴1tokenize='unicode61'DEV (-zsh)• $2APP (-zsh)• *3-zsh• x4/* frames_fts(full_text,app_name, window_name,browser_url, id) */;CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, cO, c1, c2, с3, c4);CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;CREATE TRIGGER frames_ai AFTER INSERT ON framesWHEN NEW.full_text IS NOT NULL AND NEW.full_text != "'BEGININSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)VALUES (NEW.id,NEW.full_text,COALESCE(NEW.app_name,"'),COALESCE(NEW.window_name,COALESCECNEW.browser_url,-zsh• x5-zsh100% C47O ₴6Sat 11 Apr 15:08:47-zshT81X7);END;CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON framesBEGINDELETE FROM frames_fts WHERE id = OLD.id;INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)SELECTNEW. id,COALESCECNEW.full_text,"*),COALESCE(NEW.app_name,"*),COALESCE(NEW.window_name,"'),COALESCE(NEW.browser_url,"*)WHERE NEW.full_text IS NOT NULL AND NEW.full_text != "*;END;BEGINCREATE TRIGGER frames_ad AFTER DELETE ON framesDELETE FROM frames_fts WHERE id = OLD.id;END;CREATE INDEX idx_memories_frame_id ON memories(frame_id);CREATE INDEX idx_elements_source_role_textON elements(source, role, frame_id)WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
NULL
|
-8655137736130020582
|
NULL
|
visual_change
|
ocr
|
NULL
|
iTerm2Shell Edit ViewSessionScriptsProfilesWindo iTerm2Shell Edit ViewSessionScriptsProfilesWindowHelp-zshDOCKERO ₴1tokenize='unicode61'DEV (-zsh)• $2APP (-zsh)• *3-zsh• x4/* frames_fts(full_text,app_name, window_name,browser_url, id) */;CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, cO, c1, c2, с3, c4);CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;CREATE TRIGGER frames_ai AFTER INSERT ON framesWHEN NEW.full_text IS NOT NULL AND NEW.full_text != "'BEGININSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)VALUES (NEW.id,NEW.full_text,COALESCE(NEW.app_name,"'),COALESCE(NEW.window_name,COALESCECNEW.browser_url,-zsh• x5-zsh100% C47O ₴6Sat 11 Apr 15:08:47-zshT81X7);END;CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON framesBEGINDELETE FROM frames_fts WHERE id = OLD.id;INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)SELECTNEW. id,COALESCECNEW.full_text,"*),COALESCE(NEW.app_name,"*),COALESCE(NEW.window_name,"'),COALESCE(NEW.browser_url,"*)WHERE NEW.full_text IS NOT NULL AND NEW.full_text != "*;END;BEGINCREATE TRIGGER frames_ad AFTER DELETE ON framesDELETE FROM frames_fts WHERE id = OLD.id;END;CREATE INDEX idx_memories_frame_id ON memories(frame_id);CREATE INDEX idx_elements_source_role_textON elements(source, role, frame_id)WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
NULL
|
|
712
|
16
|
65
|
2026-04-11T12:08:50.622650+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909330622_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2Shell Edit ViewSessionScriptsProfilesWindo iTerm2Shell Edit ViewSessionScriptsProfilesWindowHelp-zshDOCKERO ₴1tokenize='unicode61'DEV (-zsh)• $2APP (-zsh)• *3-zsh• x4/* frames_fts(full_text,app_name, window_name,browser_url, id) */;CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, cO, c1, c2, с3, c4);CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;CREATE TRIGGER frames_ai AFTER INSERT ON framesWHEN NEW.full_text IS NOT NULL AND NEW.full_text != "'BEGININSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)VALUES (NEW.id,NEW.full_text,COALESCE(NEW.app_name,"'),COALESCE(NEW.window_name,COALESCECNEW.browser_url,-zsh• x5-zsh100% CO ₴6Sat 11 Apr 15:08:50-zshT81X7);END;CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON framesBEGINDELETE FROM frames_fts WHERE id = OLD.id;INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)SELECTNEW.id,COALESCECNEW.full_text,"*),COALESCE(NEW.app_name,"*),COALESCE(NEW.window_name,"'),COALESCE(NEW.browser_url,"*)WHERE NEW.full_text IS NOT NULL AND NEW.full_text != "*;END;BEGINCREATE TRIGGER frames_ad AFTER DELETE ON framesDELETE FROM frames_fts WHERE id = OLD.id;END;CREATE INDEX idx_memories_frame_id ON memories(frame_id);CREATE INDEX idx_elements_source_role_textON elements(source, role, frame_id)WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
NULL
|
8462451458226595770
|
NULL
|
visual_change
|
ocr
|
NULL
|
iTerm2Shell Edit ViewSessionScriptsProfilesWindo iTerm2Shell Edit ViewSessionScriptsProfilesWindowHelp-zshDOCKERO ₴1tokenize='unicode61'DEV (-zsh)• $2APP (-zsh)• *3-zsh• x4/* frames_fts(full_text,app_name, window_name,browser_url, id) */;CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, cO, c1, c2, с3, c4);CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;CREATE TRIGGER frames_ai AFTER INSERT ON framesWHEN NEW.full_text IS NOT NULL AND NEW.full_text != "'BEGININSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)VALUES (NEW.id,NEW.full_text,COALESCE(NEW.app_name,"'),COALESCE(NEW.window_name,COALESCECNEW.browser_url,-zsh• x5-zsh100% CO ₴6Sat 11 Apr 15:08:50-zshT81X7);END;CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON framesBEGINDELETE FROM frames_fts WHERE id = OLD.id;INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)SELECTNEW.id,COALESCECNEW.full_text,"*),COALESCE(NEW.app_name,"*),COALESCE(NEW.window_name,"'),COALESCE(NEW.browser_url,"*)WHERE NEW.full_text IS NOT NULL AND NEW.full_text != "*;END;BEGINCREATE TRIGGER frames_ad AFTER DELETE ON framesDELETE FROM frames_fts WHERE id = OLD.id;END;CREATE INDEX idx_memories_frame_id ON memories(frame_id);CREATE INDEX idx_elements_source_role_textON elements(source, role, frame_id)WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
711
|
|
713
|
16
|
66
|
2026-04-11T12:08:54.418635+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909334418_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2Shell Edit ViewSessionScriptsProfilesWindo iTerm2Shell Edit ViewSessionScriptsProfilesWindowHelp-zshDOCKERO ₴1tokenize='unicode61'DEV (-zsh)• $2APP (-zsh)• *3-zsh• x4/* frames_fts(full_text,app_name, window_name,browser_url, id) */;CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, cO, c1, c2, с3, c4);CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;CREATE TRIGGER frames_ai AFTER INSERT ON framesWHEN NEW.full_text IS NOT NULL AND NEW.full_text != "'BEGININSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)VALUES (NEW.id,NEW.full_text,COALESCE(NEW.app_name,"'),COALESCE(NEW.window_name,COALESCECNEW.browser_url,-zsh• *5-zsh100% C47O ₴6Sat 11 Apr 15:08:54-zshT81X7);END;CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON framesBEGINDELETE FROM frames_fts WHERE id = OLD.id;INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)SELECTNEW.id,COALESCECNEW.full_text,"*),COALESCE(NEW.app_name,"*),COALESCE(NEW.window_name,"'),COALESCE(NEW.browser_url,"*)WHERE NEW.full_text IS NOT NULL AND NEW.full_text != "*;END;BEGINCREATE TRIGGER frames_ad AFTER DELETE ON framesDELETE FROM frames_fts WHERE id = OLD.id;END;CREATE INDEX idx_memories_frame_id ON memories(frame_id);CREATE INDEX idx_elements_source_role_textON elements(source, role, frame_id)WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
NULL
|
3295833833635013458
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2Shell Edit ViewSessionScriptsProfilesWindo iTerm2Shell Edit ViewSessionScriptsProfilesWindowHelp-zshDOCKERO ₴1tokenize='unicode61'DEV (-zsh)• $2APP (-zsh)• *3-zsh• x4/* frames_fts(full_text,app_name, window_name,browser_url, id) */;CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, cO, c1, c2, с3, c4);CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;CREATE TRIGGER frames_ai AFTER INSERT ON framesWHEN NEW.full_text IS NOT NULL AND NEW.full_text != "'BEGININSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)VALUES (NEW.id,NEW.full_text,COALESCE(NEW.app_name,"'),COALESCE(NEW.window_name,COALESCECNEW.browser_url,-zsh• *5-zsh100% C47O ₴6Sat 11 Apr 15:08:54-zshT81X7);END;CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON framesBEGINDELETE FROM frames_fts WHERE id = OLD.id;INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)SELECTNEW.id,COALESCECNEW.full_text,"*),COALESCE(NEW.app_name,"*),COALESCE(NEW.window_name,"'),COALESCE(NEW.browser_url,"*)WHERE NEW.full_text IS NOT NULL AND NEW.full_text != "*;END;BEGINCREATE TRIGGER frames_ad AFTER DELETE ON framesDELETE FROM frames_fts WHERE id = OLD.id;END;CREATE INDEX idx_memories_frame_id ON memories(frame_id);CREATE INDEX idx_elements_source_role_textON elements(source, role, frame_id)WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
NULL
|
|
714
|
NULL
|
0
|
2026-04-11T12:08:55.143763+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909335143_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
screenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_sqlx_migrations meetings
audio_chunks memories
audio_tags memories_fts
audio_transcriptions memories_fts_config
audio_transcriptions_fts memories_fts_data
audio_transcriptions_fts_config memories_fts_docsize
audio_transcriptions_fts_data memories_fts_idx
audio_transcriptions_fts_docsize ocr_text
audio_transcriptions_fts_idx pipe_executions
elements pipe_scheduler_state
elements_fts speaker_embeddings
elements_fts_config speakers
elements_fts_data tags
elements_fts_docsize ui_events
elements_fts_idx ui_events_fts
frames ui_events_fts_config
frames_fts ui_events_fts_data
frames_fts_config ui_events_fts_docsize
frames_fts_content ui_events_fts_idx
frames_fts_data video_chunks
frames_fts_docsize vision_tags
frames_fts_idx
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema"
CREATE TABLE _sqlx_migrations (
version BIGINT PRIMARY KEY,
description TEXT NOT NULL,
installed_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
success BOOLEAN NOT NULL,
checksum BLOB NOT NULL,
execution_time BIGINT NOT NULL
);
CREATE TABLE video_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, device_name TEXT NOT NULL DEFAULT '', sync_id TEXT, machine_id TEXT, synced_at DATETIME, fps REAL NOT NULL DEFAULT 0.5, cloud_blob_id TEXT DEFAULT NULL);
CREATE TABLE sqlite_sequence(name,seq);
CREATE TABLE audio_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE TABLE IF NOT EXISTS "ocr_text" (
frame_id INTEGER NOT NULL,
text TEXT NOT NULL,
text_json TEXT,
app_name TEXT NOT NULL DEFAULT '',
ocr_engine TEXT NOT NULL DEFAULT 'unknown'
, window_name TEXT, focused BOOLEAN DEFAULT FALSE, text_length INTEGER, sync_id TEXT, synced_at DATETIME);
CREATE TABLE tags (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE vision_tags (
vision_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (vision_id, tag_id),
FOREIGN KEY (vision_id) REFERENCES frames(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE TABLE audio_tags (
audio_chunk_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (audio_chunk_id, tag_id),
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id);
CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id);
CREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);
CREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);
CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name);
CREATE TABLE speakers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
metadata JSON
, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);
CREATE TABLE speaker_embeddings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
embedding FLOAT[512] NOT NULL
check(
typeof(embedding) == 'blob'
and vec_length(embedding) == 512
),
speaker_id INTEGER REFERENCES speakers(id)
);
CREATE TABLE IF NOT EXISTS "audio_transcriptions" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
audio_chunk_id INTEGER NOT NULL,
offset_index INTEGER NOT NULL,
timestamp TIMESTAMP NOT NULL,
transcription TEXT NOT NULL,
device TEXT NOT NULL DEFAULT '',
is_input_device BOOLEAN NOT NULL DEFAULT TRUE,
speaker_id INTEGER,
transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME,
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)
);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);
CREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);
CREATE INDEX idx_ocr_text_length ON ocr_text (text_length);
CREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);
CREATE TABLE ui_events (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
session_id TEXT,
relative_ms INTEGER NOT NULL DEFAULT 0,
event_type TEXT NOT NULL, -- click, move, scroll, key, text, app_switch, window_focus, clipboard
-- Position
x INTEGER,
y INTEGER,
delta_x INTEGER,
delta_y INTEGER,
-- Mouse/key
button INTEGER,
click_count INTEGER,
key_code INTEGER,
modifiers INTEGER,
-- Text content
text_content TEXT,
text_length INTEGER,
-- App context
app_name TEXT,
app_pid INTEGER,
window_title TEXT,
browser_url TEXT,
-- Element context (from accessibility APIs)
element_role TEXT,
element_name TEXT,
element_value TEXT,
element_description TEXT,
element_automation_id TEXT,
element_bounds TEXT, -- JSON: {"x":0,"y":0,"width":100,"height":50}
-- Frame correlation
frame_id INTEGER,
-- Sync columns
sync_id TEXT,
machine_id TEXT,
synced_at DATETIME
);
CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp);
CREATE INDEX idx_ui_events_event_type ON ui_events(event_type);
CREATE INDEX idx_ui_events_app_name ON ui_events(app_name);
CREATE INDEX idx_ui_events_session_id ON ui_events(session_id);
CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id);
CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id);
CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at);
CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL;
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
/* ui_events_fts(text_content,app_name,window_title,element_name) */;
CREATE TABLE IF NOT EXISTS 'ui_events_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'ui_events_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'ui_events_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'ui_events_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER ui_events_ad AFTER DELETE ON ui_events BEGIN
INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)
VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);
END;
CREATE TRIGGER ui_events_au AFTER UPDATE ON ui_events BEGIN
INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)
VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);
INSERT INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)
VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);
END;
CREATE UNIQUE INDEX idx_audio_transcription_chunk_text
ON audio_transcriptions(audio_chunk_id, transcription);
CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name);
CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC);
CREATE TABLE pipe_executions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
pipe_name TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'queued',
trigger_type TEXT NOT NULL DEFAULT 'manual',
pid INTEGER,
model TEXT,
provider TEXT,
started_at TEXT,
finished_at TEXT,
stdout TEXT DEFAULT '',
stderr TEXT DEFAULT '',
exit_code INTEGER,
error_type TEXT,
error_message TEXT,
duration_ms INTEGER
, session_path TEXT);
CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status);
CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running';
CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC);
CREATE TABLE pipe_scheduler_state (
pipe_name TEXT PRIMARY KEY,
last_run_at TEXT,
last_success_at TEXT,
consecutive_failures INTEGER DEFAULT 0
);
CREATE TABLE IF NOT EXISTS "frames" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
video_chunk_id INTEGER DEFAULT NULL,
offset_index INTEGER NOT NULL DEFAULT 0,
timestamp TIMESTAMP NOT NULL,
name TEXT,
app_name TEXT DEFAULT NULL,
window_name TEXT DEFAULT NULL,
focused BOOLEAN DEFAULT NULL,
browser_url TEXT DEFAULT NULL,
device_name TEXT NOT NULL DEFAULT '',
sync_id TEXT,
machine_id TEXT,
synced_at DATETIME,
-- New event-driven capture columns
snapshot_path TEXT DEFAULT NULL,
accessibility_text TEXT DEFAULT NULL,
accessibility_tree_json TEXT DEFAULT NULL,
content_hash INTEGER DEFAULT NULL,
simhash INTEGER DEFAULT NULL,
capture_trigger TEXT DEFAULT NULL,
text_source TEXT DEFAULT NULL, cloud_blob_id TEXT DEFAULT NULL, full_text TEXT DEFAULT NULL, elements_ref_frame_id INTEGER DEFAULT NULL,
FOREIGN KEY (video_chunk_id) REFERENCES video_chunks(id)
);
CREATE INDEX idx_frames_timestamp ON frames(timestamp);
CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id);
CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name);
CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL;
CREATE TRIGGER ui_events_ai AFTER INSERT ON ui_events BEGIN
INSERT OR IGNORE INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)
VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);
END;
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);
CREATE TABLE elements (
id INTEGER PRIMARY KEY AUTOINCREMENT,
frame_id INTEGER NOT NULL,
source TEXT NOT NULL, -- 'ocr' | 'accessibility'
role TEXT NOT NULL, -- OCR: 'page','block','paragraph','line','word'
-- AX: 'AXButton','AXTextField','AXStaticText', etc.
text TEXT, -- element text content (NULL for container nodes)
parent_id INTEGER, -- self-referential FK for tree hierarchy (NULL = root)
depth INTEGER NOT NULL DEFAULT 0, -- tree depth (0 = root)
left_bound REAL, -- normalized 0-1 bounding box
top_bound REAL,
width_bound REAL,
height_bound REAL,
confidence REAL, -- OCR confidence (0-100), NULL for AX
sort_order INTEGER NOT NULL DEFAULT 0, properties TEXT, -- sibling order within parent
FOREIGN KEY (frame_id) REFERENCES frames(id),
FOREIGN KEY (parent_id) REFERENCES elements(id)
);
CREATE INDEX idx_elements_frame_id ON elements(frame_id);
CREATE INDEX idx_elements_parent_id ON elements(parent_id);
CREATE INDEX idx_elements_source ON elements(source);
CREATE INDEX idx_elements_frame_source ON elements(frame_id, source);
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
/* elements_fts(text,role,frame_id) */;
CREATE TABLE IF NOT EXISTS 'elements_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'elements_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'elements_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'elements_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER elements_ai AFTER INSERT ON elements
WHEN NEW.text IS NOT NULL AND NEW.text != ''
BEGIN
INSERT INTO elements_fts(rowid, text, role, frame_id)
VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);
END;
CREATE TRIGGER elements_ad AFTER DELETE ON elements
WHEN OLD.text IS NOT NULL AND OLD.text != ''
BEGIN
INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)
VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);
END;
CREATE TRIGGER elements_au AFTER UPDATE ON elements
WHEN OLD.text IS NOT NULL AND OLD.text != ''
BEGIN
INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)
VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);
INSERT INTO elements_fts(rowid, text, role, frame_id)
VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);
END;
CREATE VIRTUAL TABLE audio_transcriptions_fts USING fts5(
transcription,
device,
speaker_id,
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
)
/* audio_transcriptions_fts(transcription,device,speaker_id) */;
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions
WHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL;
CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL;
CREATE TABLE memories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
content TEXT NOT NULL,
source TEXT NOT NULL DEFAULT 'user',
source_context TEXT,
tags TEXT DEFAULT '[]',
importance REAL DEFAULT 0.5,
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
, frame_id INTEGER REFERENCES frames(id) ON DELETE SET NULL);
CREATE INDEX idx_memories_created_at ON memories(created_at);
CREATE INDEX idx_memories_importance ON memories(importance DESC);
CREATE INDEX idx_memories_source ON memories(source);
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
/* memories_fts(content,tags) */;
CREATE TABLE IF NOT EXISTS 'memories_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'memories_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'memories_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'memories_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER memories_ai AFTER INSERT ON memories
WHEN NEW.content IS NOT NULL AND NEW.content != ''
BEGIN
INSERT INTO memories_fts(rowid, content, tags)
VALUES (NEW.id, NEW.content, COALESCE(NEW.tags, ''));
END;
CREATE TRIGGER memories_ad AFTER DELETE ON memories
WHEN OLD.content IS NOT NULL AND OLD.content != ''
BEGIN
INSERT INTO memories_fts(memories_fts, rowid, content, tags)
VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));
END;
CREATE TRIGGER memories_au AFTER UPDATE ON memories
WHEN OLD.content IS NOT NULL AND OLD.content != ''
BEGIN
INSERT INTO memories_fts(memories_fts, rowid, content, tags)
VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));
INSERT INTO memories_fts(rowid, content, tags)
VALUES (NEW.id, COALESCE(NEW.content, ''), COALESCE(NEW.tags, ''));
END;
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
id UNINDEXED,
tokenize='unicode61'
)
/* frames_fts(full_text,app_name,window_name,browser_url,id) */;
CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);
CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER frames_ai AFTER INSERT ON frames
WHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''
BEGIN
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
VALUES (
NEW.id,
NEW.full_text,
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
);
END;
CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
SELECT
NEW.id,
COALESCE(NEW.full_text, ''),
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';
END;
CREATE TRIGGER frames_ad AFTER DELETE ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
END;
CREATE INDEX idx_memories_frame_id ON memories(frame_id);
CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL;
CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"\nscreenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\"\n_sqlx_migrations meetings \naudio_chunks memories \naudio_tags memories_fts \naudio_transcriptions memories_fts_config \naudio_transcriptions_fts memories_fts_data \naudio_transcriptions_fts_config memories_fts_docsize \naudio_transcriptions_fts_data memories_fts_idx \naudio_transcriptions_fts_docsize ocr_text \naudio_transcriptions_fts_idx pipe_executions \nelements pipe_scheduler_state \nelements_fts speaker_embeddings \nelements_fts_config speakers \nelements_fts_data tags \nelements_fts_docsize ui_events \nelements_fts_idx ui_events_fts \nframes ui_events_fts_config \nframes_fts ui_events_fts_data \nframes_fts_config ui_events_fts_docsize \nframes_fts_content ui_events_fts_idx \nframes_fts_data video_chunks \nframes_fts_docsize vision_tags \nframes_fts_idx \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".schema\"\nCREATE TABLE _sqlx_migrations (\n version BIGINT PRIMARY KEY,\n description TEXT NOT NULL,\n installed_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,\n success BOOLEAN NOT NULL,\n checksum BLOB NOT NULL,\n execution_time BIGINT NOT NULL\n);\nCREATE TABLE video_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, device_name TEXT NOT NULL DEFAULT '', sync_id TEXT, machine_id TEXT, synced_at DATETIME, fps REAL NOT NULL DEFAULT 0.5, cloud_blob_id TEXT DEFAULT NULL);\nCREATE TABLE sqlite_sequence(name,seq);\nCREATE TABLE audio_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nCREATE TABLE IF NOT EXISTS \"ocr_text\" (\n frame_id INTEGER NOT NULL,\n text TEXT NOT NULL,\n text_json TEXT,\n app_name TEXT NOT NULL DEFAULT '',\n ocr_engine TEXT NOT NULL DEFAULT 'unknown'\n, window_name TEXT, focused BOOLEAN DEFAULT FALSE, text_length INTEGER, sync_id TEXT, synced_at DATETIME);\nCREATE TABLE tags (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT NOT NULL UNIQUE,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP\n);\nCREATE TABLE vision_tags (\n vision_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (vision_id, tag_id),\n FOREIGN KEY (vision_id) REFERENCES frames(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE TABLE audio_tags (\n audio_chunk_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (audio_chunk_id, tag_id),\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id);\nCREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id);\nCREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);\nCREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);\nCREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id);\nCREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name);\nCREATE TABLE speakers (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT,\n metadata JSON\n, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);\nCREATE TABLE speaker_embeddings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n embedding FLOAT[512] NOT NULL\n check(\n typeof(embedding) == 'blob'\n and vec_length(embedding) == 512\n ),\n speaker_id INTEGER REFERENCES speakers(id)\n);\nCREATE TABLE IF NOT EXISTS \"audio_transcriptions\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n audio_chunk_id INTEGER NOT NULL,\n offset_index INTEGER NOT NULL,\n timestamp TIMESTAMP NOT NULL,\n transcription TEXT NOT NULL,\n device TEXT NOT NULL DEFAULT '',\n is_input_device BOOLEAN NOT NULL DEFAULT TRUE,\n speaker_id INTEGER,\n transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME,\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)\n);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);\nCREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);\nCREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);\nCREATE INDEX idx_ocr_text_length ON ocr_text (text_length);\nCREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);\nCREATE TABLE ui_events (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n session_id TEXT,\n relative_ms INTEGER NOT NULL DEFAULT 0,\n event_type TEXT NOT NULL, -- click, move, scroll, key, text, app_switch, window_focus, clipboard\n -- Position\n x INTEGER,\n y INTEGER,\n delta_x INTEGER,\n delta_y INTEGER,\n -- Mouse/key\n button INTEGER,\n click_count INTEGER,\n key_code INTEGER,\n modifiers INTEGER,\n -- Text content\n text_content TEXT,\n text_length INTEGER,\n -- App context\n app_name TEXT,\n app_pid INTEGER,\n window_title TEXT,\n browser_url TEXT,\n -- Element context (from accessibility APIs)\n element_role TEXT,\n element_name TEXT,\n element_value TEXT,\n element_description TEXT,\n element_automation_id TEXT,\n element_bounds TEXT, -- JSON: {\"x\":0,\"y\":0,\"width\":100,\"height\":50}\n -- Frame correlation\n frame_id INTEGER,\n -- Sync columns\n sync_id TEXT,\n machine_id TEXT,\n synced_at DATETIME\n);\nCREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp);\nCREATE INDEX idx_ui_events_event_type ON ui_events(event_type);\nCREATE INDEX idx_ui_events_app_name ON ui_events(app_name);\nCREATE INDEX idx_ui_events_session_id ON ui_events(session_id);\nCREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id);\nCREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id);\nCREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at);\nCREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL;\nCREATE VIRTUAL TABLE ui_events_fts USING fts5(\n text_content,\n app_name,\n window_title,\n element_name,\n content='ui_events',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* ui_events_fts(text_content,app_name,window_title,element_name) */;\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER ui_events_ad AFTER DELETE ON ui_events BEGIN\n INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)\n VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);\nEND;\nCREATE TRIGGER ui_events_au AFTER UPDATE ON ui_events BEGIN\n INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)\n VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);\n INSERT INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)\n VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);\nEND;\nCREATE UNIQUE INDEX idx_audio_transcription_chunk_text\nON audio_transcriptions(audio_chunk_id, transcription);\nCREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name);\nCREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC);\nCREATE TABLE pipe_executions (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n pipe_name TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'queued',\n trigger_type TEXT NOT NULL DEFAULT 'manual',\n pid INTEGER,\n model TEXT,\n provider TEXT,\n started_at TEXT,\n finished_at TEXT,\n stdout TEXT DEFAULT '',\n stderr TEXT DEFAULT '',\n exit_code INTEGER,\n error_type TEXT,\n error_message TEXT,\n duration_ms INTEGER\n, session_path TEXT);\nCREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status);\nCREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running';\nCREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC);\nCREATE TABLE pipe_scheduler_state (\n pipe_name TEXT PRIMARY KEY,\n last_run_at TEXT,\n last_success_at TEXT,\n consecutive_failures INTEGER DEFAULT 0\n);\nCREATE TABLE IF NOT EXISTS \"frames\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n video_chunk_id INTEGER DEFAULT NULL,\n offset_index INTEGER NOT NULL DEFAULT 0,\n timestamp TIMESTAMP NOT NULL,\n name TEXT,\n app_name TEXT DEFAULT NULL,\n window_name TEXT DEFAULT NULL,\n focused BOOLEAN DEFAULT NULL,\n browser_url TEXT DEFAULT NULL,\n device_name TEXT NOT NULL DEFAULT '',\n sync_id TEXT,\n machine_id TEXT,\n synced_at DATETIME,\n -- New event-driven capture columns\n snapshot_path TEXT DEFAULT NULL,\n accessibility_text TEXT DEFAULT NULL,\n accessibility_tree_json TEXT DEFAULT NULL,\n content_hash INTEGER DEFAULT NULL,\n simhash INTEGER DEFAULT NULL,\n capture_trigger TEXT DEFAULT NULL,\n text_source TEXT DEFAULT NULL, cloud_blob_id TEXT DEFAULT NULL, full_text TEXT DEFAULT NULL, elements_ref_frame_id INTEGER DEFAULT NULL,\n FOREIGN KEY (video_chunk_id) REFERENCES video_chunks(id)\n);\nCREATE INDEX idx_frames_timestamp ON frames(timestamp);\nCREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id);\nCREATE INDEX idx_frames_timestamp_device\n ON frames(timestamp, device_name);\nCREATE INDEX idx_frames_snapshot_path\n ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL;\nCREATE TRIGGER ui_events_ai AFTER INSERT ON ui_events BEGIN\n INSERT OR IGNORE INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)\n VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);\nEND;\nCREATE TABLE meetings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n meeting_start TEXT NOT NULL,\n meeting_end TEXT,\n meeting_app TEXT NOT NULL,\n title TEXT,\n attendees TEXT,\n detection_source TEXT NOT NULL DEFAULT 'app',\n created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n, note TEXT);\nCREATE INDEX idx_meetings_start ON meetings(meeting_start);\nCREATE INDEX idx_meetings_end ON meetings(meeting_end);\nCREATE TABLE elements (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n frame_id INTEGER NOT NULL,\n source TEXT NOT NULL, -- 'ocr' | 'accessibility'\n role TEXT NOT NULL, -- OCR: 'page','block','paragraph','line','word'\n -- AX: 'AXButton','AXTextField','AXStaticText', etc.\n text TEXT, -- element text content (NULL for container nodes)\n parent_id INTEGER, -- self-referential FK for tree hierarchy (NULL = root)\n depth INTEGER NOT NULL DEFAULT 0, -- tree depth (0 = root)\n left_bound REAL, -- normalized 0-1 bounding box\n top_bound REAL,\n width_bound REAL,\n height_bound REAL,\n confidence REAL, -- OCR confidence (0-100), NULL for AX\n sort_order INTEGER NOT NULL DEFAULT 0, properties TEXT, -- sibling order within parent\n FOREIGN KEY (frame_id) REFERENCES frames(id),\n FOREIGN KEY (parent_id) REFERENCES elements(id)\n);\nCREATE INDEX idx_elements_frame_id ON elements(frame_id);\nCREATE INDEX idx_elements_parent_id ON elements(parent_id);\nCREATE INDEX idx_elements_source ON elements(source);\nCREATE INDEX idx_elements_frame_source ON elements(frame_id, source);\nCREATE VIRTUAL TABLE elements_fts USING fts5(\n text,\n role,\n frame_id UNINDEXED,\n content='elements',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* elements_fts(text,role,frame_id) */;\nCREATE TABLE IF NOT EXISTS 'elements_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'elements_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'elements_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'elements_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER elements_ai AFTER INSERT ON elements\nWHEN NEW.text IS NOT NULL AND NEW.text != ''\nBEGIN\n INSERT INTO elements_fts(rowid, text, role, frame_id)\n VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);\nEND;\nCREATE TRIGGER elements_ad AFTER DELETE ON elements\nWHEN OLD.text IS NOT NULL AND OLD.text != ''\nBEGIN\n INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)\n VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);\nEND;\nCREATE TRIGGER elements_au AFTER UPDATE ON elements\nWHEN OLD.text IS NOT NULL AND OLD.text != ''\nBEGIN\n INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)\n VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);\n INSERT INTO elements_fts(rowid, text, role, frame_id)\n VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);\nEND;\nCREATE VIRTUAL TABLE audio_transcriptions_fts USING fts5(\n transcription,\n device,\n speaker_id,\n content='audio_transcriptions',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* audio_transcriptions_fts(transcription,device,speaker_id) */;\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions\nWHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE INDEX idx_video_chunks_cloud_blob_id\n ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL;\nCREATE INDEX idx_frames_cloud_blob_id\n ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL;\nCREATE TABLE memories (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n content TEXT NOT NULL,\n source TEXT NOT NULL DEFAULT 'user',\n source_context TEXT,\n tags TEXT DEFAULT '[]',\n importance REAL DEFAULT 0.5,\n created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n, frame_id INTEGER REFERENCES frames(id) ON DELETE SET NULL);\nCREATE INDEX idx_memories_created_at ON memories(created_at);\nCREATE INDEX idx_memories_importance ON memories(importance DESC);\nCREATE INDEX idx_memories_source ON memories(source);\nCREATE VIRTUAL TABLE memories_fts USING fts5(\n content,\n tags,\n content='memories',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* memories_fts(content,tags) */;\nCREATE TABLE IF NOT EXISTS 'memories_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'memories_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'memories_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'memories_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER memories_ai AFTER INSERT ON memories\nWHEN NEW.content IS NOT NULL AND NEW.content != ''\nBEGIN\n INSERT INTO memories_fts(rowid, content, tags)\n VALUES (NEW.id, NEW.content, COALESCE(NEW.tags, ''));\nEND;\nCREATE TRIGGER memories_ad AFTER DELETE ON memories\nWHEN OLD.content IS NOT NULL AND OLD.content != ''\nBEGIN\n INSERT INTO memories_fts(memories_fts, rowid, content, tags)\n VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));\nEND;\nCREATE TRIGGER memories_au AFTER UPDATE ON memories\nWHEN OLD.content IS NOT NULL AND OLD.content != ''\nBEGIN\n INSERT INTO memories_fts(memories_fts, rowid, content, tags)\n VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));\n INSERT INTO memories_fts(rowid, content, tags)\n VALUES (NEW.id, COALESCE(NEW.content, ''), COALESCE(NEW.tags, ''));\nEND;\nCREATE VIRTUAL TABLE frames_fts USING fts5(\n full_text,\n app_name,\n window_name,\n browser_url,\n id UNINDEXED,\n tokenize='unicode61'\n)\n/* frames_fts(full_text,app_name,window_name,browser_url,id) */;\nCREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);\nCREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER frames_ai AFTER INSERT ON frames\nWHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''\nBEGIN\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n VALUES (\n NEW.id,\n NEW.full_text,\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n );\nEND;\nCREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n SELECT\n NEW.id,\n COALESCE(NEW.full_text, ''),\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';\nEND;\nCREATE TRIGGER frames_ad AFTER DELETE ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\nEND;\nCREATE INDEX idx_memories_frame_id ON memories(frame_id);\nCREATE INDEX idx_elements_source_role_text\n ON elements(source, role, frame_id)\n WHERE text IS NOT NULL;\nCREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","depth":4,"value":"drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"\nscreenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\"\n_sqlx_migrations meetings \naudio_chunks memories \naudio_tags memories_fts \naudio_transcriptions memories_fts_config \naudio_transcriptions_fts memories_fts_data \naudio_transcriptions_fts_config memories_fts_docsize \naudio_transcriptions_fts_data memories_fts_idx \naudio_transcriptions_fts_docsize ocr_text \naudio_transcriptions_fts_idx pipe_executions \nelements pipe_scheduler_state \nelements_fts speaker_embeddings \nelements_fts_config speakers \nelements_fts_data tags \nelements_fts_docsize ui_events \nelements_fts_idx ui_events_fts \nframes ui_events_fts_config \nframes_fts ui_events_fts_data \nframes_fts_config ui_events_fts_docsize \nframes_fts_content ui_events_fts_idx \nframes_fts_data video_chunks \nframes_fts_docsize vision_tags \nframes_fts_idx \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".schema\"\nCREATE TABLE _sqlx_migrations (\n version BIGINT PRIMARY KEY,\n description TEXT NOT NULL,\n installed_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,\n success BOOLEAN NOT NULL,\n checksum BLOB NOT NULL,\n execution_time BIGINT NOT NULL\n);\nCREATE TABLE video_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, device_name TEXT NOT NULL DEFAULT '', sync_id TEXT, machine_id TEXT, synced_at DATETIME, fps REAL NOT NULL DEFAULT 0.5, cloud_blob_id TEXT DEFAULT NULL);\nCREATE TABLE sqlite_sequence(name,seq);\nCREATE TABLE audio_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nCREATE TABLE IF NOT EXISTS \"ocr_text\" (\n frame_id INTEGER NOT NULL,\n text TEXT NOT NULL,\n text_json TEXT,\n app_name TEXT NOT NULL DEFAULT '',\n ocr_engine TEXT NOT NULL DEFAULT 'unknown'\n, window_name TEXT, focused BOOLEAN DEFAULT FALSE, text_length INTEGER, sync_id TEXT, synced_at DATETIME);\nCREATE TABLE tags (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT NOT NULL UNIQUE,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP\n);\nCREATE TABLE vision_tags (\n vision_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (vision_id, tag_id),\n FOREIGN KEY (vision_id) REFERENCES frames(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE TABLE audio_tags (\n audio_chunk_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (audio_chunk_id, tag_id),\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id);\nCREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id);\nCREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);\nCREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);\nCREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id);\nCREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name);\nCREATE TABLE speakers (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT,\n metadata JSON\n, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);\nCREATE TABLE speaker_embeddings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n embedding FLOAT[512] NOT NULL\n check(\n typeof(embedding) == 'blob'\n and vec_length(embedding) == 512\n ),\n speaker_id INTEGER REFERENCES speakers(id)\n);\nCREATE TABLE IF NOT EXISTS \"audio_transcriptions\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n audio_chunk_id INTEGER NOT NULL,\n offset_index INTEGER NOT NULL,\n timestamp TIMESTAMP NOT NULL,\n transcription TEXT NOT NULL,\n device TEXT NOT NULL DEFAULT '',\n is_input_device BOOLEAN NOT NULL DEFAULT TRUE,\n speaker_id INTEGER,\n transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME,\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)\n);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);\nCREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);\nCREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);\nCREATE INDEX idx_ocr_text_length ON ocr_text (text_length);\nCREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);\nCREATE TABLE ui_events (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n session_id TEXT,\n relative_ms INTEGER NOT NULL DEFAULT 0,\n event_type TEXT NOT NULL, -- click, move, scroll, key, text, app_switch, window_focus, clipboard\n -- Position\n x INTEGER,\n y INTEGER,\n delta_x INTEGER,\n delta_y INTEGER,\n -- Mouse/key\n button INTEGER,\n click_count INTEGER,\n key_code INTEGER,\n modifiers INTEGER,\n -- Text content\n text_content TEXT,\n text_length INTEGER,\n -- App context\n app_name TEXT,\n app_pid INTEGER,\n window_title TEXT,\n browser_url TEXT,\n -- Element context (from accessibility APIs)\n element_role TEXT,\n element_name TEXT,\n element_value TEXT,\n element_description TEXT,\n element_automation_id TEXT,\n element_bounds TEXT, -- JSON: {\"x\":0,\"y\":0,\"width\":100,\"height\":50}\n -- Frame correlation\n frame_id INTEGER,\n -- Sync columns\n sync_id TEXT,\n machine_id TEXT,\n synced_at DATETIME\n);\nCREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp);\nCREATE INDEX idx_ui_events_event_type ON ui_events(event_type);\nCREATE INDEX idx_ui_events_app_name ON ui_events(app_name);\nCREATE INDEX idx_ui_events_session_id ON ui_events(session_id);\nCREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id);\nCREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id);\nCREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at);\nCREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL;\nCREATE VIRTUAL TABLE ui_events_fts USING fts5(\n text_content,\n app_name,\n window_title,\n element_name,\n content='ui_events',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* ui_events_fts(text_content,app_name,window_title,element_name) */;\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER ui_events_ad AFTER DELETE ON ui_events BEGIN\n INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)\n VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);\nEND;\nCREATE TRIGGER ui_events_au AFTER UPDATE ON ui_events BEGIN\n INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)\n VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);\n INSERT INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)\n VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);\nEND;\nCREATE UNIQUE INDEX idx_audio_transcription_chunk_text\nON audio_transcriptions(audio_chunk_id, transcription);\nCREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name);\nCREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC);\nCREATE TABLE pipe_executions (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n pipe_name TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'queued',\n trigger_type TEXT NOT NULL DEFAULT 'manual',\n pid INTEGER,\n model TEXT,\n provider TEXT,\n started_at TEXT,\n finished_at TEXT,\n stdout TEXT DEFAULT '',\n stderr TEXT DEFAULT '',\n exit_code INTEGER,\n error_type TEXT,\n error_message TEXT,\n duration_ms INTEGER\n, session_path TEXT);\nCREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status);\nCREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running';\nCREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC);\nCREATE TABLE pipe_scheduler_state (\n pipe_name TEXT PRIMARY KEY,\n last_run_at TEXT,\n last_success_at TEXT,\n consecutive_failures INTEGER DEFAULT 0\n);\nCREATE TABLE IF NOT EXISTS \"frames\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n video_chunk_id INTEGER DEFAULT NULL,\n offset_index INTEGER NOT NULL DEFAULT 0,\n timestamp TIMESTAMP NOT NULL,\n name TEXT,\n app_name TEXT DEFAULT NULL,\n window_name TEXT DEFAULT NULL,\n focused BOOLEAN DEFAULT NULL,\n browser_url TEXT DEFAULT NULL,\n device_name TEXT NOT NULL DEFAULT '',\n sync_id TEXT,\n machine_id TEXT,\n synced_at DATETIME,\n -- New event-driven capture columns\n snapshot_path TEXT DEFAULT NULL,\n accessibility_text TEXT DEFAULT NULL,\n accessibility_tree_json TEXT DEFAULT NULL,\n content_hash INTEGER DEFAULT NULL,\n simhash INTEGER DEFAULT NULL,\n capture_trigger TEXT DEFAULT NULL,\n text_source TEXT DEFAULT NULL, cloud_blob_id TEXT DEFAULT NULL, full_text TEXT DEFAULT NULL, elements_ref_frame_id INTEGER DEFAULT NULL,\n FOREIGN KEY (video_chunk_id) REFERENCES video_chunks(id)\n);\nCREATE INDEX idx_frames_timestamp ON frames(timestamp);\nCREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id);\nCREATE INDEX idx_frames_timestamp_device\n ON frames(timestamp, device_name);\nCREATE INDEX idx_frames_snapshot_path\n ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL;\nCREATE TRIGGER ui_events_ai AFTER INSERT ON ui_events BEGIN\n INSERT OR IGNORE INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)\n VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);\nEND;\nCREATE TABLE meetings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n meeting_start TEXT NOT NULL,\n meeting_end TEXT,\n meeting_app TEXT NOT NULL,\n title TEXT,\n attendees TEXT,\n detection_source TEXT NOT NULL DEFAULT 'app',\n created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n, note TEXT);\nCREATE INDEX idx_meetings_start ON meetings(meeting_start);\nCREATE INDEX idx_meetings_end ON meetings(meeting_end);\nCREATE TABLE elements (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n frame_id INTEGER NOT NULL,\n source TEXT NOT NULL, -- 'ocr' | 'accessibility'\n role TEXT NOT NULL, -- OCR: 'page','block','paragraph','line','word'\n -- AX: 'AXButton','AXTextField','AXStaticText', etc.\n text TEXT, -- element text content (NULL for container nodes)\n parent_id INTEGER, -- self-referential FK for tree hierarchy (NULL = root)\n depth INTEGER NOT NULL DEFAULT 0, -- tree depth (0 = root)\n left_bound REAL, -- normalized 0-1 bounding box\n top_bound REAL,\n width_bound REAL,\n height_bound REAL,\n confidence REAL, -- OCR confidence (0-100), NULL for AX\n sort_order INTEGER NOT NULL DEFAULT 0, properties TEXT, -- sibling order within parent\n FOREIGN KEY (frame_id) REFERENCES frames(id),\n FOREIGN KEY (parent_id) REFERENCES elements(id)\n);\nCREATE INDEX idx_elements_frame_id ON elements(frame_id);\nCREATE INDEX idx_elements_parent_id ON elements(parent_id);\nCREATE INDEX idx_elements_source ON elements(source);\nCREATE INDEX idx_elements_frame_source ON elements(frame_id, source);\nCREATE VIRTUAL TABLE elements_fts USING fts5(\n text,\n role,\n frame_id UNINDEXED,\n content='elements',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* elements_fts(text,role,frame_id) */;\nCREATE TABLE IF NOT EXISTS 'elements_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'elements_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'elements_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'elements_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER elements_ai AFTER INSERT ON elements\nWHEN NEW.text IS NOT NULL AND NEW.text != ''\nBEGIN\n INSERT INTO elements_fts(rowid, text, role, frame_id)\n VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);\nEND;\nCREATE TRIGGER elements_ad AFTER DELETE ON elements\nWHEN OLD.text IS NOT NULL AND OLD.text != ''\nBEGIN\n INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)\n VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);\nEND;\nCREATE TRIGGER elements_au AFTER UPDATE ON elements\nWHEN OLD.text IS NOT NULL AND OLD.text != ''\nBEGIN\n INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)\n VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);\n INSERT INTO elements_fts(rowid, text, role, frame_id)\n VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);\nEND;\nCREATE VIRTUAL TABLE audio_transcriptions_fts USING fts5(\n transcription,\n device,\n speaker_id,\n content='audio_transcriptions',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* audio_transcriptions_fts(transcription,device,speaker_id) */;\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions\nWHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE INDEX idx_video_chunks_cloud_blob_id\n ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL;\nCREATE INDEX idx_frames_cloud_blob_id\n ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL;\nCREATE TABLE memories (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n content TEXT NOT NULL,\n source TEXT NOT NULL DEFAULT 'user',\n source_context TEXT,\n tags TEXT DEFAULT '[]',\n importance REAL DEFAULT 0.5,\n created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n, frame_id INTEGER REFERENCES frames(id) ON DELETE SET NULL);\nCREATE INDEX idx_memories_created_at ON memories(created_at);\nCREATE INDEX idx_memories_importance ON memories(importance DESC);\nCREATE INDEX idx_memories_source ON memories(source);\nCREATE VIRTUAL TABLE memories_fts USING fts5(\n content,\n tags,\n content='memories',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* memories_fts(content,tags) */;\nCREATE TABLE IF NOT EXISTS 'memories_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'memories_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'memories_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'memories_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER memories_ai AFTER INSERT ON memories\nWHEN NEW.content IS NOT NULL AND NEW.content != ''\nBEGIN\n INSERT INTO memories_fts(rowid, content, tags)\n VALUES (NEW.id, NEW.content, COALESCE(NEW.tags, ''));\nEND;\nCREATE TRIGGER memories_ad AFTER DELETE ON memories\nWHEN OLD.content IS NOT NULL AND OLD.content != ''\nBEGIN\n INSERT INTO memories_fts(memories_fts, rowid, content, tags)\n VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));\nEND;\nCREATE TRIGGER memories_au AFTER UPDATE ON memories\nWHEN OLD.content IS NOT NULL AND OLD.content != ''\nBEGIN\n INSERT INTO memories_fts(memories_fts, rowid, content, tags)\n VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));\n INSERT INTO memories_fts(rowid, content, tags)\n VALUES (NEW.id, COALESCE(NEW.content, ''), COALESCE(NEW.tags, ''));\nEND;\nCREATE VIRTUAL TABLE frames_fts USING fts5(\n full_text,\n app_name,\n window_name,\n browser_url,\n id UNINDEXED,\n tokenize='unicode61'\n)\n/* frames_fts(full_text,app_name,window_name,browser_url,id) */;\nCREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);\nCREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER frames_ai AFTER INSERT ON frames\nWHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''\nBEGIN\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n VALUES (\n NEW.id,\n NEW.full_text,\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n );\nEND;\nCREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n SELECT\n NEW.id,\n COALESCE(NEW.full_text, ''),\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';\nEND;\nCREATE TRIGGER frames_ad AFTER DELETE ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\nEND;\nCREATE INDEX idx_memories_frame_id ON memories(frame_id);\nCREATE INDEX idx_elements_source_role_text\n ON elements(source, role, frame_id)\n WHERE text IS NOT NULL;\nCREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
5853192385605379516
|
3173372984674339333
|
click
|
accessibility
|
NULL
|
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
screenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_sqlx_migrations meetings
audio_chunks memories
audio_tags memories_fts
audio_transcriptions memories_fts_config
audio_transcriptions_fts memories_fts_data
audio_transcriptions_fts_config memories_fts_docsize
audio_transcriptions_fts_data memories_fts_idx
audio_transcriptions_fts_docsize ocr_text
audio_transcriptions_fts_idx pipe_executions
elements pipe_scheduler_state
elements_fts speaker_embeddings
elements_fts_config speakers
elements_fts_data tags
elements_fts_docsize ui_events
elements_fts_idx ui_events_fts
frames ui_events_fts_config
frames_fts ui_events_fts_data
frames_fts_config ui_events_fts_docsize
frames_fts_content ui_events_fts_idx
frames_fts_data video_chunks
frames_fts_docsize vision_tags
frames_fts_idx
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema"
CREATE TABLE _sqlx_migrations (
version BIGINT PRIMARY KEY,
description TEXT NOT NULL,
installed_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
success BOOLEAN NOT NULL,
checksum BLOB NOT NULL,
execution_time BIGINT NOT NULL
);
CREATE TABLE video_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, device_name TEXT NOT NULL DEFAULT '', sync_id TEXT, machine_id TEXT, synced_at DATETIME, fps REAL NOT NULL DEFAULT 0.5, cloud_blob_id TEXT DEFAULT NULL);
CREATE TABLE sqlite_sequence(name,seq);
CREATE TABLE audio_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE TABLE IF NOT EXISTS "ocr_text" (
frame_id INTEGER NOT NULL,
text TEXT NOT NULL,
text_json TEXT,
app_name TEXT NOT NULL DEFAULT '',
ocr_engine TEXT NOT NULL DEFAULT 'unknown'
, window_name TEXT, focused BOOLEAN DEFAULT FALSE, text_length INTEGER, sync_id TEXT, synced_at DATETIME);
CREATE TABLE tags (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE vision_tags (
vision_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (vision_id, tag_id),
FOREIGN KEY (vision_id) REFERENCES frames(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE TABLE audio_tags (
audio_chunk_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (audio_chunk_id, tag_id),
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id);
CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id);
CREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);
CREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);
CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name);
CREATE TABLE speakers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
metadata JSON
, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);
CREATE TABLE speaker_embeddings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
embedding FLOAT[512] NOT NULL
check(
typeof(embedding) == 'blob'
and vec_length(embedding) == 512
),
speaker_id INTEGER REFERENCES speakers(id)
);
CREATE TABLE IF NOT EXISTS "audio_transcriptions" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
audio_chunk_id INTEGER NOT NULL,
offset_index INTEGER NOT NULL,
timestamp TIMESTAMP NOT NULL,
transcription TEXT NOT NULL,
device TEXT NOT NULL DEFAULT '',
is_input_device BOOLEAN NOT NULL DEFAULT TRUE,
speaker_id INTEGER,
transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME,
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)
);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);
CREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);
CREATE INDEX idx_ocr_text_length ON ocr_text (text_length);
CREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);
CREATE TABLE ui_events (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
session_id TEXT,
relative_ms INTEGER NOT NULL DEFAULT 0,
event_type TEXT NOT NULL, -- click, move, scroll, key, text, app_switch, window_focus, clipboard
-- Position
x INTEGER,
y INTEGER,
delta_x INTEGER,
delta_y INTEGER,
-- Mouse/key
button INTEGER,
click_count INTEGER,
key_code INTEGER,
modifiers INTEGER,
-- Text content
text_content TEXT,
text_length INTEGER,
-- App context
app_name TEXT,
app_pid INTEGER,
window_title TEXT,
browser_url TEXT,
-- Element context (from accessibility APIs)
element_role TEXT,
element_name TEXT,
element_value TEXT,
element_description TEXT,
element_automation_id TEXT,
element_bounds TEXT, -- JSON: {"x":0,"y":0,"width":100,"height":50}
-- Frame correlation
frame_id INTEGER,
-- Sync columns
sync_id TEXT,
machine_id TEXT,
synced_at DATETIME
);
CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp);
CREATE INDEX idx_ui_events_event_type ON ui_events(event_type);
CREATE INDEX idx_ui_events_app_name ON ui_events(app_name);
CREATE INDEX idx_ui_events_session_id ON ui_events(session_id);
CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id);
CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id);
CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at);
CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL;
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
/* ui_events_fts(text_content,app_name,window_title,element_name) */;
CREATE TABLE IF NOT EXISTS 'ui_events_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'ui_events_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'ui_events_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'ui_events_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER ui_events_ad AFTER DELETE ON ui_events BEGIN
INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)
VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);
END;
CREATE TRIGGER ui_events_au AFTER UPDATE ON ui_events BEGIN
INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)
VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);
INSERT INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)
VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);
END;
CREATE UNIQUE INDEX idx_audio_transcription_chunk_text
ON audio_transcriptions(audio_chunk_id, transcription);
CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name);
CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC);
CREATE TABLE pipe_executions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
pipe_name TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'queued',
trigger_type TEXT NOT NULL DEFAULT 'manual',
pid INTEGER,
model TEXT,
provider TEXT,
started_at TEXT,
finished_at TEXT,
stdout TEXT DEFAULT '',
stderr TEXT DEFAULT '',
exit_code INTEGER,
error_type TEXT,
error_message TEXT,
duration_ms INTEGER
, session_path TEXT);
CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status);
CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running';
CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC);
CREATE TABLE pipe_scheduler_state (
pipe_name TEXT PRIMARY KEY,
last_run_at TEXT,
last_success_at TEXT,
consecutive_failures INTEGER DEFAULT 0
);
CREATE TABLE IF NOT EXISTS "frames" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
video_chunk_id INTEGER DEFAULT NULL,
offset_index INTEGER NOT NULL DEFAULT 0,
timestamp TIMESTAMP NOT NULL,
name TEXT,
app_name TEXT DEFAULT NULL,
window_name TEXT DEFAULT NULL,
focused BOOLEAN DEFAULT NULL,
browser_url TEXT DEFAULT NULL,
device_name TEXT NOT NULL DEFAULT '',
sync_id TEXT,
machine_id TEXT,
synced_at DATETIME,
-- New event-driven capture columns
snapshot_path TEXT DEFAULT NULL,
accessibility_text TEXT DEFAULT NULL,
accessibility_tree_json TEXT DEFAULT NULL,
content_hash INTEGER DEFAULT NULL,
simhash INTEGER DEFAULT NULL,
capture_trigger TEXT DEFAULT NULL,
text_source TEXT DEFAULT NULL, cloud_blob_id TEXT DEFAULT NULL, full_text TEXT DEFAULT NULL, elements_ref_frame_id INTEGER DEFAULT NULL,
FOREIGN KEY (video_chunk_id) REFERENCES video_chunks(id)
);
CREATE INDEX idx_frames_timestamp ON frames(timestamp);
CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id);
CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name);
CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL;
CREATE TRIGGER ui_events_ai AFTER INSERT ON ui_events BEGIN
INSERT OR IGNORE INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)
VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);
END;
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);
CREATE TABLE elements (
id INTEGER PRIMARY KEY AUTOINCREMENT,
frame_id INTEGER NOT NULL,
source TEXT NOT NULL, -- 'ocr' | 'accessibility'
role TEXT NOT NULL, -- OCR: 'page','block','paragraph','line','word'
-- AX: 'AXButton','AXTextField','AXStaticText', etc.
text TEXT, -- element text content (NULL for container nodes)
parent_id INTEGER, -- self-referential FK for tree hierarchy (NULL = root)
depth INTEGER NOT NULL DEFAULT 0, -- tree depth (0 = root)
left_bound REAL, -- normalized 0-1 bounding box
top_bound REAL,
width_bound REAL,
height_bound REAL,
confidence REAL, -- OCR confidence (0-100), NULL for AX
sort_order INTEGER NOT NULL DEFAULT 0, properties TEXT, -- sibling order within parent
FOREIGN KEY (frame_id) REFERENCES frames(id),
FOREIGN KEY (parent_id) REFERENCES elements(id)
);
CREATE INDEX idx_elements_frame_id ON elements(frame_id);
CREATE INDEX idx_elements_parent_id ON elements(parent_id);
CREATE INDEX idx_elements_source ON elements(source);
CREATE INDEX idx_elements_frame_source ON elements(frame_id, source);
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
/* elements_fts(text,role,frame_id) */;
CREATE TABLE IF NOT EXISTS 'elements_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'elements_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'elements_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'elements_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER elements_ai AFTER INSERT ON elements
WHEN NEW.text IS NOT NULL AND NEW.text != ''
BEGIN
INSERT INTO elements_fts(rowid, text, role, frame_id)
VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);
END;
CREATE TRIGGER elements_ad AFTER DELETE ON elements
WHEN OLD.text IS NOT NULL AND OLD.text != ''
BEGIN
INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)
VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);
END;
CREATE TRIGGER elements_au AFTER UPDATE ON elements
WHEN OLD.text IS NOT NULL AND OLD.text != ''
BEGIN
INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)
VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);
INSERT INTO elements_fts(rowid, text, role, frame_id)
VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);
END;
CREATE VIRTUAL TABLE audio_transcriptions_fts USING fts5(
transcription,
device,
speaker_id,
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
)
/* audio_transcriptions_fts(transcription,device,speaker_id) */;
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions
WHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL;
CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL;
CREATE TABLE memories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
content TEXT NOT NULL,
source TEXT NOT NULL DEFAULT 'user',
source_context TEXT,
tags TEXT DEFAULT '[]',
importance REAL DEFAULT 0.5,
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
, frame_id INTEGER REFERENCES frames(id) ON DELETE SET NULL);
CREATE INDEX idx_memories_created_at ON memories(created_at);
CREATE INDEX idx_memories_importance ON memories(importance DESC);
CREATE INDEX idx_memories_source ON memories(source);
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
/* memories_fts(content,tags) */;
CREATE TABLE IF NOT EXISTS 'memories_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'memories_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'memories_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'memories_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER memories_ai AFTER INSERT ON memories
WHEN NEW.content IS NOT NULL AND NEW.content != ''
BEGIN
INSERT INTO memories_fts(rowid, content, tags)
VALUES (NEW.id, NEW.content, COALESCE(NEW.tags, ''));
END;
CREATE TRIGGER memories_ad AFTER DELETE ON memories
WHEN OLD.content IS NOT NULL AND OLD.content != ''
BEGIN
INSERT INTO memories_fts(memories_fts, rowid, content, tags)
VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));
END;
CREATE TRIGGER memories_au AFTER UPDATE ON memories
WHEN OLD.content IS NOT NULL AND OLD.content != ''
BEGIN
INSERT INTO memories_fts(memories_fts, rowid, content, tags)
VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));
INSERT INTO memories_fts(rowid, content, tags)
VALUES (NEW.id, COALESCE(NEW.content, ''), COALESCE(NEW.tags, ''));
END;
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
id UNINDEXED,
tokenize='unicode61'
)
/* frames_fts(full_text,app_name,window_name,browser_url,id) */;
CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);
CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER frames_ai AFTER INSERT ON frames
WHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''
BEGIN
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
VALUES (
NEW.id,
NEW.full_text,
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
);
END;
CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
SELECT
NEW.id,
COALESCE(NEW.full_text, ''),
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';
END;
CREATE TRIGGER frames_ad AFTER DELETE ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
END;
CREATE INDEX idx_memories_frame_id ON memories(frame_id);
CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL;
CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
713
|
|
715
|
17
|
0
|
2026-04-11T12:09:26.746273+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909366746_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
screenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_sqlx_migrations meetings
audio_chunks memories
audio_tags memories_fts
audio_transcriptions memories_fts_config
audio_transcriptions_fts memories_fts_data
audio_transcriptions_fts_config memories_fts_docsize
audio_transcriptions_fts_data memories_fts_idx
audio_transcriptions_fts_docsize ocr_text
audio_transcriptions_fts_idx pipe_executions
elements pipe_scheduler_state
elements_fts speaker_embeddings
elements_fts_config speakers
elements_fts_data tags
elements_fts_docsize ui_events
elements_fts_idx ui_events_fts
frames ui_events_fts_config
frames_fts ui_events_fts_data
frames_fts_config ui_events_fts_docsize
frames_fts_content ui_events_fts_idx
frames_fts_data video_chunks
frames_fts_docsize vision_tags
frames_fts_idx
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema"
CREATE TABLE _sqlx_migrations (
version BIGINT PRIMARY KEY,
description TEXT NOT NULL,
installed_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
success BOOLEAN NOT NULL,
checksum BLOB NOT NULL,
execution_time BIGINT NOT NULL
);
CREATE TABLE video_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, device_name TEXT NOT NULL DEFAULT '', sync_id TEXT, machine_id TEXT, synced_at DATETIME, fps REAL NOT NULL DEFAULT 0.5, cloud_blob_id TEXT DEFAULT NULL);
CREATE TABLE sqlite_sequence(name,seq);
CREATE TABLE audio_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE TABLE IF NOT EXISTS "ocr_text" (
frame_id INTEGER NOT NULL,
text TEXT NOT NULL,
text_json TEXT,
app_name TEXT NOT NULL DEFAULT '',
ocr_engine TEXT NOT NULL DEFAULT 'unknown'
, window_name TEXT, focused BOOLEAN DEFAULT FALSE, text_length INTEGER, sync_id TEXT, synced_at DATETIME);
CREATE TABLE tags (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE vision_tags (
vision_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (vision_id, tag_id),
FOREIGN KEY (vision_id) REFERENCES frames(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE TABLE audio_tags (
audio_chunk_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (audio_chunk_id, tag_id),
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id);
CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id);
CREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);
CREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);
CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name);
CREATE TABLE speakers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
metadata JSON
, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);
CREATE TABLE speaker_embeddings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
embedding FLOAT[512] NOT NULL
check(
typeof(embedding) == 'blob'
and vec_length(embedding) == 512
),
speaker_id INTEGER REFERENCES speakers(id)
);
CREATE TABLE IF NOT EXISTS "audio_transcriptions" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
audio_chunk_id INTEGER NOT NULL,
offset_index INTEGER NOT NULL,
timestamp TIMESTAMP NOT NULL,
transcription TEXT NOT NULL,
device TEXT NOT NULL DEFAULT '',
is_input_device BOOLEAN NOT NULL DEFAULT TRUE,
speaker_id INTEGER,
transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME,
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)
);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);
CREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);
CREATE INDEX idx_ocr_text_length ON ocr_text (text_length);
CREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);
CREATE TABLE ui_events (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
session_id TEXT,
relative_ms INTEGER NOT NULL DEFAULT 0,
event_type TEXT NOT NULL, -- click, move, scroll, key, text, app_switch, window_focus, clipboard
-- Position
x INTEGER,
y INTEGER,
delta_x INTEGER,
delta_y INTEGER,
-- Mouse/key
button INTEGER,
click_count INTEGER,
key_code INTEGER,
modifiers INTEGER,
-- Text content
text_content TEXT,
text_length INTEGER,
-- App context
app_name TEXT,
app_pid INTEGER,
window_title TEXT,
browser_url TEXT,
-- Element context (from accessibility APIs)
element_role TEXT,
element_name TEXT,
element_value TEXT,
element_description TEXT,
element_automation_id TEXT,
element_bounds TEXT, -- JSON: {"x":0,"y":0,"width":100,"height":50}
-- Frame correlation
frame_id INTEGER,
-- Sync columns
sync_id TEXT,
machine_id TEXT,
synced_at DATETIME
);
CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp);
CREATE INDEX idx_ui_events_event_type ON ui_events(event_type);
CREATE INDEX idx_ui_events_app_name ON ui_events(app_name);
CREATE INDEX idx_ui_events_session_id ON ui_events(session_id);
CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id);
CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id);
CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at);
CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL;
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
/* ui_events_fts(text_content,app_name,window_title,element_name) */;
CREATE TABLE IF NOT EXISTS 'ui_events_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'ui_events_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'ui_events_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'ui_events_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER ui_events_ad AFTER DELETE ON ui_events BEGIN
INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)
VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);
END;
CREATE TRIGGER ui_events_au AFTER UPDATE ON ui_events BEGIN
INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)
VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);
INSERT INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)
VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);
END;
CREATE UNIQUE INDEX idx_audio_transcription_chunk_text
ON audio_transcriptions(audio_chunk_id, transcription);
CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name);
CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC);
CREATE TABLE pipe_executions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
pipe_name TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'queued',
trigger_type TEXT NOT NULL DEFAULT 'manual',
pid INTEGER,
model TEXT,
provider TEXT,
started_at TEXT,
finished_at TEXT,
stdout TEXT DEFAULT '',
stderr TEXT DEFAULT '',
exit_code INTEGER,
error_type TEXT,
error_message TEXT,
duration_ms INTEGER
, session_path TEXT);
CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status);
CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running';
CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC);
CREATE TABLE pipe_scheduler_state (
pipe_name TEXT PRIMARY KEY,
last_run_at TEXT,
last_success_at TEXT,
consecutive_failures INTEGER DEFAULT 0
);
CREATE TABLE IF NOT EXISTS "frames" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
video_chunk_id INTEGER DEFAULT NULL,
offset_index INTEGER NOT NULL DEFAULT 0,
timestamp TIMESTAMP NOT NULL,
name TEXT,
app_name TEXT DEFAULT NULL,
window_name TEXT DEFAULT NULL,
focused BOOLEAN DEFAULT NULL,
browser_url TEXT DEFAULT NULL,
device_name TEXT NOT NULL DEFAULT '',
sync_id TEXT,
machine_id TEXT,
synced_at DATETIME,
-- New event-driven capture columns
snapshot_path TEXT DEFAULT NULL,
accessibility_text TEXT DEFAULT NULL,
accessibility_tree_json TEXT DEFAULT NULL,
content_hash INTEGER DEFAULT NULL,
simhash INTEGER DEFAULT NULL,
capture_trigger TEXT DEFAULT NULL,
text_source TEXT DEFAULT NULL, cloud_blob_id TEXT DEFAULT NULL, full_text TEXT DEFAULT NULL, elements_ref_frame_id INTEGER DEFAULT NULL,
FOREIGN KEY (video_chunk_id) REFERENCES video_chunks(id)
);
CREATE INDEX idx_frames_timestamp ON frames(timestamp);
CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id);
CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name);
CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL;
CREATE TRIGGER ui_events_ai AFTER INSERT ON ui_events BEGIN
INSERT OR IGNORE INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)
VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);
END;
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);
CREATE TABLE elements (
id INTEGER PRIMARY KEY AUTOINCREMENT,
frame_id INTEGER NOT NULL,
source TEXT NOT NULL, -- 'ocr' | 'accessibility'
role TEXT NOT NULL, -- OCR: 'page','block','paragraph','line','word'
-- AX: 'AXButton','AXTextField','AXStaticText', etc.
text TEXT, -- element text content (NULL for container nodes)
parent_id INTEGER, -- self-referential FK for tree hierarchy (NULL = root)
depth INTEGER NOT NULL DEFAULT 0, -- tree depth (0 = root)
left_bound REAL, -- normalized 0-1 bounding box
top_bound REAL,
width_bound REAL,
height_bound REAL,
confidence REAL, -- OCR confidence (0-100), NULL for AX
sort_order INTEGER NOT NULL DEFAULT 0, properties TEXT, -- sibling order within parent
FOREIGN KEY (frame_id) REFERENCES frames(id),
FOREIGN KEY (parent_id) REFERENCES elements(id)
);
CREATE INDEX idx_elements_frame_id ON elements(frame_id);
CREATE INDEX idx_elements_parent_id ON elements(parent_id);
CREATE INDEX idx_elements_source ON elements(source);
CREATE INDEX idx_elements_frame_source ON elements(frame_id, source);
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
/* elements_fts(text,role,frame_id) */;
CREATE TABLE IF NOT EXISTS 'elements_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'elements_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'elements_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'elements_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER elements_ai AFTER INSERT ON elements
WHEN NEW.text IS NOT NULL AND NEW.text != ''
BEGIN
INSERT INTO elements_fts(rowid, text, role, frame_id)
VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);
END;
CREATE TRIGGER elements_ad AFTER DELETE ON elements
WHEN OLD.text IS NOT NULL AND OLD.text != ''
BEGIN
INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)
VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);
END;
CREATE TRIGGER elements_au AFTER UPDATE ON elements
WHEN OLD.text IS NOT NULL AND OLD.text != ''
BEGIN
INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)
VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);
INSERT INTO elements_fts(rowid, text, role, frame_id)
VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);
END;
CREATE VIRTUAL TABLE audio_transcriptions_fts USING fts5(
transcription,
device,
speaker_id,
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
)
/* audio_transcriptions_fts(transcription,device,speaker_id) */;
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions
WHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL;
CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL;
CREATE TABLE memories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
content TEXT NOT NULL,
source TEXT NOT NULL DEFAULT 'user',
source_context TEXT,
tags TEXT DEFAULT '[]',
importance REAL DEFAULT 0.5,
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
, frame_id INTEGER REFERENCES frames(id) ON DELETE SET NULL);
CREATE INDEX idx_memories_created_at ON memories(created_at);
CREATE INDEX idx_memories_importance ON memories(importance DESC);
CREATE INDEX idx_memories_source ON memories(source);
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
/* memories_fts(content,tags) */;
CREATE TABLE IF NOT EXISTS 'memories_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'memories_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'memories_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'memories_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER memories_ai AFTER INSERT ON memories
WHEN NEW.content IS NOT NULL AND NEW.content != ''
BEGIN
INSERT INTO memories_fts(rowid, content, tags)
VALUES (NEW.id, NEW.content, COALESCE(NEW.tags, ''));
END;
CREATE TRIGGER memories_ad AFTER DELETE ON memories
WHEN OLD.content IS NOT NULL AND OLD.content != ''
BEGIN
INSERT INTO memories_fts(memories_fts, rowid, content, tags)
VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));
END;
CREATE TRIGGER memories_au AFTER UPDATE ON memories
WHEN OLD.content IS NOT NULL AND OLD.content != ''
BEGIN
INSERT INTO memories_fts(memories_fts, rowid, content, tags)
VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));
INSERT INTO memories_fts(rowid, content, tags)
VALUES (NEW.id, COALESCE(NEW.content, ''), COALESCE(NEW.tags, ''));
END;
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
id UNINDEXED,
tokenize='unicode61'
)
/* frames_fts(full_text,app_name,window_name,browser_url,id) */;
CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);
CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER frames_ai AFTER INSERT ON frames
WHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''
BEGIN
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
VALUES (
NEW.id,
NEW.full_text,
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
);
END;
CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
SELECT
NEW.id,
COALESCE(NEW.full_text, ''),
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';
END;
CREATE TRIGGER frames_ad AFTER DELETE ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
END;
CREATE INDEX idx_memories_frame_id ON memories(frame_id);
CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL;
CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"\nscreenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\"\n_sqlx_migrations meetings \naudio_chunks memories \naudio_tags memories_fts \naudio_transcriptions memories_fts_config \naudio_transcriptions_fts memories_fts_data \naudio_transcriptions_fts_config memories_fts_docsize \naudio_transcriptions_fts_data memories_fts_idx \naudio_transcriptions_fts_docsize ocr_text \naudio_transcriptions_fts_idx pipe_executions \nelements pipe_scheduler_state \nelements_fts speaker_embeddings \nelements_fts_config speakers \nelements_fts_data tags \nelements_fts_docsize ui_events \nelements_fts_idx ui_events_fts \nframes ui_events_fts_config \nframes_fts ui_events_fts_data \nframes_fts_config ui_events_fts_docsize \nframes_fts_content ui_events_fts_idx \nframes_fts_data video_chunks \nframes_fts_docsize vision_tags \nframes_fts_idx \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".schema\"\nCREATE TABLE _sqlx_migrations (\n version BIGINT PRIMARY KEY,\n description TEXT NOT NULL,\n installed_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,\n success BOOLEAN NOT NULL,\n checksum BLOB NOT NULL,\n execution_time BIGINT NOT NULL\n);\nCREATE TABLE video_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, device_name TEXT NOT NULL DEFAULT '', sync_id TEXT, machine_id TEXT, synced_at DATETIME, fps REAL NOT NULL DEFAULT 0.5, cloud_blob_id TEXT DEFAULT NULL);\nCREATE TABLE sqlite_sequence(name,seq);\nCREATE TABLE audio_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nCREATE TABLE IF NOT EXISTS \"ocr_text\" (\n frame_id INTEGER NOT NULL,\n text TEXT NOT NULL,\n text_json TEXT,\n app_name TEXT NOT NULL DEFAULT '',\n ocr_engine TEXT NOT NULL DEFAULT 'unknown'\n, window_name TEXT, focused BOOLEAN DEFAULT FALSE, text_length INTEGER, sync_id TEXT, synced_at DATETIME);\nCREATE TABLE tags (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT NOT NULL UNIQUE,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP\n);\nCREATE TABLE vision_tags (\n vision_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (vision_id, tag_id),\n FOREIGN KEY (vision_id) REFERENCES frames(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE TABLE audio_tags (\n audio_chunk_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (audio_chunk_id, tag_id),\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id);\nCREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id);\nCREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);\nCREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);\nCREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id);\nCREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name);\nCREATE TABLE speakers (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT,\n metadata JSON\n, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);\nCREATE TABLE speaker_embeddings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n embedding FLOAT[512] NOT NULL\n check(\n typeof(embedding) == 'blob'\n and vec_length(embedding) == 512\n ),\n speaker_id INTEGER REFERENCES speakers(id)\n);\nCREATE TABLE IF NOT EXISTS \"audio_transcriptions\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n audio_chunk_id INTEGER NOT NULL,\n offset_index INTEGER NOT NULL,\n timestamp TIMESTAMP NOT NULL,\n transcription TEXT NOT NULL,\n device TEXT NOT NULL DEFAULT '',\n is_input_device BOOLEAN NOT NULL DEFAULT TRUE,\n speaker_id INTEGER,\n transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME,\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)\n);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);\nCREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);\nCREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);\nCREATE INDEX idx_ocr_text_length ON ocr_text (text_length);\nCREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);\nCREATE TABLE ui_events (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n session_id TEXT,\n relative_ms INTEGER NOT NULL DEFAULT 0,\n event_type TEXT NOT NULL, -- click, move, scroll, key, text, app_switch, window_focus, clipboard\n -- Position\n x INTEGER,\n y INTEGER,\n delta_x INTEGER,\n delta_y INTEGER,\n -- Mouse/key\n button INTEGER,\n click_count INTEGER,\n key_code INTEGER,\n modifiers INTEGER,\n -- Text content\n text_content TEXT,\n text_length INTEGER,\n -- App context\n app_name TEXT,\n app_pid INTEGER,\n window_title TEXT,\n browser_url TEXT,\n -- Element context (from accessibility APIs)\n element_role TEXT,\n element_name TEXT,\n element_value TEXT,\n element_description TEXT,\n element_automation_id TEXT,\n element_bounds TEXT, -- JSON: {\"x\":0,\"y\":0,\"width\":100,\"height\":50}\n -- Frame correlation\n frame_id INTEGER,\n -- Sync columns\n sync_id TEXT,\n machine_id TEXT,\n synced_at DATETIME\n);\nCREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp);\nCREATE INDEX idx_ui_events_event_type ON ui_events(event_type);\nCREATE INDEX idx_ui_events_app_name ON ui_events(app_name);\nCREATE INDEX idx_ui_events_session_id ON ui_events(session_id);\nCREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id);\nCREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id);\nCREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at);\nCREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL;\nCREATE VIRTUAL TABLE ui_events_fts USING fts5(\n text_content,\n app_name,\n window_title,\n element_name,\n content='ui_events',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* ui_events_fts(text_content,app_name,window_title,element_name) */;\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER ui_events_ad AFTER DELETE ON ui_events BEGIN\n INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)\n VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);\nEND;\nCREATE TRIGGER ui_events_au AFTER UPDATE ON ui_events BEGIN\n INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)\n VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);\n INSERT INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)\n VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);\nEND;\nCREATE UNIQUE INDEX idx_audio_transcription_chunk_text\nON audio_transcriptions(audio_chunk_id, transcription);\nCREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name);\nCREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC);\nCREATE TABLE pipe_executions (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n pipe_name TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'queued',\n trigger_type TEXT NOT NULL DEFAULT 'manual',\n pid INTEGER,\n model TEXT,\n provider TEXT,\n started_at TEXT,\n finished_at TEXT,\n stdout TEXT DEFAULT '',\n stderr TEXT DEFAULT '',\n exit_code INTEGER,\n error_type TEXT,\n error_message TEXT,\n duration_ms INTEGER\n, session_path TEXT);\nCREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status);\nCREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running';\nCREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC);\nCREATE TABLE pipe_scheduler_state (\n pipe_name TEXT PRIMARY KEY,\n last_run_at TEXT,\n last_success_at TEXT,\n consecutive_failures INTEGER DEFAULT 0\n);\nCREATE TABLE IF NOT EXISTS \"frames\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n video_chunk_id INTEGER DEFAULT NULL,\n offset_index INTEGER NOT NULL DEFAULT 0,\n timestamp TIMESTAMP NOT NULL,\n name TEXT,\n app_name TEXT DEFAULT NULL,\n window_name TEXT DEFAULT NULL,\n focused BOOLEAN DEFAULT NULL,\n browser_url TEXT DEFAULT NULL,\n device_name TEXT NOT NULL DEFAULT '',\n sync_id TEXT,\n machine_id TEXT,\n synced_at DATETIME,\n -- New event-driven capture columns\n snapshot_path TEXT DEFAULT NULL,\n accessibility_text TEXT DEFAULT NULL,\n accessibility_tree_json TEXT DEFAULT NULL,\n content_hash INTEGER DEFAULT NULL,\n simhash INTEGER DEFAULT NULL,\n capture_trigger TEXT DEFAULT NULL,\n text_source TEXT DEFAULT NULL, cloud_blob_id TEXT DEFAULT NULL, full_text TEXT DEFAULT NULL, elements_ref_frame_id INTEGER DEFAULT NULL,\n FOREIGN KEY (video_chunk_id) REFERENCES video_chunks(id)\n);\nCREATE INDEX idx_frames_timestamp ON frames(timestamp);\nCREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id);\nCREATE INDEX idx_frames_timestamp_device\n ON frames(timestamp, device_name);\nCREATE INDEX idx_frames_snapshot_path\n ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL;\nCREATE TRIGGER ui_events_ai AFTER INSERT ON ui_events BEGIN\n INSERT OR IGNORE INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)\n VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);\nEND;\nCREATE TABLE meetings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n meeting_start TEXT NOT NULL,\n meeting_end TEXT,\n meeting_app TEXT NOT NULL,\n title TEXT,\n attendees TEXT,\n detection_source TEXT NOT NULL DEFAULT 'app',\n created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n, note TEXT);\nCREATE INDEX idx_meetings_start ON meetings(meeting_start);\nCREATE INDEX idx_meetings_end ON meetings(meeting_end);\nCREATE TABLE elements (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n frame_id INTEGER NOT NULL,\n source TEXT NOT NULL, -- 'ocr' | 'accessibility'\n role TEXT NOT NULL, -- OCR: 'page','block','paragraph','line','word'\n -- AX: 'AXButton','AXTextField','AXStaticText', etc.\n text TEXT, -- element text content (NULL for container nodes)\n parent_id INTEGER, -- self-referential FK for tree hierarchy (NULL = root)\n depth INTEGER NOT NULL DEFAULT 0, -- tree depth (0 = root)\n left_bound REAL, -- normalized 0-1 bounding box\n top_bound REAL,\n width_bound REAL,\n height_bound REAL,\n confidence REAL, -- OCR confidence (0-100), NULL for AX\n sort_order INTEGER NOT NULL DEFAULT 0, properties TEXT, -- sibling order within parent\n FOREIGN KEY (frame_id) REFERENCES frames(id),\n FOREIGN KEY (parent_id) REFERENCES elements(id)\n);\nCREATE INDEX idx_elements_frame_id ON elements(frame_id);\nCREATE INDEX idx_elements_parent_id ON elements(parent_id);\nCREATE INDEX idx_elements_source ON elements(source);\nCREATE INDEX idx_elements_frame_source ON elements(frame_id, source);\nCREATE VIRTUAL TABLE elements_fts USING fts5(\n text,\n role,\n frame_id UNINDEXED,\n content='elements',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* elements_fts(text,role,frame_id) */;\nCREATE TABLE IF NOT EXISTS 'elements_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'elements_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'elements_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'elements_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER elements_ai AFTER INSERT ON elements\nWHEN NEW.text IS NOT NULL AND NEW.text != ''\nBEGIN\n INSERT INTO elements_fts(rowid, text, role, frame_id)\n VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);\nEND;\nCREATE TRIGGER elements_ad AFTER DELETE ON elements\nWHEN OLD.text IS NOT NULL AND OLD.text != ''\nBEGIN\n INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)\n VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);\nEND;\nCREATE TRIGGER elements_au AFTER UPDATE ON elements\nWHEN OLD.text IS NOT NULL AND OLD.text != ''\nBEGIN\n INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)\n VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);\n INSERT INTO elements_fts(rowid, text, role, frame_id)\n VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);\nEND;\nCREATE VIRTUAL TABLE audio_transcriptions_fts USING fts5(\n transcription,\n device,\n speaker_id,\n content='audio_transcriptions',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* audio_transcriptions_fts(transcription,device,speaker_id) */;\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions\nWHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE INDEX idx_video_chunks_cloud_blob_id\n ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL;\nCREATE INDEX idx_frames_cloud_blob_id\n ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL;\nCREATE TABLE memories (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n content TEXT NOT NULL,\n source TEXT NOT NULL DEFAULT 'user',\n source_context TEXT,\n tags TEXT DEFAULT '[]',\n importance REAL DEFAULT 0.5,\n created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n, frame_id INTEGER REFERENCES frames(id) ON DELETE SET NULL);\nCREATE INDEX idx_memories_created_at ON memories(created_at);\nCREATE INDEX idx_memories_importance ON memories(importance DESC);\nCREATE INDEX idx_memories_source ON memories(source);\nCREATE VIRTUAL TABLE memories_fts USING fts5(\n content,\n tags,\n content='memories',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* memories_fts(content,tags) */;\nCREATE TABLE IF NOT EXISTS 'memories_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'memories_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'memories_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'memories_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER memories_ai AFTER INSERT ON memories\nWHEN NEW.content IS NOT NULL AND NEW.content != ''\nBEGIN\n INSERT INTO memories_fts(rowid, content, tags)\n VALUES (NEW.id, NEW.content, COALESCE(NEW.tags, ''));\nEND;\nCREATE TRIGGER memories_ad AFTER DELETE ON memories\nWHEN OLD.content IS NOT NULL AND OLD.content != ''\nBEGIN\n INSERT INTO memories_fts(memories_fts, rowid, content, tags)\n VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));\nEND;\nCREATE TRIGGER memories_au AFTER UPDATE ON memories\nWHEN OLD.content IS NOT NULL AND OLD.content != ''\nBEGIN\n INSERT INTO memories_fts(memories_fts, rowid, content, tags)\n VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));\n INSERT INTO memories_fts(rowid, content, tags)\n VALUES (NEW.id, COALESCE(NEW.content, ''), COALESCE(NEW.tags, ''));\nEND;\nCREATE VIRTUAL TABLE frames_fts USING fts5(\n full_text,\n app_name,\n window_name,\n browser_url,\n id UNINDEXED,\n tokenize='unicode61'\n)\n/* frames_fts(full_text,app_name,window_name,browser_url,id) */;\nCREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);\nCREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER frames_ai AFTER INSERT ON frames\nWHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''\nBEGIN\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n VALUES (\n NEW.id,\n NEW.full_text,\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n );\nEND;\nCREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n SELECT\n NEW.id,\n COALESCE(NEW.full_text, ''),\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';\nEND;\nCREATE TRIGGER frames_ad AFTER DELETE ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\nEND;\nCREATE INDEX idx_memories_frame_id ON memories(frame_id);\nCREATE INDEX idx_elements_source_role_text\n ON elements(source, role, frame_id)\n WHERE text IS NOT NULL;\nCREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","depth":4,"value":"drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"\nscreenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\"\n_sqlx_migrations meetings \naudio_chunks memories \naudio_tags memories_fts \naudio_transcriptions memories_fts_config \naudio_transcriptions_fts memories_fts_data \naudio_transcriptions_fts_config memories_fts_docsize \naudio_transcriptions_fts_data memories_fts_idx \naudio_transcriptions_fts_docsize ocr_text \naudio_transcriptions_fts_idx pipe_executions \nelements pipe_scheduler_state \nelements_fts speaker_embeddings \nelements_fts_config speakers \nelements_fts_data tags \nelements_fts_docsize ui_events \nelements_fts_idx ui_events_fts \nframes ui_events_fts_config \nframes_fts ui_events_fts_data \nframes_fts_config ui_events_fts_docsize \nframes_fts_content ui_events_fts_idx \nframes_fts_data video_chunks \nframes_fts_docsize vision_tags \nframes_fts_idx \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".schema\"\nCREATE TABLE _sqlx_migrations (\n version BIGINT PRIMARY KEY,\n description TEXT NOT NULL,\n installed_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,\n success BOOLEAN NOT NULL,\n checksum BLOB NOT NULL,\n execution_time BIGINT NOT NULL\n);\nCREATE TABLE video_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, device_name TEXT NOT NULL DEFAULT '', sync_id TEXT, machine_id TEXT, synced_at DATETIME, fps REAL NOT NULL DEFAULT 0.5, cloud_blob_id TEXT DEFAULT NULL);\nCREATE TABLE sqlite_sequence(name,seq);\nCREATE TABLE audio_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nCREATE TABLE IF NOT EXISTS \"ocr_text\" (\n frame_id INTEGER NOT NULL,\n text TEXT NOT NULL,\n text_json TEXT,\n app_name TEXT NOT NULL DEFAULT '',\n ocr_engine TEXT NOT NULL DEFAULT 'unknown'\n, window_name TEXT, focused BOOLEAN DEFAULT FALSE, text_length INTEGER, sync_id TEXT, synced_at DATETIME);\nCREATE TABLE tags (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT NOT NULL UNIQUE,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP\n);\nCREATE TABLE vision_tags (\n vision_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (vision_id, tag_id),\n FOREIGN KEY (vision_id) REFERENCES frames(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE TABLE audio_tags (\n audio_chunk_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (audio_chunk_id, tag_id),\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id);\nCREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id);\nCREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);\nCREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);\nCREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id);\nCREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name);\nCREATE TABLE speakers (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT,\n metadata JSON\n, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);\nCREATE TABLE speaker_embeddings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n embedding FLOAT[512] NOT NULL\n check(\n typeof(embedding) == 'blob'\n and vec_length(embedding) == 512\n ),\n speaker_id INTEGER REFERENCES speakers(id)\n);\nCREATE TABLE IF NOT EXISTS \"audio_transcriptions\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n audio_chunk_id INTEGER NOT NULL,\n offset_index INTEGER NOT NULL,\n timestamp TIMESTAMP NOT NULL,\n transcription TEXT NOT NULL,\n device TEXT NOT NULL DEFAULT '',\n is_input_device BOOLEAN NOT NULL DEFAULT TRUE,\n speaker_id INTEGER,\n transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME,\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)\n);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);\nCREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);\nCREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);\nCREATE INDEX idx_ocr_text_length ON ocr_text (text_length);\nCREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);\nCREATE TABLE ui_events (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n session_id TEXT,\n relative_ms INTEGER NOT NULL DEFAULT 0,\n event_type TEXT NOT NULL, -- click, move, scroll, key, text, app_switch, window_focus, clipboard\n -- Position\n x INTEGER,\n y INTEGER,\n delta_x INTEGER,\n delta_y INTEGER,\n -- Mouse/key\n button INTEGER,\n click_count INTEGER,\n key_code INTEGER,\n modifiers INTEGER,\n -- Text content\n text_content TEXT,\n text_length INTEGER,\n -- App context\n app_name TEXT,\n app_pid INTEGER,\n window_title TEXT,\n browser_url TEXT,\n -- Element context (from accessibility APIs)\n element_role TEXT,\n element_name TEXT,\n element_value TEXT,\n element_description TEXT,\n element_automation_id TEXT,\n element_bounds TEXT, -- JSON: {\"x\":0,\"y\":0,\"width\":100,\"height\":50}\n -- Frame correlation\n frame_id INTEGER,\n -- Sync columns\n sync_id TEXT,\n machine_id TEXT,\n synced_at DATETIME\n);\nCREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp);\nCREATE INDEX idx_ui_events_event_type ON ui_events(event_type);\nCREATE INDEX idx_ui_events_app_name ON ui_events(app_name);\nCREATE INDEX idx_ui_events_session_id ON ui_events(session_id);\nCREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id);\nCREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id);\nCREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at);\nCREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL;\nCREATE VIRTUAL TABLE ui_events_fts USING fts5(\n text_content,\n app_name,\n window_title,\n element_name,\n content='ui_events',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* ui_events_fts(text_content,app_name,window_title,element_name) */;\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER ui_events_ad AFTER DELETE ON ui_events BEGIN\n INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)\n VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);\nEND;\nCREATE TRIGGER ui_events_au AFTER UPDATE ON ui_events BEGIN\n INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)\n VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);\n INSERT INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)\n VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);\nEND;\nCREATE UNIQUE INDEX idx_audio_transcription_chunk_text\nON audio_transcriptions(audio_chunk_id, transcription);\nCREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name);\nCREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC);\nCREATE TABLE pipe_executions (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n pipe_name TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'queued',\n trigger_type TEXT NOT NULL DEFAULT 'manual',\n pid INTEGER,\n model TEXT,\n provider TEXT,\n started_at TEXT,\n finished_at TEXT,\n stdout TEXT DEFAULT '',\n stderr TEXT DEFAULT '',\n exit_code INTEGER,\n error_type TEXT,\n error_message TEXT,\n duration_ms INTEGER\n, session_path TEXT);\nCREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status);\nCREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running';\nCREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC);\nCREATE TABLE pipe_scheduler_state (\n pipe_name TEXT PRIMARY KEY,\n last_run_at TEXT,\n last_success_at TEXT,\n consecutive_failures INTEGER DEFAULT 0\n);\nCREATE TABLE IF NOT EXISTS \"frames\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n video_chunk_id INTEGER DEFAULT NULL,\n offset_index INTEGER NOT NULL DEFAULT 0,\n timestamp TIMESTAMP NOT NULL,\n name TEXT,\n app_name TEXT DEFAULT NULL,\n window_name TEXT DEFAULT NULL,\n focused BOOLEAN DEFAULT NULL,\n browser_url TEXT DEFAULT NULL,\n device_name TEXT NOT NULL DEFAULT '',\n sync_id TEXT,\n machine_id TEXT,\n synced_at DATETIME,\n -- New event-driven capture columns\n snapshot_path TEXT DEFAULT NULL,\n accessibility_text TEXT DEFAULT NULL,\n accessibility_tree_json TEXT DEFAULT NULL,\n content_hash INTEGER DEFAULT NULL,\n simhash INTEGER DEFAULT NULL,\n capture_trigger TEXT DEFAULT NULL,\n text_source TEXT DEFAULT NULL, cloud_blob_id TEXT DEFAULT NULL, full_text TEXT DEFAULT NULL, elements_ref_frame_id INTEGER DEFAULT NULL,\n FOREIGN KEY (video_chunk_id) REFERENCES video_chunks(id)\n);\nCREATE INDEX idx_frames_timestamp ON frames(timestamp);\nCREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id);\nCREATE INDEX idx_frames_timestamp_device\n ON frames(timestamp, device_name);\nCREATE INDEX idx_frames_snapshot_path\n ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL;\nCREATE TRIGGER ui_events_ai AFTER INSERT ON ui_events BEGIN\n INSERT OR IGNORE INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)\n VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);\nEND;\nCREATE TABLE meetings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n meeting_start TEXT NOT NULL,\n meeting_end TEXT,\n meeting_app TEXT NOT NULL,\n title TEXT,\n attendees TEXT,\n detection_source TEXT NOT NULL DEFAULT 'app',\n created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n, note TEXT);\nCREATE INDEX idx_meetings_start ON meetings(meeting_start);\nCREATE INDEX idx_meetings_end ON meetings(meeting_end);\nCREATE TABLE elements (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n frame_id INTEGER NOT NULL,\n source TEXT NOT NULL, -- 'ocr' | 'accessibility'\n role TEXT NOT NULL, -- OCR: 'page','block','paragraph','line','word'\n -- AX: 'AXButton','AXTextField','AXStaticText', etc.\n text TEXT, -- element text content (NULL for container nodes)\n parent_id INTEGER, -- self-referential FK for tree hierarchy (NULL = root)\n depth INTEGER NOT NULL DEFAULT 0, -- tree depth (0 = root)\n left_bound REAL, -- normalized 0-1 bounding box\n top_bound REAL,\n width_bound REAL,\n height_bound REAL,\n confidence REAL, -- OCR confidence (0-100), NULL for AX\n sort_order INTEGER NOT NULL DEFAULT 0, properties TEXT, -- sibling order within parent\n FOREIGN KEY (frame_id) REFERENCES frames(id),\n FOREIGN KEY (parent_id) REFERENCES elements(id)\n);\nCREATE INDEX idx_elements_frame_id ON elements(frame_id);\nCREATE INDEX idx_elements_parent_id ON elements(parent_id);\nCREATE INDEX idx_elements_source ON elements(source);\nCREATE INDEX idx_elements_frame_source ON elements(frame_id, source);\nCREATE VIRTUAL TABLE elements_fts USING fts5(\n text,\n role,\n frame_id UNINDEXED,\n content='elements',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* elements_fts(text,role,frame_id) */;\nCREATE TABLE IF NOT EXISTS 'elements_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'elements_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'elements_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'elements_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER elements_ai AFTER INSERT ON elements\nWHEN NEW.text IS NOT NULL AND NEW.text != ''\nBEGIN\n INSERT INTO elements_fts(rowid, text, role, frame_id)\n VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);\nEND;\nCREATE TRIGGER elements_ad AFTER DELETE ON elements\nWHEN OLD.text IS NOT NULL AND OLD.text != ''\nBEGIN\n INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)\n VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);\nEND;\nCREATE TRIGGER elements_au AFTER UPDATE ON elements\nWHEN OLD.text IS NOT NULL AND OLD.text != ''\nBEGIN\n INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)\n VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);\n INSERT INTO elements_fts(rowid, text, role, frame_id)\n VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);\nEND;\nCREATE VIRTUAL TABLE audio_transcriptions_fts USING fts5(\n transcription,\n device,\n speaker_id,\n content='audio_transcriptions',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* audio_transcriptions_fts(transcription,device,speaker_id) */;\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions\nWHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE INDEX idx_video_chunks_cloud_blob_id\n ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL;\nCREATE INDEX idx_frames_cloud_blob_id\n ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL;\nCREATE TABLE memories (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n content TEXT NOT NULL,\n source TEXT NOT NULL DEFAULT 'user',\n source_context TEXT,\n tags TEXT DEFAULT '[]',\n importance REAL DEFAULT 0.5,\n created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n, frame_id INTEGER REFERENCES frames(id) ON DELETE SET NULL);\nCREATE INDEX idx_memories_created_at ON memories(created_at);\nCREATE INDEX idx_memories_importance ON memories(importance DESC);\nCREATE INDEX idx_memories_source ON memories(source);\nCREATE VIRTUAL TABLE memories_fts USING fts5(\n content,\n tags,\n content='memories',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* memories_fts(content,tags) */;\nCREATE TABLE IF NOT EXISTS 'memories_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'memories_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'memories_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'memories_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER memories_ai AFTER INSERT ON memories\nWHEN NEW.content IS NOT NULL AND NEW.content != ''\nBEGIN\n INSERT INTO memories_fts(rowid, content, tags)\n VALUES (NEW.id, NEW.content, COALESCE(NEW.tags, ''));\nEND;\nCREATE TRIGGER memories_ad AFTER DELETE ON memories\nWHEN OLD.content IS NOT NULL AND OLD.content != ''\nBEGIN\n INSERT INTO memories_fts(memories_fts, rowid, content, tags)\n VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));\nEND;\nCREATE TRIGGER memories_au AFTER UPDATE ON memories\nWHEN OLD.content IS NOT NULL AND OLD.content != ''\nBEGIN\n INSERT INTO memories_fts(memories_fts, rowid, content, tags)\n VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));\n INSERT INTO memories_fts(rowid, content, tags)\n VALUES (NEW.id, COALESCE(NEW.content, ''), COALESCE(NEW.tags, ''));\nEND;\nCREATE VIRTUAL TABLE frames_fts USING fts5(\n full_text,\n app_name,\n window_name,\n browser_url,\n id UNINDEXED,\n tokenize='unicode61'\n)\n/* frames_fts(full_text,app_name,window_name,browser_url,id) */;\nCREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);\nCREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER frames_ai AFTER INSERT ON frames\nWHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''\nBEGIN\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n VALUES (\n NEW.id,\n NEW.full_text,\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n );\nEND;\nCREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n SELECT\n NEW.id,\n COALESCE(NEW.full_text, ''),\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';\nEND;\nCREATE TRIGGER frames_ad AFTER DELETE ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\nEND;\nCREATE INDEX idx_memories_frame_id ON memories(frame_id);\nCREATE INDEX idx_elements_source_role_text\n ON elements(source, role, frame_id)\n WHERE text IS NOT NULL;\nCREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
5853192385605379516
|
3173372984674339333
|
idle
|
accessibility
|
NULL
|
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
screenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_sqlx_migrations meetings
audio_chunks memories
audio_tags memories_fts
audio_transcriptions memories_fts_config
audio_transcriptions_fts memories_fts_data
audio_transcriptions_fts_config memories_fts_docsize
audio_transcriptions_fts_data memories_fts_idx
audio_transcriptions_fts_docsize ocr_text
audio_transcriptions_fts_idx pipe_executions
elements pipe_scheduler_state
elements_fts speaker_embeddings
elements_fts_config speakers
elements_fts_data tags
elements_fts_docsize ui_events
elements_fts_idx ui_events_fts
frames ui_events_fts_config
frames_fts ui_events_fts_data
frames_fts_config ui_events_fts_docsize
frames_fts_content ui_events_fts_idx
frames_fts_data video_chunks
frames_fts_docsize vision_tags
frames_fts_idx
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema"
CREATE TABLE _sqlx_migrations (
version BIGINT PRIMARY KEY,
description TEXT NOT NULL,
installed_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
success BOOLEAN NOT NULL,
checksum BLOB NOT NULL,
execution_time BIGINT NOT NULL
);
CREATE TABLE video_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, device_name TEXT NOT NULL DEFAULT '', sync_id TEXT, machine_id TEXT, synced_at DATETIME, fps REAL NOT NULL DEFAULT 0.5, cloud_blob_id TEXT DEFAULT NULL);
CREATE TABLE sqlite_sequence(name,seq);
CREATE TABLE audio_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE TABLE IF NOT EXISTS "ocr_text" (
frame_id INTEGER NOT NULL,
text TEXT NOT NULL,
text_json TEXT,
app_name TEXT NOT NULL DEFAULT '',
ocr_engine TEXT NOT NULL DEFAULT 'unknown'
, window_name TEXT, focused BOOLEAN DEFAULT FALSE, text_length INTEGER, sync_id TEXT, synced_at DATETIME);
CREATE TABLE tags (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE vision_tags (
vision_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (vision_id, tag_id),
FOREIGN KEY (vision_id) REFERENCES frames(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE TABLE audio_tags (
audio_chunk_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (audio_chunk_id, tag_id),
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id);
CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id);
CREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);
CREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);
CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name);
CREATE TABLE speakers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
metadata JSON
, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);
CREATE TABLE speaker_embeddings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
embedding FLOAT[512] NOT NULL
check(
typeof(embedding) == 'blob'
and vec_length(embedding) == 512
),
speaker_id INTEGER REFERENCES speakers(id)
);
CREATE TABLE IF NOT EXISTS "audio_transcriptions" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
audio_chunk_id INTEGER NOT NULL,
offset_index INTEGER NOT NULL,
timestamp TIMESTAMP NOT NULL,
transcription TEXT NOT NULL,
device TEXT NOT NULL DEFAULT '',
is_input_device BOOLEAN NOT NULL DEFAULT TRUE,
speaker_id INTEGER,
transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME,
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)
);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);
CREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);
CREATE INDEX idx_ocr_text_length ON ocr_text (text_length);
CREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);
CREATE TABLE ui_events (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
session_id TEXT,
relative_ms INTEGER NOT NULL DEFAULT 0,
event_type TEXT NOT NULL, -- click, move, scroll, key, text, app_switch, window_focus, clipboard
-- Position
x INTEGER,
y INTEGER,
delta_x INTEGER,
delta_y INTEGER,
-- Mouse/key
button INTEGER,
click_count INTEGER,
key_code INTEGER,
modifiers INTEGER,
-- Text content
text_content TEXT,
text_length INTEGER,
-- App context
app_name TEXT,
app_pid INTEGER,
window_title TEXT,
browser_url TEXT,
-- Element context (from accessibility APIs)
element_role TEXT,
element_name TEXT,
element_value TEXT,
element_description TEXT,
element_automation_id TEXT,
element_bounds TEXT, -- JSON: {"x":0,"y":0,"width":100,"height":50}
-- Frame correlation
frame_id INTEGER,
-- Sync columns
sync_id TEXT,
machine_id TEXT,
synced_at DATETIME
);
CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp);
CREATE INDEX idx_ui_events_event_type ON ui_events(event_type);
CREATE INDEX idx_ui_events_app_name ON ui_events(app_name);
CREATE INDEX idx_ui_events_session_id ON ui_events(session_id);
CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id);
CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id);
CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at);
CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL;
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
/* ui_events_fts(text_content,app_name,window_title,element_name) */;
CREATE TABLE IF NOT EXISTS 'ui_events_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'ui_events_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'ui_events_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'ui_events_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER ui_events_ad AFTER DELETE ON ui_events BEGIN
INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)
VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);
END;
CREATE TRIGGER ui_events_au AFTER UPDATE ON ui_events BEGIN
INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)
VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);
INSERT INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)
VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);
END;
CREATE UNIQUE INDEX idx_audio_transcription_chunk_text
ON audio_transcriptions(audio_chunk_id, transcription);
CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name);
CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC);
CREATE TABLE pipe_executions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
pipe_name TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'queued',
trigger_type TEXT NOT NULL DEFAULT 'manual',
pid INTEGER,
model TEXT,
provider TEXT,
started_at TEXT,
finished_at TEXT,
stdout TEXT DEFAULT '',
stderr TEXT DEFAULT '',
exit_code INTEGER,
error_type TEXT,
error_message TEXT,
duration_ms INTEGER
, session_path TEXT);
CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status);
CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running';
CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC);
CREATE TABLE pipe_scheduler_state (
pipe_name TEXT PRIMARY KEY,
last_run_at TEXT,
last_success_at TEXT,
consecutive_failures INTEGER DEFAULT 0
);
CREATE TABLE IF NOT EXISTS "frames" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
video_chunk_id INTEGER DEFAULT NULL,
offset_index INTEGER NOT NULL DEFAULT 0,
timestamp TIMESTAMP NOT NULL,
name TEXT,
app_name TEXT DEFAULT NULL,
window_name TEXT DEFAULT NULL,
focused BOOLEAN DEFAULT NULL,
browser_url TEXT DEFAULT NULL,
device_name TEXT NOT NULL DEFAULT '',
sync_id TEXT,
machine_id TEXT,
synced_at DATETIME,
-- New event-driven capture columns
snapshot_path TEXT DEFAULT NULL,
accessibility_text TEXT DEFAULT NULL,
accessibility_tree_json TEXT DEFAULT NULL,
content_hash INTEGER DEFAULT NULL,
simhash INTEGER DEFAULT NULL,
capture_trigger TEXT DEFAULT NULL,
text_source TEXT DEFAULT NULL, cloud_blob_id TEXT DEFAULT NULL, full_text TEXT DEFAULT NULL, elements_ref_frame_id INTEGER DEFAULT NULL,
FOREIGN KEY (video_chunk_id) REFERENCES video_chunks(id)
);
CREATE INDEX idx_frames_timestamp ON frames(timestamp);
CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id);
CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name);
CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL;
CREATE TRIGGER ui_events_ai AFTER INSERT ON ui_events BEGIN
INSERT OR IGNORE INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)
VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);
END;
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);
CREATE TABLE elements (
id INTEGER PRIMARY KEY AUTOINCREMENT,
frame_id INTEGER NOT NULL,
source TEXT NOT NULL, -- 'ocr' | 'accessibility'
role TEXT NOT NULL, -- OCR: 'page','block','paragraph','line','word'
-- AX: 'AXButton','AXTextField','AXStaticText', etc.
text TEXT, -- element text content (NULL for container nodes)
parent_id INTEGER, -- self-referential FK for tree hierarchy (NULL = root)
depth INTEGER NOT NULL DEFAULT 0, -- tree depth (0 = root)
left_bound REAL, -- normalized 0-1 bounding box
top_bound REAL,
width_bound REAL,
height_bound REAL,
confidence REAL, -- OCR confidence (0-100), NULL for AX
sort_order INTEGER NOT NULL DEFAULT 0, properties TEXT, -- sibling order within parent
FOREIGN KEY (frame_id) REFERENCES frames(id),
FOREIGN KEY (parent_id) REFERENCES elements(id)
);
CREATE INDEX idx_elements_frame_id ON elements(frame_id);
CREATE INDEX idx_elements_parent_id ON elements(parent_id);
CREATE INDEX idx_elements_source ON elements(source);
CREATE INDEX idx_elements_frame_source ON elements(frame_id, source);
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
/* elements_fts(text,role,frame_id) */;
CREATE TABLE IF NOT EXISTS 'elements_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'elements_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'elements_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'elements_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER elements_ai AFTER INSERT ON elements
WHEN NEW.text IS NOT NULL AND NEW.text != ''
BEGIN
INSERT INTO elements_fts(rowid, text, role, frame_id)
VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);
END;
CREATE TRIGGER elements_ad AFTER DELETE ON elements
WHEN OLD.text IS NOT NULL AND OLD.text != ''
BEGIN
INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)
VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);
END;
CREATE TRIGGER elements_au AFTER UPDATE ON elements
WHEN OLD.text IS NOT NULL AND OLD.text != ''
BEGIN
INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)
VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);
INSERT INTO elements_fts(rowid, text, role, frame_id)
VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);
END;
CREATE VIRTUAL TABLE audio_transcriptions_fts USING fts5(
transcription,
device,
speaker_id,
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
)
/* audio_transcriptions_fts(transcription,device,speaker_id) */;
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions
WHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL;
CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL;
CREATE TABLE memories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
content TEXT NOT NULL,
source TEXT NOT NULL DEFAULT 'user',
source_context TEXT,
tags TEXT DEFAULT '[]',
importance REAL DEFAULT 0.5,
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
, frame_id INTEGER REFERENCES frames(id) ON DELETE SET NULL);
CREATE INDEX idx_memories_created_at ON memories(created_at);
CREATE INDEX idx_memories_importance ON memories(importance DESC);
CREATE INDEX idx_memories_source ON memories(source);
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
/* memories_fts(content,tags) */;
CREATE TABLE IF NOT EXISTS 'memories_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'memories_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'memories_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'memories_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER memories_ai AFTER INSERT ON memories
WHEN NEW.content IS NOT NULL AND NEW.content != ''
BEGIN
INSERT INTO memories_fts(rowid, content, tags)
VALUES (NEW.id, NEW.content, COALESCE(NEW.tags, ''));
END;
CREATE TRIGGER memories_ad AFTER DELETE ON memories
WHEN OLD.content IS NOT NULL AND OLD.content != ''
BEGIN
INSERT INTO memories_fts(memories_fts, rowid, content, tags)
VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));
END;
CREATE TRIGGER memories_au AFTER UPDATE ON memories
WHEN OLD.content IS NOT NULL AND OLD.content != ''
BEGIN
INSERT INTO memories_fts(memories_fts, rowid, content, tags)
VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));
INSERT INTO memories_fts(rowid, content, tags)
VALUES (NEW.id, COALESCE(NEW.content, ''), COALESCE(NEW.tags, ''));
END;
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
id UNINDEXED,
tokenize='unicode61'
)
/* frames_fts(full_text,app_name,window_name,browser_url,id) */;
CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);
CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER frames_ai AFTER INSERT ON frames
WHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''
BEGIN
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
VALUES (
NEW.id,
NEW.full_text,
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
);
END;
CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
SELECT
NEW.id,
COALESCE(NEW.full_text, ''),
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';
END;
CREATE TRIGGER frames_ad AFTER DELETE ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
END;
CREATE INDEX idx_memories_frame_id ON memories(frame_id);
CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL;
CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
716
|
17
|
1
|
2026-04-11T12:09:32.797426+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909372797_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEdit ViewSessionScriptsProfilesWindowHe iTerm2ShellEdit ViewSessionScriptsProfilesWindowHelp-zshDOCKERO ₴1tokenize='unicode61'DEV (-zsh)O $2APP (-zsh)• *3-zsh• 84/* frames_fts(full_text,app_name, window_name,browser_url, id) */;CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, CO, c1, c2, с3, с4);CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;CREATE TRIGGER frames_ai AFTER INSERT ON framesWHEN NEW.full_text IS NOT NULL AND NEW.full_text != "*BEGININSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)VALUES (NEW.id,NEW.full_text,COALESCE(NEW.app_name,"'),COALESCE(NEW.window_name,COALESCECNEW.browser_url,-zsh• *5-zsh100% <47O ₴6Sat 11 Apr 15:09:32-zshT81X7);END;CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON framesBEGINDELETE FROM frames_fts WHERE id = OLD.id;INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)SELECTNEW. id,COALESCECNEW.full_text,"*),COALESCE(NEW.app_name,"*),COALESCE(NEW.window_name,"'),COALESCE(NEW.browser_url,"*)WHERE NEW.full_text IS NOT NULL AND NEW.full_text != "*;END;BEGINCREATE TRIGGER frames_ad AFTER DELETE ON framesDELETE FROM frames_fts WHERE id = OLD.id;END;CREATE INDEX idx_memories_frame_id ON memories(frame_id);CREATE INDEX idx_elements_source_role_textON elements(source, role, frame_id)WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
NULL
|
3776369863370969961
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEdit ViewSessionScriptsProfilesWindowHe iTerm2ShellEdit ViewSessionScriptsProfilesWindowHelp-zshDOCKERO ₴1tokenize='unicode61'DEV (-zsh)O $2APP (-zsh)• *3-zsh• 84/* frames_fts(full_text,app_name, window_name,browser_url, id) */;CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, CO, c1, c2, с3, с4);CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;CREATE TRIGGER frames_ai AFTER INSERT ON framesWHEN NEW.full_text IS NOT NULL AND NEW.full_text != "*BEGININSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)VALUES (NEW.id,NEW.full_text,COALESCE(NEW.app_name,"'),COALESCE(NEW.window_name,COALESCECNEW.browser_url,-zsh• *5-zsh100% <47O ₴6Sat 11 Apr 15:09:32-zshT81X7);END;CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON framesBEGINDELETE FROM frames_fts WHERE id = OLD.id;INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)SELECTNEW. id,COALESCECNEW.full_text,"*),COALESCE(NEW.app_name,"*),COALESCE(NEW.window_name,"'),COALESCE(NEW.browser_url,"*)WHERE NEW.full_text IS NOT NULL AND NEW.full_text != "*;END;BEGINCREATE TRIGGER frames_ad AFTER DELETE ON framesDELETE FROM frames_fts WHERE id = OLD.id;END;CREATE INDEX idx_memories_frame_id ON memories(frame_id);CREATE INDEX idx_elements_source_role_textON elements(source, role, frame_id)WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
715
|
|
717
|
17
|
2
|
2026-04-11T12:09:33.439918+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909373439_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2Shell Edit ViewSessionScriptsProfilesWindo iTerm2Shell Edit ViewSessionScriptsProfilesWindowHelp-zshDOCKERO ₴1tokenize='unicode61'DEV (-zsh)• $2APP (-zsh)• *3-zsh• x4/* frames_fts(full_text,app_name, window_name,browser_url, id) */;CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, cO, c1, c2, с3, c4);CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;CREATE TRIGGER frames_ai AFTER INSERT ON framesWHEN NEW.full_text IS NOT NULL AND NEW.full_text != "'BEGININSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)VALUES (NEW.id,NEW.full_text,COALESCE(NEW.app_name,"'),COALESCE(NEW.window_name,COALESCECNEW.browser_url,-zsh• x5-zsh100% C47O ₴6Sat 11 Apr 15:09:33-zshT81X7+);END;CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON framesBEGINDELETE FROM frames_fts WHERE id = OLD.id;INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)SELECTNEW.id,COALESCECNEW.full_text,"*),COALESCE(NEW.app_name,"*),COALESCE(NEW.window_name,"'),COALESCE(NEW.browser_url,"*)WHERE NEW.full_text IS NOT NULL AND NEW.full_text != "*;END;BEGINCREATE TRIGGER frames_ad AFTER DELETE ON framesDELETE FROM frames_fts WHERE id = OLD.id;END;CREATE INDEX idx_memories_frame_id ON memories(frame_id);CREATE INDEX idx_elements_source_role_textON elements(source, role, frame_id)WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
NULL
|
-3171887111164154172
|
NULL
|
visual_change
|
ocr
|
NULL
|
iTerm2Shell Edit ViewSessionScriptsProfilesWindo iTerm2Shell Edit ViewSessionScriptsProfilesWindowHelp-zshDOCKERO ₴1tokenize='unicode61'DEV (-zsh)• $2APP (-zsh)• *3-zsh• x4/* frames_fts(full_text,app_name, window_name,browser_url, id) */;CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, cO, c1, c2, с3, c4);CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;CREATE TRIGGER frames_ai AFTER INSERT ON framesWHEN NEW.full_text IS NOT NULL AND NEW.full_text != "'BEGININSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)VALUES (NEW.id,NEW.full_text,COALESCE(NEW.app_name,"'),COALESCE(NEW.window_name,COALESCECNEW.browser_url,-zsh• x5-zsh100% C47O ₴6Sat 11 Apr 15:09:33-zshT81X7+);END;CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON framesBEGINDELETE FROM frames_fts WHERE id = OLD.id;INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)SELECTNEW.id,COALESCECNEW.full_text,"*),COALESCE(NEW.app_name,"*),COALESCE(NEW.window_name,"'),COALESCE(NEW.browser_url,"*)WHERE NEW.full_text IS NOT NULL AND NEW.full_text != "*;END;BEGINCREATE TRIGGER frames_ad AFTER DELETE ON framesDELETE FROM frames_fts WHERE id = OLD.id;END;CREATE INDEX idx_memories_frame_id ON memories(frame_id);CREATE INDEX idx_elements_source_role_textON elements(source, role, frame_id)WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
NULL
|
|
718
|
17
|
3
|
2026-04-11T12:09:34.648071+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909374648_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2Shell Edit ViewSessionScriptsProfilesWindo iTerm2Shell Edit ViewSessionScriptsProfilesWindowHelp-zshDOCKERO ₴1tokenize='unicode61'DEV (-zsh)• $2APP (-zsh)• *3-zsh• x4/* frames_fts(full_text,app_name, window_name,browser_url, id) */;CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, cO, c1, c2, с3, c4);CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;CREATE TRIGGER frames_ai AFTER INSERT ON framesWHEN NEW.full_text IS NOT NULL AND NEW.full_text != "'BEGININSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)VALUES (NEW.id,NEW.full_text,COALESCE(NEW.app_name,"'),COALESCE(NEW.window_name,COALESCECNEW.browser_url,-zsh• x5-zsh100% C47O ₴6Sat 11 Apr 15:09:34-zshT81X7);END;CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON framesBEGINDELETE FROM frames_fts WHERE id = OLD.id;INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)SELECTNEW.id,COALESCECNEW.full_text,"*),COALESCE(NEW.app_name,"*),COALESCE(NEW.window_name,"'),COALESCE(NEW.browser_url,"*)WHERE NEW.full_text IS NOT NULL AND NEW.full_text != "*;END;BEGINCREATE TRIGGER frames_ad AFTER DELETE ON framesDELETE FROM frames_fts WHERE id = OLD.id;END;CREATE INDEX idx_memories_frame_id ON memories(frame_id);CREATE INDEX idx_elements_source_role_textON elements(source, role, frame_id)WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
NULL
|
-7498872109541583616
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2Shell Edit ViewSessionScriptsProfilesWindo iTerm2Shell Edit ViewSessionScriptsProfilesWindowHelp-zshDOCKERO ₴1tokenize='unicode61'DEV (-zsh)• $2APP (-zsh)• *3-zsh• x4/* frames_fts(full_text,app_name, window_name,browser_url, id) */;CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, cO, c1, c2, с3, c4);CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;CREATE TRIGGER frames_ai AFTER INSERT ON framesWHEN NEW.full_text IS NOT NULL AND NEW.full_text != "'BEGININSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)VALUES (NEW.id,NEW.full_text,COALESCE(NEW.app_name,"'),COALESCE(NEW.window_name,COALESCECNEW.browser_url,-zsh• x5-zsh100% C47O ₴6Sat 11 Apr 15:09:34-zshT81X7);END;CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON framesBEGINDELETE FROM frames_fts WHERE id = OLD.id;INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)SELECTNEW.id,COALESCECNEW.full_text,"*),COALESCE(NEW.app_name,"*),COALESCE(NEW.window_name,"'),COALESCE(NEW.browser_url,"*)WHERE NEW.full_text IS NOT NULL AND NEW.full_text != "*;END;BEGINCREATE TRIGGER frames_ad AFTER DELETE ON framesDELETE FROM frames_fts WHERE id = OLD.id;END;CREATE INDEX idx_memories_frame_id ON memories(frame_id);CREATE INDEX idx_elements_source_role_textON elements(source, role, frame_id)WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
717
|
|
719
|
17
|
4
|
2026-04-11T12:09:36.183080+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909376183_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
screenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_sqlx_migrations meetings
audio_chunks memories
audio_tags memories_fts
audio_transcriptions memories_fts_config
audio_transcriptions_fts memories_fts_data
audio_transcriptions_fts_config memories_fts_docsize
audio_transcriptions_fts_data memories_fts_idx
audio_transcriptions_fts_docsize ocr_text
audio_transcriptions_fts_idx pipe_executions
elements pipe_scheduler_state
elements_fts speaker_embeddings
elements_fts_config speakers
elements_fts_data tags
elements_fts_docsize ui_events
elements_fts_idx ui_events_fts
frames ui_events_fts_config
frames_fts ui_events_fts_data
frames_fts_config ui_events_fts_docsize
frames_fts_content ui_events_fts_idx
frames_fts_data video_chunks
frames_fts_docsize vision_tags
frames_fts_idx
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema"
CREATE TABLE _sqlx_migrations (
version BIGINT PRIMARY KEY,
description TEXT NOT NULL,
installed_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
success BOOLEAN NOT NULL,
checksum BLOB NOT NULL,
execution_time BIGINT NOT NULL
);
CREATE TABLE video_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, device_name TEXT NOT NULL DEFAULT '', sync_id TEXT, machine_id TEXT, synced_at DATETIME, fps REAL NOT NULL DEFAULT 0.5, cloud_blob_id TEXT DEFAULT NULL);
CREATE TABLE sqlite_sequence(name,seq);
CREATE TABLE audio_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE TABLE IF NOT EXISTS "ocr_text" (
frame_id INTEGER NOT NULL,
text TEXT NOT NULL,
text_json TEXT,
app_name TEXT NOT NULL DEFAULT '',
ocr_engine TEXT NOT NULL DEFAULT 'unknown'
, window_name TEXT, focused BOOLEAN DEFAULT FALSE, text_length INTEGER, sync_id TEXT, synced_at DATETIME);
CREATE TABLE tags (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE vision_tags (
vision_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (vision_id, tag_id),
FOREIGN KEY (vision_id) REFERENCES frames(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE TABLE audio_tags (
audio_chunk_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (audio_chunk_id, tag_id),
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id);
CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id);
CREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);
CREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);
CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name);
CREATE TABLE speakers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
metadata JSON
, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);
CREATE TABLE speaker_embeddings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
embedding FLOAT[512] NOT NULL
check(
typeof(embedding) == 'blob'
and vec_length(embedding) == 512
),
speaker_id INTEGER REFERENCES speakers(id)
);
CREATE TABLE IF NOT EXISTS "audio_transcriptions" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
audio_chunk_id INTEGER NOT NULL,
offset_index INTEGER NOT NULL,
timestamp TIMESTAMP NOT NULL,
transcription TEXT NOT NULL,
device TEXT NOT NULL DEFAULT '',
is_input_device BOOLEAN NOT NULL DEFAULT TRUE,
speaker_id INTEGER,
transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME,
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)
);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);
CREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);
CREATE INDEX idx_ocr_text_length ON ocr_text (text_length);
CREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);
CREATE TABLE ui_events (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
session_id TEXT,
relative_ms INTEGER NOT NULL DEFAULT 0,
event_type TEXT NOT NULL, -- click, move, scroll, key, text, app_switch, window_focus, clipboard
-- Position
x INTEGER,
y INTEGER,
delta_x INTEGER,
delta_y INTEGER,
-- Mouse/key
button INTEGER,
click_count INTEGER,
key_code INTEGER,
modifiers INTEGER,
-- Text content
text_content TEXT,
text_length INTEGER,
-- App context
app_name TEXT,
app_pid INTEGER,
window_title TEXT,
browser_url TEXT,
-- Element context (from accessibility APIs)
element_role TEXT,
element_name TEXT,
element_value TEXT,
element_description TEXT,
element_automation_id TEXT,
element_bounds TEXT, -- JSON: {"x":0,"y":0,"width":100,"height":50}
-- Frame correlation
frame_id INTEGER,
-- Sync columns
sync_id TEXT,
machine_id TEXT,
synced_at DATETIME
);
CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp);
CREATE INDEX idx_ui_events_event_type ON ui_events(event_type);
CREATE INDEX idx_ui_events_app_name ON ui_events(app_name);
CREATE INDEX idx_ui_events_session_id ON ui_events(session_id);
CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id);
CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id);
CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at);
CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL;
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
/* ui_events_fts(text_content,app_name,window_title,element_name) */;
CREATE TABLE IF NOT EXISTS 'ui_events_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'ui_events_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'ui_events_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'ui_events_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER ui_events_ad AFTER DELETE ON ui_events BEGIN
INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)
VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);
END;
CREATE TRIGGER ui_events_au AFTER UPDATE ON ui_events BEGIN
INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)
VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);
INSERT INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)
VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);
END;
CREATE UNIQUE INDEX idx_audio_transcription_chunk_text
ON audio_transcriptions(audio_chunk_id, transcription);
CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name);
CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC);
CREATE TABLE pipe_executions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
pipe_name TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'queued',
trigger_type TEXT NOT NULL DEFAULT 'manual',
pid INTEGER,
model TEXT,
provider TEXT,
started_at TEXT,
finished_at TEXT,
stdout TEXT DEFAULT '',
stderr TEXT DEFAULT '',
exit_code INTEGER,
error_type TEXT,
error_message TEXT,
duration_ms INTEGER
, session_path TEXT);
CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status);
CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running';
CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC);
CREATE TABLE pipe_scheduler_state (
pipe_name TEXT PRIMARY KEY,
last_run_at TEXT,
last_success_at TEXT,
consecutive_failures INTEGER DEFAULT 0
);
CREATE TABLE IF NOT EXISTS "frames" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
video_chunk_id INTEGER DEFAULT NULL,
offset_index INTEGER NOT NULL DEFAULT 0,
timestamp TIMESTAMP NOT NULL,
name TEXT,
app_name TEXT DEFAULT NULL,
window_name TEXT DEFAULT NULL,
focused BOOLEAN DEFAULT NULL,
browser_url TEXT DEFAULT NULL,
device_name TEXT NOT NULL DEFAULT '',
sync_id TEXT,
machine_id TEXT,
synced_at DATETIME,
-- New event-driven capture columns
snapshot_path TEXT DEFAULT NULL,
accessibility_text TEXT DEFAULT NULL,
accessibility_tree_json TEXT DEFAULT NULL,
content_hash INTEGER DEFAULT NULL,
simhash INTEGER DEFAULT NULL,
capture_trigger TEXT DEFAULT NULL,
text_source TEXT DEFAULT NULL, cloud_blob_id TEXT DEFAULT NULL, full_text TEXT DEFAULT NULL, elements_ref_frame_id INTEGER DEFAULT NULL,
FOREIGN KEY (video_chunk_id) REFERENCES video_chunks(id)
);
CREATE INDEX idx_frames_timestamp ON frames(timestamp);
CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id);
CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name);
CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL;
CREATE TRIGGER ui_events_ai AFTER INSERT ON ui_events BEGIN
INSERT OR IGNORE INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)
VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);
END;
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);
CREATE TABLE elements (
id INTEGER PRIMARY KEY AUTOINCREMENT,
frame_id INTEGER NOT NULL,
source TEXT NOT NULL, -- 'ocr' | 'accessibility'
role TEXT NOT NULL, -- OCR: 'page','block','paragraph','line','word'
-- AX: 'AXButton','AXTextField','AXStaticText', etc.
text TEXT, -- element text content (NULL for container nodes)
parent_id INTEGER, -- self-referential FK for tree hierarchy (NULL = root)
depth INTEGER NOT NULL DEFAULT 0, -- tree depth (0 = root)
left_bound REAL, -- normalized 0-1 bounding box
top_bound REAL,
width_bound REAL,
height_bound REAL,
confidence REAL, -- OCR confidence (0-100), NULL for AX
sort_order INTEGER NOT NULL DEFAULT 0, properties TEXT, -- sibling order within parent
FOREIGN KEY (frame_id) REFERENCES frames(id),
FOREIGN KEY (parent_id) REFERENCES elements(id)
);
CREATE INDEX idx_elements_frame_id ON elements(frame_id);
CREATE INDEX idx_elements_parent_id ON elements(parent_id);
CREATE INDEX idx_elements_source ON elements(source);
CREATE INDEX idx_elements_frame_source ON elements(frame_id, source);
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
/* elements_fts(text,role,frame_id) */;
CREATE TABLE IF NOT EXISTS 'elements_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'elements_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'elements_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'elements_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER elements_ai AFTER INSERT ON elements
WHEN NEW.text IS NOT NULL AND NEW.text != ''
BEGIN
INSERT INTO elements_fts(rowid, text, role, frame_id)
VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);
END;
CREATE TRIGGER elements_ad AFTER DELETE ON elements
WHEN OLD.text IS NOT NULL AND OLD.text != ''
BEGIN
INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)
VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);
END;
CREATE TRIGGER elements_au AFTER UPDATE ON elements
WHEN OLD.text IS NOT NULL AND OLD.text != ''
BEGIN
INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)
VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);
INSERT INTO elements_fts(rowid, text, role, frame_id)
VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);
END;
CREATE VIRTUAL TABLE audio_transcriptions_fts USING fts5(
transcription,
device,
speaker_id,
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
)
/* audio_transcriptions_fts(transcription,device,speaker_id) */;
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions
WHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL;
CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL;
CREATE TABLE memories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
content TEXT NOT NULL,
source TEXT NOT NULL DEFAULT 'user',
source_context TEXT,
tags TEXT DEFAULT '[]',
importance REAL DEFAULT 0.5,
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
, frame_id INTEGER REFERENCES frames(id) ON DELETE SET NULL);
CREATE INDEX idx_memories_created_at ON memories(created_at);
CREATE INDEX idx_memories_importance ON memories(importance DESC);
CREATE INDEX idx_memories_source ON memories(source);
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
/* memories_fts(content,tags) */;
CREATE TABLE IF NOT EXISTS 'memories_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'memories_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'memories_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'memories_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER memories_ai AFTER INSERT ON memories
WHEN NEW.content IS NOT NULL AND NEW.content != ''
BEGIN
INSERT INTO memories_fts(rowid, content, tags)
VALUES (NEW.id, NEW.content, COALESCE(NEW.tags, ''));
END;
CREATE TRIGGER memories_ad AFTER DELETE ON memories
WHEN OLD.content IS NOT NULL AND OLD.content != ''
BEGIN
INSERT INTO memories_fts(memories_fts, rowid, content, tags)
VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));
END;
CREATE TRIGGER memories_au AFTER UPDATE ON memories
WHEN OLD.content IS NOT NULL AND OLD.content != ''
BEGIN
INSERT INTO memories_fts(memories_fts, rowid, content, tags)
VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));
INSERT INTO memories_fts(rowid, content, tags)
VALUES (NEW.id, COALESCE(NEW.content, ''), COALESCE(NEW.tags, ''));
END;
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
id UNINDEXED,
tokenize='unicode61'
)
/* frames_fts(full_text,app_name,window_name,browser_url,id) */;
CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);
CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER frames_ai AFTER INSERT ON frames
WHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''
BEGIN
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
VALUES (
NEW.id,
NEW.full_text,
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
);
END;
CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
SELECT
NEW.id,
COALESCE(NEW.full_text, ''),
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';
END;
CREATE TRIGGER frames_ad AFTER DELETE ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
END;
CREATE INDEX idx_memories_frame_id ON memories(frame_id);
CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL;
CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"\nscreenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\"\n_sqlx_migrations meetings \naudio_chunks memories \naudio_tags memories_fts \naudio_transcriptions memories_fts_config \naudio_transcriptions_fts memories_fts_data \naudio_transcriptions_fts_config memories_fts_docsize \naudio_transcriptions_fts_data memories_fts_idx \naudio_transcriptions_fts_docsize ocr_text \naudio_transcriptions_fts_idx pipe_executions \nelements pipe_scheduler_state \nelements_fts speaker_embeddings \nelements_fts_config speakers \nelements_fts_data tags \nelements_fts_docsize ui_events \nelements_fts_idx ui_events_fts \nframes ui_events_fts_config \nframes_fts ui_events_fts_data \nframes_fts_config ui_events_fts_docsize \nframes_fts_content ui_events_fts_idx \nframes_fts_data video_chunks \nframes_fts_docsize vision_tags \nframes_fts_idx \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".schema\"\nCREATE TABLE _sqlx_migrations (\n version BIGINT PRIMARY KEY,\n description TEXT NOT NULL,\n installed_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,\n success BOOLEAN NOT NULL,\n checksum BLOB NOT NULL,\n execution_time BIGINT NOT NULL\n);\nCREATE TABLE video_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, device_name TEXT NOT NULL DEFAULT '', sync_id TEXT, machine_id TEXT, synced_at DATETIME, fps REAL NOT NULL DEFAULT 0.5, cloud_blob_id TEXT DEFAULT NULL);\nCREATE TABLE sqlite_sequence(name,seq);\nCREATE TABLE audio_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nCREATE TABLE IF NOT EXISTS \"ocr_text\" (\n frame_id INTEGER NOT NULL,\n text TEXT NOT NULL,\n text_json TEXT,\n app_name TEXT NOT NULL DEFAULT '',\n ocr_engine TEXT NOT NULL DEFAULT 'unknown'\n, window_name TEXT, focused BOOLEAN DEFAULT FALSE, text_length INTEGER, sync_id TEXT, synced_at DATETIME);\nCREATE TABLE tags (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT NOT NULL UNIQUE,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP\n);\nCREATE TABLE vision_tags (\n vision_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (vision_id, tag_id),\n FOREIGN KEY (vision_id) REFERENCES frames(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE TABLE audio_tags (\n audio_chunk_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (audio_chunk_id, tag_id),\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id);\nCREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id);\nCREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);\nCREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);\nCREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id);\nCREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name);\nCREATE TABLE speakers (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT,\n metadata JSON\n, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);\nCREATE TABLE speaker_embeddings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n embedding FLOAT[512] NOT NULL\n check(\n typeof(embedding) == 'blob'\n and vec_length(embedding) == 512\n ),\n speaker_id INTEGER REFERENCES speakers(id)\n);\nCREATE TABLE IF NOT EXISTS \"audio_transcriptions\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n audio_chunk_id INTEGER NOT NULL,\n offset_index INTEGER NOT NULL,\n timestamp TIMESTAMP NOT NULL,\n transcription TEXT NOT NULL,\n device TEXT NOT NULL DEFAULT '',\n is_input_device BOOLEAN NOT NULL DEFAULT TRUE,\n speaker_id INTEGER,\n transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME,\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)\n);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);\nCREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);\nCREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);\nCREATE INDEX idx_ocr_text_length ON ocr_text (text_length);\nCREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);\nCREATE TABLE ui_events (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n session_id TEXT,\n relative_ms INTEGER NOT NULL DEFAULT 0,\n event_type TEXT NOT NULL, -- click, move, scroll, key, text, app_switch, window_focus, clipboard\n -- Position\n x INTEGER,\n y INTEGER,\n delta_x INTEGER,\n delta_y INTEGER,\n -- Mouse/key\n button INTEGER,\n click_count INTEGER,\n key_code INTEGER,\n modifiers INTEGER,\n -- Text content\n text_content TEXT,\n text_length INTEGER,\n -- App context\n app_name TEXT,\n app_pid INTEGER,\n window_title TEXT,\n browser_url TEXT,\n -- Element context (from accessibility APIs)\n element_role TEXT,\n element_name TEXT,\n element_value TEXT,\n element_description TEXT,\n element_automation_id TEXT,\n element_bounds TEXT, -- JSON: {\"x\":0,\"y\":0,\"width\":100,\"height\":50}\n -- Frame correlation\n frame_id INTEGER,\n -- Sync columns\n sync_id TEXT,\n machine_id TEXT,\n synced_at DATETIME\n);\nCREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp);\nCREATE INDEX idx_ui_events_event_type ON ui_events(event_type);\nCREATE INDEX idx_ui_events_app_name ON ui_events(app_name);\nCREATE INDEX idx_ui_events_session_id ON ui_events(session_id);\nCREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id);\nCREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id);\nCREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at);\nCREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL;\nCREATE VIRTUAL TABLE ui_events_fts USING fts5(\n text_content,\n app_name,\n window_title,\n element_name,\n content='ui_events',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* ui_events_fts(text_content,app_name,window_title,element_name) */;\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER ui_events_ad AFTER DELETE ON ui_events BEGIN\n INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)\n VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);\nEND;\nCREATE TRIGGER ui_events_au AFTER UPDATE ON ui_events BEGIN\n INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)\n VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);\n INSERT INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)\n VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);\nEND;\nCREATE UNIQUE INDEX idx_audio_transcription_chunk_text\nON audio_transcriptions(audio_chunk_id, transcription);\nCREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name);\nCREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC);\nCREATE TABLE pipe_executions (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n pipe_name TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'queued',\n trigger_type TEXT NOT NULL DEFAULT 'manual',\n pid INTEGER,\n model TEXT,\n provider TEXT,\n started_at TEXT,\n finished_at TEXT,\n stdout TEXT DEFAULT '',\n stderr TEXT DEFAULT '',\n exit_code INTEGER,\n error_type TEXT,\n error_message TEXT,\n duration_ms INTEGER\n, session_path TEXT);\nCREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status);\nCREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running';\nCREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC);\nCREATE TABLE pipe_scheduler_state (\n pipe_name TEXT PRIMARY KEY,\n last_run_at TEXT,\n last_success_at TEXT,\n consecutive_failures INTEGER DEFAULT 0\n);\nCREATE TABLE IF NOT EXISTS \"frames\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n video_chunk_id INTEGER DEFAULT NULL,\n offset_index INTEGER NOT NULL DEFAULT 0,\n timestamp TIMESTAMP NOT NULL,\n name TEXT,\n app_name TEXT DEFAULT NULL,\n window_name TEXT DEFAULT NULL,\n focused BOOLEAN DEFAULT NULL,\n browser_url TEXT DEFAULT NULL,\n device_name TEXT NOT NULL DEFAULT '',\n sync_id TEXT,\n machine_id TEXT,\n synced_at DATETIME,\n -- New event-driven capture columns\n snapshot_path TEXT DEFAULT NULL,\n accessibility_text TEXT DEFAULT NULL,\n accessibility_tree_json TEXT DEFAULT NULL,\n content_hash INTEGER DEFAULT NULL,\n simhash INTEGER DEFAULT NULL,\n capture_trigger TEXT DEFAULT NULL,\n text_source TEXT DEFAULT NULL, cloud_blob_id TEXT DEFAULT NULL, full_text TEXT DEFAULT NULL, elements_ref_frame_id INTEGER DEFAULT NULL,\n FOREIGN KEY (video_chunk_id) REFERENCES video_chunks(id)\n);\nCREATE INDEX idx_frames_timestamp ON frames(timestamp);\nCREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id);\nCREATE INDEX idx_frames_timestamp_device\n ON frames(timestamp, device_name);\nCREATE INDEX idx_frames_snapshot_path\n ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL;\nCREATE TRIGGER ui_events_ai AFTER INSERT ON ui_events BEGIN\n INSERT OR IGNORE INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)\n VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);\nEND;\nCREATE TABLE meetings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n meeting_start TEXT NOT NULL,\n meeting_end TEXT,\n meeting_app TEXT NOT NULL,\n title TEXT,\n attendees TEXT,\n detection_source TEXT NOT NULL DEFAULT 'app',\n created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n, note TEXT);\nCREATE INDEX idx_meetings_start ON meetings(meeting_start);\nCREATE INDEX idx_meetings_end ON meetings(meeting_end);\nCREATE TABLE elements (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n frame_id INTEGER NOT NULL,\n source TEXT NOT NULL, -- 'ocr' | 'accessibility'\n role TEXT NOT NULL, -- OCR: 'page','block','paragraph','line','word'\n -- AX: 'AXButton','AXTextField','AXStaticText', etc.\n text TEXT, -- element text content (NULL for container nodes)\n parent_id INTEGER, -- self-referential FK for tree hierarchy (NULL = root)\n depth INTEGER NOT NULL DEFAULT 0, -- tree depth (0 = root)\n left_bound REAL, -- normalized 0-1 bounding box\n top_bound REAL,\n width_bound REAL,\n height_bound REAL,\n confidence REAL, -- OCR confidence (0-100), NULL for AX\n sort_order INTEGER NOT NULL DEFAULT 0, properties TEXT, -- sibling order within parent\n FOREIGN KEY (frame_id) REFERENCES frames(id),\n FOREIGN KEY (parent_id) REFERENCES elements(id)\n);\nCREATE INDEX idx_elements_frame_id ON elements(frame_id);\nCREATE INDEX idx_elements_parent_id ON elements(parent_id);\nCREATE INDEX idx_elements_source ON elements(source);\nCREATE INDEX idx_elements_frame_source ON elements(frame_id, source);\nCREATE VIRTUAL TABLE elements_fts USING fts5(\n text,\n role,\n frame_id UNINDEXED,\n content='elements',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* elements_fts(text,role,frame_id) */;\nCREATE TABLE IF NOT EXISTS 'elements_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'elements_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'elements_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'elements_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER elements_ai AFTER INSERT ON elements\nWHEN NEW.text IS NOT NULL AND NEW.text != ''\nBEGIN\n INSERT INTO elements_fts(rowid, text, role, frame_id)\n VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);\nEND;\nCREATE TRIGGER elements_ad AFTER DELETE ON elements\nWHEN OLD.text IS NOT NULL AND OLD.text != ''\nBEGIN\n INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)\n VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);\nEND;\nCREATE TRIGGER elements_au AFTER UPDATE ON elements\nWHEN OLD.text IS NOT NULL AND OLD.text != ''\nBEGIN\n INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)\n VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);\n INSERT INTO elements_fts(rowid, text, role, frame_id)\n VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);\nEND;\nCREATE VIRTUAL TABLE audio_transcriptions_fts USING fts5(\n transcription,\n device,\n speaker_id,\n content='audio_transcriptions',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* audio_transcriptions_fts(transcription,device,speaker_id) */;\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions\nWHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE INDEX idx_video_chunks_cloud_blob_id\n ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL;\nCREATE INDEX idx_frames_cloud_blob_id\n ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL;\nCREATE TABLE memories (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n content TEXT NOT NULL,\n source TEXT NOT NULL DEFAULT 'user',\n source_context TEXT,\n tags TEXT DEFAULT '[]',\n importance REAL DEFAULT 0.5,\n created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n, frame_id INTEGER REFERENCES frames(id) ON DELETE SET NULL);\nCREATE INDEX idx_memories_created_at ON memories(created_at);\nCREATE INDEX idx_memories_importance ON memories(importance DESC);\nCREATE INDEX idx_memories_source ON memories(source);\nCREATE VIRTUAL TABLE memories_fts USING fts5(\n content,\n tags,\n content='memories',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* memories_fts(content,tags) */;\nCREATE TABLE IF NOT EXISTS 'memories_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'memories_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'memories_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'memories_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER memories_ai AFTER INSERT ON memories\nWHEN NEW.content IS NOT NULL AND NEW.content != ''\nBEGIN\n INSERT INTO memories_fts(rowid, content, tags)\n VALUES (NEW.id, NEW.content, COALESCE(NEW.tags, ''));\nEND;\nCREATE TRIGGER memories_ad AFTER DELETE ON memories\nWHEN OLD.content IS NOT NULL AND OLD.content != ''\nBEGIN\n INSERT INTO memories_fts(memories_fts, rowid, content, tags)\n VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));\nEND;\nCREATE TRIGGER memories_au AFTER UPDATE ON memories\nWHEN OLD.content IS NOT NULL AND OLD.content != ''\nBEGIN\n INSERT INTO memories_fts(memories_fts, rowid, content, tags)\n VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));\n INSERT INTO memories_fts(rowid, content, tags)\n VALUES (NEW.id, COALESCE(NEW.content, ''), COALESCE(NEW.tags, ''));\nEND;\nCREATE VIRTUAL TABLE frames_fts USING fts5(\n full_text,\n app_name,\n window_name,\n browser_url,\n id UNINDEXED,\n tokenize='unicode61'\n)\n/* frames_fts(full_text,app_name,window_name,browser_url,id) */;\nCREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);\nCREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER frames_ai AFTER INSERT ON frames\nWHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''\nBEGIN\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n VALUES (\n NEW.id,\n NEW.full_text,\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n );\nEND;\nCREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n SELECT\n NEW.id,\n COALESCE(NEW.full_text, ''),\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';\nEND;\nCREATE TRIGGER frames_ad AFTER DELETE ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\nEND;\nCREATE INDEX idx_memories_frame_id ON memories(frame_id);\nCREATE INDEX idx_elements_source_role_text\n ON elements(source, role, frame_id)\n WHERE text IS NOT NULL;\nCREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","depth":4,"value":"drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nzsh: command not found: #\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -o -name \"*.sqlite\" 2>/dev/null \n/Users/lukas/.screenpipe/db.sqlite\n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/\nls -lah ~/.screenpipe/data/ 2>/dev/null\nzsh: command not found: s\ntotal 0\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .\ndrwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..\ndrwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data\ndrwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions\n-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\\ Support/ -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name \"*.db\" -path \"*screenpipe*\" 2>/dev/null \n/Users/lukas/.screenpipe/data/screenpipe.db\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E \"\\.db|\\.sqlite\"\nscreenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm\nscreenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite\nscreenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nscreenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".tables\"\n_sqlx_migrations meetings \naudio_chunks memories \naudio_tags memories_fts \naudio_transcriptions memories_fts_config \naudio_transcriptions_fts memories_fts_data \naudio_transcriptions_fts_config memories_fts_docsize \naudio_transcriptions_fts_data memories_fts_idx \naudio_transcriptions_fts_docsize ocr_text \naudio_transcriptions_fts_idx pipe_executions \nelements pipe_scheduler_state \nelements_fts speaker_embeddings \nelements_fts_config speakers \nelements_fts_data tags \nelements_fts_docsize ui_events \nelements_fts_idx ui_events_fts \nframes ui_events_fts_config \nframes_fts ui_events_fts_data \nframes_fts_config ui_events_fts_docsize \nframes_fts_content ui_events_fts_idx \nframes_fts_data video_chunks \nframes_fts_docsize vision_tags \nframes_fts_idx \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \".schema\"\nCREATE TABLE _sqlx_migrations (\n version BIGINT PRIMARY KEY,\n description TEXT NOT NULL,\n installed_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,\n success BOOLEAN NOT NULL,\n checksum BLOB NOT NULL,\n execution_time BIGINT NOT NULL\n);\nCREATE TABLE video_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, device_name TEXT NOT NULL DEFAULT '', sync_id TEXT, machine_id TEXT, synced_at DATETIME, fps REAL NOT NULL DEFAULT 0.5, cloud_blob_id TEXT DEFAULT NULL);\nCREATE TABLE sqlite_sequence(name,seq);\nCREATE TABLE audio_chunks (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n file_path TEXT NOT NULL\n, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME);\nCREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);\nCREATE TABLE IF NOT EXISTS \"ocr_text\" (\n frame_id INTEGER NOT NULL,\n text TEXT NOT NULL,\n text_json TEXT,\n app_name TEXT NOT NULL DEFAULT '',\n ocr_engine TEXT NOT NULL DEFAULT 'unknown'\n, window_name TEXT, focused BOOLEAN DEFAULT FALSE, text_length INTEGER, sync_id TEXT, synced_at DATETIME);\nCREATE TABLE tags (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT NOT NULL UNIQUE,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP\n);\nCREATE TABLE vision_tags (\n vision_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (vision_id, tag_id),\n FOREIGN KEY (vision_id) REFERENCES frames(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE TABLE audio_tags (\n audio_chunk_id INTEGER NOT NULL,\n tag_id INTEGER NOT NULL,\n PRIMARY KEY (audio_chunk_id, tag_id),\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,\n FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE\n);\nCREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id);\nCREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id);\nCREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);\nCREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);\nCREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id);\nCREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name);\nCREATE TABLE speakers (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT,\n metadata JSON\n, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);\nCREATE TABLE speaker_embeddings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n embedding FLOAT[512] NOT NULL\n check(\n typeof(embedding) == 'blob'\n and vec_length(embedding) == 512\n ),\n speaker_id INTEGER REFERENCES speakers(id)\n);\nCREATE TABLE IF NOT EXISTS \"audio_transcriptions\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n audio_chunk_id INTEGER NOT NULL,\n offset_index INTEGER NOT NULL,\n timestamp TIMESTAMP NOT NULL,\n transcription TEXT NOT NULL,\n device TEXT NOT NULL DEFAULT '',\n is_input_device BOOLEAN NOT NULL DEFAULT TRUE,\n speaker_id INTEGER,\n transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME,\n FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)\n);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);\nCREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);\nCREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);\nCREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);\nCREATE INDEX idx_ocr_text_length ON ocr_text (text_length);\nCREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);\nCREATE TABLE ui_events (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n session_id TEXT,\n relative_ms INTEGER NOT NULL DEFAULT 0,\n event_type TEXT NOT NULL, -- click, move, scroll, key, text, app_switch, window_focus, clipboard\n -- Position\n x INTEGER,\n y INTEGER,\n delta_x INTEGER,\n delta_y INTEGER,\n -- Mouse/key\n button INTEGER,\n click_count INTEGER,\n key_code INTEGER,\n modifiers INTEGER,\n -- Text content\n text_content TEXT,\n text_length INTEGER,\n -- App context\n app_name TEXT,\n app_pid INTEGER,\n window_title TEXT,\n browser_url TEXT,\n -- Element context (from accessibility APIs)\n element_role TEXT,\n element_name TEXT,\n element_value TEXT,\n element_description TEXT,\n element_automation_id TEXT,\n element_bounds TEXT, -- JSON: {\"x\":0,\"y\":0,\"width\":100,\"height\":50}\n -- Frame correlation\n frame_id INTEGER,\n -- Sync columns\n sync_id TEXT,\n machine_id TEXT,\n synced_at DATETIME\n);\nCREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp);\nCREATE INDEX idx_ui_events_event_type ON ui_events(event_type);\nCREATE INDEX idx_ui_events_app_name ON ui_events(app_name);\nCREATE INDEX idx_ui_events_session_id ON ui_events(session_id);\nCREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id);\nCREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id);\nCREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at);\nCREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL;\nCREATE VIRTUAL TABLE ui_events_fts USING fts5(\n text_content,\n app_name,\n window_title,\n element_name,\n content='ui_events',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* ui_events_fts(text_content,app_name,window_title,element_name) */;\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'ui_events_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER ui_events_ad AFTER DELETE ON ui_events BEGIN\n INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)\n VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);\nEND;\nCREATE TRIGGER ui_events_au AFTER UPDATE ON ui_events BEGIN\n INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)\n VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);\n INSERT INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)\n VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);\nEND;\nCREATE UNIQUE INDEX idx_audio_transcription_chunk_text\nON audio_transcriptions(audio_chunk_id, transcription);\nCREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name);\nCREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC);\nCREATE TABLE pipe_executions (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n pipe_name TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'queued',\n trigger_type TEXT NOT NULL DEFAULT 'manual',\n pid INTEGER,\n model TEXT,\n provider TEXT,\n started_at TEXT,\n finished_at TEXT,\n stdout TEXT DEFAULT '',\n stderr TEXT DEFAULT '',\n exit_code INTEGER,\n error_type TEXT,\n error_message TEXT,\n duration_ms INTEGER\n, session_path TEXT);\nCREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status);\nCREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running';\nCREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC);\nCREATE TABLE pipe_scheduler_state (\n pipe_name TEXT PRIMARY KEY,\n last_run_at TEXT,\n last_success_at TEXT,\n consecutive_failures INTEGER DEFAULT 0\n);\nCREATE TABLE IF NOT EXISTS \"frames\" (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n video_chunk_id INTEGER DEFAULT NULL,\n offset_index INTEGER NOT NULL DEFAULT 0,\n timestamp TIMESTAMP NOT NULL,\n name TEXT,\n app_name TEXT DEFAULT NULL,\n window_name TEXT DEFAULT NULL,\n focused BOOLEAN DEFAULT NULL,\n browser_url TEXT DEFAULT NULL,\n device_name TEXT NOT NULL DEFAULT '',\n sync_id TEXT,\n machine_id TEXT,\n synced_at DATETIME,\n -- New event-driven capture columns\n snapshot_path TEXT DEFAULT NULL,\n accessibility_text TEXT DEFAULT NULL,\n accessibility_tree_json TEXT DEFAULT NULL,\n content_hash INTEGER DEFAULT NULL,\n simhash INTEGER DEFAULT NULL,\n capture_trigger TEXT DEFAULT NULL,\n text_source TEXT DEFAULT NULL, cloud_blob_id TEXT DEFAULT NULL, full_text TEXT DEFAULT NULL, elements_ref_frame_id INTEGER DEFAULT NULL,\n FOREIGN KEY (video_chunk_id) REFERENCES video_chunks(id)\n);\nCREATE INDEX idx_frames_timestamp ON frames(timestamp);\nCREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id);\nCREATE INDEX idx_frames_timestamp_device\n ON frames(timestamp, device_name);\nCREATE INDEX idx_frames_snapshot_path\n ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL;\nCREATE TRIGGER ui_events_ai AFTER INSERT ON ui_events BEGIN\n INSERT OR IGNORE INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)\n VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);\nEND;\nCREATE TABLE meetings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n meeting_start TEXT NOT NULL,\n meeting_end TEXT,\n meeting_app TEXT NOT NULL,\n title TEXT,\n attendees TEXT,\n detection_source TEXT NOT NULL DEFAULT 'app',\n created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n, note TEXT);\nCREATE INDEX idx_meetings_start ON meetings(meeting_start);\nCREATE INDEX idx_meetings_end ON meetings(meeting_end);\nCREATE TABLE elements (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n frame_id INTEGER NOT NULL,\n source TEXT NOT NULL, -- 'ocr' | 'accessibility'\n role TEXT NOT NULL, -- OCR: 'page','block','paragraph','line','word'\n -- AX: 'AXButton','AXTextField','AXStaticText', etc.\n text TEXT, -- element text content (NULL for container nodes)\n parent_id INTEGER, -- self-referential FK for tree hierarchy (NULL = root)\n depth INTEGER NOT NULL DEFAULT 0, -- tree depth (0 = root)\n left_bound REAL, -- normalized 0-1 bounding box\n top_bound REAL,\n width_bound REAL,\n height_bound REAL,\n confidence REAL, -- OCR confidence (0-100), NULL for AX\n sort_order INTEGER NOT NULL DEFAULT 0, properties TEXT, -- sibling order within parent\n FOREIGN KEY (frame_id) REFERENCES frames(id),\n FOREIGN KEY (parent_id) REFERENCES elements(id)\n);\nCREATE INDEX idx_elements_frame_id ON elements(frame_id);\nCREATE INDEX idx_elements_parent_id ON elements(parent_id);\nCREATE INDEX idx_elements_source ON elements(source);\nCREATE INDEX idx_elements_frame_source ON elements(frame_id, source);\nCREATE VIRTUAL TABLE elements_fts USING fts5(\n text,\n role,\n frame_id UNINDEXED,\n content='elements',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* elements_fts(text,role,frame_id) */;\nCREATE TABLE IF NOT EXISTS 'elements_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'elements_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'elements_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'elements_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER elements_ai AFTER INSERT ON elements\nWHEN NEW.text IS NOT NULL AND NEW.text != ''\nBEGIN\n INSERT INTO elements_fts(rowid, text, role, frame_id)\n VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);\nEND;\nCREATE TRIGGER elements_ad AFTER DELETE ON elements\nWHEN OLD.text IS NOT NULL AND OLD.text != ''\nBEGIN\n INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)\n VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);\nEND;\nCREATE TRIGGER elements_au AFTER UPDATE ON elements\nWHEN OLD.text IS NOT NULL AND OLD.text != ''\nBEGIN\n INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)\n VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);\n INSERT INTO elements_fts(rowid, text, role, frame_id)\n VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);\nEND;\nCREATE VIRTUAL TABLE audio_transcriptions_fts USING fts5(\n transcription,\n device,\n speaker_id,\n content='audio_transcriptions',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* audio_transcriptions_fts(transcription,device,speaker_id) */;\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions\nWHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\nEND;\nCREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions\nWHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''\nBEGIN\n INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)\n VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);\n INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)\n VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);\nEND;\nCREATE INDEX idx_video_chunks_cloud_blob_id\n ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL;\nCREATE INDEX idx_frames_cloud_blob_id\n ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL;\nCREATE TABLE memories (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n content TEXT NOT NULL,\n source TEXT NOT NULL DEFAULT 'user',\n source_context TEXT,\n tags TEXT DEFAULT '[]',\n importance REAL DEFAULT 0.5,\n created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),\n updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\n, frame_id INTEGER REFERENCES frames(id) ON DELETE SET NULL);\nCREATE INDEX idx_memories_created_at ON memories(created_at);\nCREATE INDEX idx_memories_importance ON memories(importance DESC);\nCREATE INDEX idx_memories_source ON memories(source);\nCREATE VIRTUAL TABLE memories_fts USING fts5(\n content,\n tags,\n content='memories',\n content_rowid='id',\n tokenize='unicode61'\n)\n/* memories_fts(content,tags) */;\nCREATE TABLE IF NOT EXISTS 'memories_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'memories_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'memories_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'memories_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER memories_ai AFTER INSERT ON memories\nWHEN NEW.content IS NOT NULL AND NEW.content != ''\nBEGIN\n INSERT INTO memories_fts(rowid, content, tags)\n VALUES (NEW.id, NEW.content, COALESCE(NEW.tags, ''));\nEND;\nCREATE TRIGGER memories_ad AFTER DELETE ON memories\nWHEN OLD.content IS NOT NULL AND OLD.content != ''\nBEGIN\n INSERT INTO memories_fts(memories_fts, rowid, content, tags)\n VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));\nEND;\nCREATE TRIGGER memories_au AFTER UPDATE ON memories\nWHEN OLD.content IS NOT NULL AND OLD.content != ''\nBEGIN\n INSERT INTO memories_fts(memories_fts, rowid, content, tags)\n VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));\n INSERT INTO memories_fts(rowid, content, tags)\n VALUES (NEW.id, COALESCE(NEW.content, ''), COALESCE(NEW.tags, ''));\nEND;\nCREATE VIRTUAL TABLE frames_fts USING fts5(\n full_text,\n app_name,\n window_name,\n browser_url,\n id UNINDEXED,\n tokenize='unicode61'\n)\n/* frames_fts(full_text,app_name,window_name,browser_url,id) */;\nCREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);\nCREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER frames_ai AFTER INSERT ON frames\nWHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''\nBEGIN\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n VALUES (\n NEW.id,\n NEW.full_text,\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n );\nEND;\nCREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n SELECT\n NEW.id,\n COALESCE(NEW.full_text, ''),\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';\nEND;\nCREATE TRIGGER frames_ad AFTER DELETE ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\nEND;\nCREATE INDEX idx_memories_frame_id ON memories(frame_id);\nCREATE INDEX idx_elements_source_role_text\n ON elements(source, role, frame_id)\n WHERE text IS NOT NULL;\nCREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
5853192385605379516
|
3173372984674339333
|
click
|
accessibility
|
NULL
|
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
zsh: command not found: #
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -o -name "*.sqlite" 2>/dev/null
/Users/lukas/.screenpipe/db.sqlite
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ s -lah ~/.screenpipe/
ls -lah ~/.screenpipe/data/ 2>/dev/null
zsh: command not found: s
total 0
drwxr-xr-x 5 lukas staff 160B 11 Apr 15:03 .
drwxr-xr-x 10 lukas staff 320B 11 Apr 14:52 ..
drwxr-xr-x 5 lukas staff 160B 11 Apr 14:52 data
drwxr-xr-x 2 lukas staff 64B 9 Apr 20:05 pending-transcriptions
-rw-r--r-- 1 lukas staff 0B 11 Apr 15:03 screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/Library/Application\ Support/ -name "*.db" -path "*screenpipe*" 2>/dev/null
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ find ~/.screenpipe -name "*.db" -path "*screenpipe*" 2>/dev/null
/Users/lukas/.screenpipe/data/screenpipe.db
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ lsof -p $(pgrep screenpipe) | grep -E "\.db|\.sqlite"
screenpip 20525 lukas txt REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas txt REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 17u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 22u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 23u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 24u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 25u REG 1,15 32768 220914771 /Users/lukas/.screenpipe/db.sqlite-shm
screenpip 20525 lukas 26u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 27u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 28u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 29u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 31u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 33u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 55u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 56u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 57u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 58u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 59u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 60u REG 1,15 70270976 220904259 /Users/lukas/.screenpipe/db.sqlite
screenpip 20525 lukas 61u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
screenpip 20525 lukas 62u REG 1,15 16533592 220914770 /Users/lukas/.screenpipe/db.sqlite-wal
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".tables"
_sqlx_migrations meetings
audio_chunks memories
audio_tags memories_fts
audio_transcriptions memories_fts_config
audio_transcriptions_fts memories_fts_data
audio_transcriptions_fts_config memories_fts_docsize
audio_transcriptions_fts_data memories_fts_idx
audio_transcriptions_fts_docsize ocr_text
audio_transcriptions_fts_idx pipe_executions
elements pipe_scheduler_state
elements_fts speaker_embeddings
elements_fts_config speakers
elements_fts_data tags
elements_fts_docsize ui_events
elements_fts_idx ui_events_fts
frames ui_events_fts_config
frames_fts ui_events_fts_data
frames_fts_config ui_events_fts_docsize
frames_fts_content ui_events_fts_idx
frames_fts_data video_chunks
frames_fts_docsize vision_tags
frames_fts_idx
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite ".schema"
CREATE TABLE _sqlx_migrations (
version BIGINT PRIMARY KEY,
description TEXT NOT NULL,
installed_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
success BOOLEAN NOT NULL,
checksum BLOB NOT NULL,
execution_time BIGINT NOT NULL
);
CREATE TABLE video_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, device_name TEXT NOT NULL DEFAULT '', sync_id TEXT, machine_id TEXT, synced_at DATETIME, fps REAL NOT NULL DEFAULT 0.5, cloud_blob_id TEXT DEFAULT NULL);
CREATE TABLE sqlite_sequence(name,seq);
CREATE TABLE audio_chunks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL
, timestamp TIMESTAMP, sync_id TEXT, machine_id TEXT, synced_at DATETIME);
CREATE INDEX idx_audio_chunks_timestamp ON audio_chunks(timestamp);
CREATE TABLE IF NOT EXISTS "ocr_text" (
frame_id INTEGER NOT NULL,
text TEXT NOT NULL,
text_json TEXT,
app_name TEXT NOT NULL DEFAULT '',
ocr_engine TEXT NOT NULL DEFAULT 'unknown'
, window_name TEXT, focused BOOLEAN DEFAULT FALSE, text_length INTEGER, sync_id TEXT, synced_at DATETIME);
CREATE TABLE tags (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE vision_tags (
vision_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (vision_id, tag_id),
FOREIGN KEY (vision_id) REFERENCES frames(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE TABLE audio_tags (
audio_chunk_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
PRIMARY KEY (audio_chunk_id, tag_id),
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id) ON DELETE CASCADE,
FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE
);
CREATE INDEX idx_vision_tags_vision_id ON vision_tags(vision_id);
CREATE INDEX idx_vision_tags_tag_id ON vision_tags(tag_id);
CREATE INDEX idx_audio_tags_audio_chunk_id ON audio_tags(audio_chunk_id);
CREATE INDEX idx_audio_tags_tag_id ON audio_tags(tag_id);
CREATE INDEX idx_ocr_text_frame_id ON ocr_text(frame_id);
CREATE INDEX idx_ocr_text_frame_app_window ON ocr_text(frame_id, app_name, window_name);
CREATE TABLE speakers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
metadata JSON
, hallucination BOOLEAN DEFAULT FALSE, centroid FLOAT[512], embedding_count INTEGER DEFAULT 0);
CREATE TABLE speaker_embeddings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
embedding FLOAT[512] NOT NULL
check(
typeof(embedding) == 'blob'
and vec_length(embedding) == 512
),
speaker_id INTEGER REFERENCES speakers(id)
);
CREATE TABLE IF NOT EXISTS "audio_transcriptions" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
audio_chunk_id INTEGER NOT NULL,
offset_index INTEGER NOT NULL,
timestamp TIMESTAMP NOT NULL,
transcription TEXT NOT NULL,
device TEXT NOT NULL DEFAULT '',
is_input_device BOOLEAN NOT NULL DEFAULT TRUE,
speaker_id INTEGER,
transcription_engine TEXT NOT NULL DEFAULT 'Whisper', start_time REAL, end_time REAL, text_length INTEGER, sync_id TEXT, synced_at DATETIME,
FOREIGN KEY (audio_chunk_id) REFERENCES audio_chunks(id)
);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id_timestamp ON audio_transcriptions(audio_chunk_id, timestamp);
CREATE INDEX idx_audio_transcriptions_audio_chunk_id ON audio_transcriptions(audio_chunk_id);
CREATE INDEX idx_audio_transcriptions_timestamp ON audio_transcriptions(timestamp);
CREATE INDEX idx_audio_transcriptions_transcription ON audio_transcriptions(transcription);
CREATE INDEX idx_ocr_text_length ON ocr_text (text_length);
CREATE INDEX idx_audio_transcriptions_length ON audio_transcriptions (text_length);
CREATE TABLE ui_events (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
session_id TEXT,
relative_ms INTEGER NOT NULL DEFAULT 0,
event_type TEXT NOT NULL, -- click, move, scroll, key, text, app_switch, window_focus, clipboard
-- Position
x INTEGER,
y INTEGER,
delta_x INTEGER,
delta_y INTEGER,
-- Mouse/key
button INTEGER,
click_count INTEGER,
key_code INTEGER,
modifiers INTEGER,
-- Text content
text_content TEXT,
text_length INTEGER,
-- App context
app_name TEXT,
app_pid INTEGER,
window_title TEXT,
browser_url TEXT,
-- Element context (from accessibility APIs)
element_role TEXT,
element_name TEXT,
element_value TEXT,
element_description TEXT,
element_automation_id TEXT,
element_bounds TEXT, -- JSON: {"x":0,"y":0,"width":100,"height":50}
-- Frame correlation
frame_id INTEGER,
-- Sync columns
sync_id TEXT,
machine_id TEXT,
synced_at DATETIME
);
CREATE INDEX idx_ui_events_timestamp ON ui_events(timestamp);
CREATE INDEX idx_ui_events_event_type ON ui_events(event_type);
CREATE INDEX idx_ui_events_app_name ON ui_events(app_name);
CREATE INDEX idx_ui_events_session_id ON ui_events(session_id);
CREATE INDEX idx_ui_events_frame_id ON ui_events(frame_id);
CREATE INDEX idx_ui_events_sync_id ON ui_events(sync_id);
CREATE INDEX idx_ui_events_synced_at ON ui_events(synced_at);
CREATE INDEX idx_ui_events_unsynced ON ui_events(synced_at) WHERE synced_at IS NULL;
CREATE VIRTUAL TABLE ui_events_fts USING fts5(
text_content,
app_name,
window_title,
element_name,
content='ui_events',
content_rowid='id',
tokenize='unicode61'
)
/* ui_events_fts(text_content,app_name,window_title,element_name) */;
CREATE TABLE IF NOT EXISTS 'ui_events_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'ui_events_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'ui_events_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'ui_events_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER ui_events_ad AFTER DELETE ON ui_events BEGIN
INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)
VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);
END;
CREATE TRIGGER ui_events_au AFTER UPDATE ON ui_events BEGIN
INSERT INTO ui_events_fts(ui_events_fts, rowid, text_content, app_name, window_title, element_name)
VALUES('delete', OLD.id, OLD.text_content, OLD.app_name, OLD.window_title, OLD.element_name);
INSERT INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)
VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);
END;
CREATE UNIQUE INDEX idx_audio_transcription_chunk_text
ON audio_transcriptions(audio_chunk_id, transcription);
CREATE INDEX idx_video_chunks_device_name ON video_chunks(device_name);
CREATE INDEX idx_video_chunks_device_name_id ON video_chunks(device_name, id DESC);
CREATE TABLE pipe_executions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
pipe_name TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'queued',
trigger_type TEXT NOT NULL DEFAULT 'manual',
pid INTEGER,
model TEXT,
provider TEXT,
started_at TEXT,
finished_at TEXT,
stdout TEXT DEFAULT '',
stderr TEXT DEFAULT '',
exit_code INTEGER,
error_type TEXT,
error_message TEXT,
duration_ms INTEGER
, session_path TEXT);
CREATE INDEX idx_pipe_exec_name_status ON pipe_executions(pipe_name, status);
CREATE INDEX idx_pipe_exec_running ON pipe_executions(status) WHERE status = 'running';
CREATE INDEX idx_pipe_exec_name_time ON pipe_executions(pipe_name, id DESC);
CREATE TABLE pipe_scheduler_state (
pipe_name TEXT PRIMARY KEY,
last_run_at TEXT,
last_success_at TEXT,
consecutive_failures INTEGER DEFAULT 0
);
CREATE TABLE IF NOT EXISTS "frames" (
id INTEGER PRIMARY KEY AUTOINCREMENT,
video_chunk_id INTEGER DEFAULT NULL,
offset_index INTEGER NOT NULL DEFAULT 0,
timestamp TIMESTAMP NOT NULL,
name TEXT,
app_name TEXT DEFAULT NULL,
window_name TEXT DEFAULT NULL,
focused BOOLEAN DEFAULT NULL,
browser_url TEXT DEFAULT NULL,
device_name TEXT NOT NULL DEFAULT '',
sync_id TEXT,
machine_id TEXT,
synced_at DATETIME,
-- New event-driven capture columns
snapshot_path TEXT DEFAULT NULL,
accessibility_text TEXT DEFAULT NULL,
accessibility_tree_json TEXT DEFAULT NULL,
content_hash INTEGER DEFAULT NULL,
simhash INTEGER DEFAULT NULL,
capture_trigger TEXT DEFAULT NULL,
text_source TEXT DEFAULT NULL, cloud_blob_id TEXT DEFAULT NULL, full_text TEXT DEFAULT NULL, elements_ref_frame_id INTEGER DEFAULT NULL,
FOREIGN KEY (video_chunk_id) REFERENCES video_chunks(id)
);
CREATE INDEX idx_frames_timestamp ON frames(timestamp);
CREATE INDEX idx_frames_video_chunk_id ON frames(video_chunk_id);
CREATE INDEX idx_frames_timestamp_device
ON frames(timestamp, device_name);
CREATE INDEX idx_frames_snapshot_path
ON frames(snapshot_path) WHERE snapshot_path IS NOT NULL;
CREATE TRIGGER ui_events_ai AFTER INSERT ON ui_events BEGIN
INSERT OR IGNORE INTO ui_events_fts(rowid, text_content, app_name, window_title, element_name)
VALUES (NEW.id, NEW.text_content, NEW.app_name, NEW.window_title, NEW.element_name);
END;
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);
CREATE TABLE elements (
id INTEGER PRIMARY KEY AUTOINCREMENT,
frame_id INTEGER NOT NULL,
source TEXT NOT NULL, -- 'ocr' | 'accessibility'
role TEXT NOT NULL, -- OCR: 'page','block','paragraph','line','word'
-- AX: 'AXButton','AXTextField','AXStaticText', etc.
text TEXT, -- element text content (NULL for container nodes)
parent_id INTEGER, -- self-referential FK for tree hierarchy (NULL = root)
depth INTEGER NOT NULL DEFAULT 0, -- tree depth (0 = root)
left_bound REAL, -- normalized 0-1 bounding box
top_bound REAL,
width_bound REAL,
height_bound REAL,
confidence REAL, -- OCR confidence (0-100), NULL for AX
sort_order INTEGER NOT NULL DEFAULT 0, properties TEXT, -- sibling order within parent
FOREIGN KEY (frame_id) REFERENCES frames(id),
FOREIGN KEY (parent_id) REFERENCES elements(id)
);
CREATE INDEX idx_elements_frame_id ON elements(frame_id);
CREATE INDEX idx_elements_parent_id ON elements(parent_id);
CREATE INDEX idx_elements_source ON elements(source);
CREATE INDEX idx_elements_frame_source ON elements(frame_id, source);
CREATE VIRTUAL TABLE elements_fts USING fts5(
text,
role,
frame_id UNINDEXED,
content='elements',
content_rowid='id',
tokenize='unicode61'
)
/* elements_fts(text,role,frame_id) */;
CREATE TABLE IF NOT EXISTS 'elements_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'elements_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'elements_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'elements_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER elements_ai AFTER INSERT ON elements
WHEN NEW.text IS NOT NULL AND NEW.text != ''
BEGIN
INSERT INTO elements_fts(rowid, text, role, frame_id)
VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);
END;
CREATE TRIGGER elements_ad AFTER DELETE ON elements
WHEN OLD.text IS NOT NULL AND OLD.text != ''
BEGIN
INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)
VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);
END;
CREATE TRIGGER elements_au AFTER UPDATE ON elements
WHEN OLD.text IS NOT NULL AND OLD.text != ''
BEGIN
INSERT INTO elements_fts(elements_fts, rowid, text, role, frame_id)
VALUES ('delete', OLD.id, OLD.text, OLD.role, OLD.frame_id);
INSERT INTO elements_fts(rowid, text, role, frame_id)
VALUES (NEW.id, NEW.text, NEW.role, NEW.frame_id);
END;
CREATE VIRTUAL TABLE audio_transcriptions_fts USING fts5(
transcription,
device,
speaker_id,
content='audio_transcriptions',
content_rowid='id',
tokenize='unicode61'
)
/* audio_transcriptions_fts(transcription,device,speaker_id) */;
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'audio_transcriptions_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER audio_transcriptions_ai AFTER INSERT ON audio_transcriptions
WHEN NEW.transcription IS NOT NULL AND NEW.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, NEW.transcription, COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_delete AFTER DELETE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
END;
CREATE TRIGGER audio_transcriptions_update AFTER UPDATE ON audio_transcriptions
WHEN OLD.transcription IS NOT NULL AND OLD.transcription != ''
BEGIN
INSERT INTO audio_transcriptions_fts(audio_transcriptions_fts, rowid, transcription, device, speaker_id)
VALUES ('delete', OLD.id, OLD.transcription, COALESCE(OLD.device, ''), OLD.speaker_id);
INSERT INTO audio_transcriptions_fts(rowid, transcription, device, speaker_id)
VALUES (NEW.id, COALESCE(NEW.transcription, ''), COALESCE(NEW.device, ''), NEW.speaker_id);
END;
CREATE INDEX idx_video_chunks_cloud_blob_id
ON video_chunks(cloud_blob_id) WHERE cloud_blob_id IS NULL;
CREATE INDEX idx_frames_cloud_blob_id
ON frames(cloud_blob_id) WHERE cloud_blob_id IS NULL AND snapshot_path IS NOT NULL;
CREATE TABLE memories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
content TEXT NOT NULL,
source TEXT NOT NULL DEFAULT 'user',
source_context TEXT,
tags TEXT DEFAULT '[]',
importance REAL DEFAULT 0.5,
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
, frame_id INTEGER REFERENCES frames(id) ON DELETE SET NULL);
CREATE INDEX idx_memories_created_at ON memories(created_at);
CREATE INDEX idx_memories_importance ON memories(importance DESC);
CREATE INDEX idx_memories_source ON memories(source);
CREATE VIRTUAL TABLE memories_fts USING fts5(
content,
tags,
content='memories',
content_rowid='id',
tokenize='unicode61'
)
/* memories_fts(content,tags) */;
CREATE TABLE IF NOT EXISTS 'memories_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'memories_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'memories_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'memories_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER memories_ai AFTER INSERT ON memories
WHEN NEW.content IS NOT NULL AND NEW.content != ''
BEGIN
INSERT INTO memories_fts(rowid, content, tags)
VALUES (NEW.id, NEW.content, COALESCE(NEW.tags, ''));
END;
CREATE TRIGGER memories_ad AFTER DELETE ON memories
WHEN OLD.content IS NOT NULL AND OLD.content != ''
BEGIN
INSERT INTO memories_fts(memories_fts, rowid, content, tags)
VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));
END;
CREATE TRIGGER memories_au AFTER UPDATE ON memories
WHEN OLD.content IS NOT NULL AND OLD.content != ''
BEGIN
INSERT INTO memories_fts(memories_fts, rowid, content, tags)
VALUES ('delete', OLD.id, OLD.content, COALESCE(OLD.tags, ''));
INSERT INTO memories_fts(rowid, content, tags)
VALUES (NEW.id, COALESCE(NEW.content, ''), COALESCE(NEW.tags, ''));
END;
CREATE VIRTUAL TABLE frames_fts USING fts5(
full_text,
app_name,
window_name,
browser_url,
id UNINDEXED,
tokenize='unicode61'
)
/* frames_fts(full_text,app_name,window_name,browser_url,id) */;
CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);
CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER frames_ai AFTER INSERT ON frames
WHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''
BEGIN
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
VALUES (
NEW.id,
NEW.full_text,
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
);
END;
CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
SELECT
NEW.id,
COALESCE(NEW.full_text, ''),
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';
END;
CREATE TRIGGER frames_ad AFTER DELETE ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
END;
CREATE INDEX idx_memories_frame_id ON memories(frame_id);
CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL;
CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
720
|
17
|
5
|
2026-04-11T12:09:39.363085+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909379363_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
)
/* frames_fts(full_text,app_name,window_name,bro )
/* frames_fts(full_text,app_name,window_name,browser_url,id) */;
CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);
CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER frames_ai AFTER INSERT ON frames
WHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''
BEGIN
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
VALUES (
NEW.id,
NEW.full_text,
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
);
END;
CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
SELECT
NEW.id,
COALESCE(NEW.full_text, ''),
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';
END;
CREATE TRIGGER frames_ad AFTER DELETE ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
END;
CREATE INDEX idx_memories_frame_id ON memories(frame_id);
CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL;
CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*) as frames FROM frames GROUP BY date(timestamp) ORDER BY date(timestamp);"
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":")\n/* frames_fts(full_text,app_name,window_name,browser_url,id) */;\nCREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);\nCREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER frames_ai AFTER INSERT ON frames\nWHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''\nBEGIN\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n VALUES (\n NEW.id,\n NEW.full_text,\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n );\nEND;\nCREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n SELECT\n NEW.id,\n COALESCE(NEW.full_text, ''),\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';\nEND;\nCREATE TRIGGER frames_ad AFTER DELETE ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\nEND;\nCREATE INDEX idx_memories_frame_id ON memories(frame_id);\nCREATE INDEX idx_elements_source_role_text\n ON elements(source, role, frame_id)\n WHERE text IS NOT NULL;\nCREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT date(timestamp), COUNT(*) as frames FROM frames GROUP BY date(timestamp) ORDER BY date(timestamp);\"","depth":4,"value":")\n/* frames_fts(full_text,app_name,window_name,browser_url,id) */;\nCREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);\nCREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER frames_ai AFTER INSERT ON frames\nWHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''\nBEGIN\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n VALUES (\n NEW.id,\n NEW.full_text,\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n );\nEND;\nCREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n SELECT\n NEW.id,\n COALESCE(NEW.full_text, ''),\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';\nEND;\nCREATE TRIGGER frames_ad AFTER DELETE ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\nEND;\nCREATE INDEX idx_memories_frame_id ON memories(frame_id);\nCREATE INDEX idx_elements_source_role_text\n ON elements(source, role, frame_id)\n WHERE text IS NOT NULL;\nCREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT date(timestamp), COUNT(*) as frames FROM frames GROUP BY date(timestamp) ORDER BY date(timestamp);\"","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-4034464612027230115
|
7936206669882842100
|
clipboard
|
accessibility
|
NULL
|
)
/* frames_fts(full_text,app_name,window_name,bro )
/* frames_fts(full_text,app_name,window_name,browser_url,id) */;
CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);
CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER frames_ai AFTER INSERT ON frames
WHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''
BEGIN
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
VALUES (
NEW.id,
NEW.full_text,
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
);
END;
CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
SELECT
NEW.id,
COALESCE(NEW.full_text, ''),
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';
END;
CREATE TRIGGER frames_ad AFTER DELETE ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
END;
CREATE INDEX idx_memories_frame_id ON memories(frame_id);
CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL;
CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*) as frames FROM frames GROUP BY date(timestamp) ORDER BY date(timestamp);"
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
719
|
|
721
|
17
|
6
|
2026-04-11T12:09:42.682733+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909382682_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
)
/* frames_fts(full_text,app_name,window_name,bro )
/* frames_fts(full_text,app_name,window_name,browser_url,id) */;
CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);
CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER frames_ai AFTER INSERT ON frames
WHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''
BEGIN
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
VALUES (
NEW.id,
NEW.full_text,
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
);
END;
CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
SELECT
NEW.id,
COALESCE(NEW.full_text, ''),
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';
END;
CREATE TRIGGER frames_ad AFTER DELETE ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
END;
CREATE INDEX idx_memories_frame_id ON memories(frame_id);
CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL;
CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*) as frames FROM frames GROUP BY date(timestamp) ORDER BY date(timestamp);"
2026-04-09|523
2026-04-11|197
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":")\n/* frames_fts(full_text,app_name,window_name,browser_url,id) */;\nCREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);\nCREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER frames_ai AFTER INSERT ON frames\nWHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''\nBEGIN\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n VALUES (\n NEW.id,\n NEW.full_text,\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n );\nEND;\nCREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n SELECT\n NEW.id,\n COALESCE(NEW.full_text, ''),\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';\nEND;\nCREATE TRIGGER frames_ad AFTER DELETE ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\nEND;\nCREATE INDEX idx_memories_frame_id ON memories(frame_id);\nCREATE INDEX idx_elements_source_role_text\n ON elements(source, role, frame_id)\n WHERE text IS NOT NULL;\nCREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT date(timestamp), COUNT(*) as frames FROM frames GROUP BY date(timestamp) ORDER BY date(timestamp);\"\n2026-04-09|523\n2026-04-11|197\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","depth":4,"value":")\n/* frames_fts(full_text,app_name,window_name,browser_url,id) */;\nCREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;\nCREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);\nCREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);\nCREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;\nCREATE TRIGGER frames_ai AFTER INSERT ON frames\nWHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''\nBEGIN\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n VALUES (\n NEW.id,\n NEW.full_text,\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n );\nEND;\nCREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\n INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)\n SELECT\n NEW.id,\n COALESCE(NEW.full_text, ''),\n COALESCE(NEW.app_name, ''),\n COALESCE(NEW.window_name, ''),\n COALESCE(NEW.browser_url, '')\n WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';\nEND;\nCREATE TRIGGER frames_ad AFTER DELETE ON frames\nBEGIN\n DELETE FROM frames_fts WHERE id = OLD.id;\nEND;\nCREATE INDEX idx_memories_frame_id ON memories(frame_id);\nCREATE INDEX idx_elements_source_role_text\n ON elements(source, role, frame_id)\n WHERE text IS NOT NULL;\nCREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;\nCREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT date(timestamp), COUNT(*) as frames FROM frames GROUP BY date(timestamp) ORDER BY date(timestamp);\"\n2026-04-09|523\n2026-04-11|197\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48819444,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-332181317459790359
|
7936206669614402548
|
visual_change
|
accessibility
|
NULL
|
)
/* frames_fts(full_text,app_name,window_name,bro )
/* frames_fts(full_text,app_name,window_name,browser_url,id) */;
CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);
CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER frames_ai AFTER INSERT ON frames
WHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''
BEGIN
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
VALUES (
NEW.id,
NEW.full_text,
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
);
END;
CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
SELECT
NEW.id,
COALESCE(NEW.full_text, ''),
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';
END;
CREATE TRIGGER frames_ad AFTER DELETE ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
END;
CREATE INDEX idx_memories_frame_id ON memories(frame_id);
CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL;
CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*) as frames FROM frames GROUP BY date(timestamp) ORDER BY date(timestamp);"
2026-04-09|523
2026-04-11|197
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
722
|
17
|
7
|
2026-04-11T12:09:56.125812+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909396125_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp‹ 40lhl100% C-zshDOCKER• ₴1DEV (-zsh)O $2APP (-zsh)• *3-zsh• 84-zshlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*)BY date(timestamp);"2026-04-0915232026-04-11|197lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $|• *5-zsh• 86frames FROM frames GROUPSat 11 Apr 15:09:55T81-zshX7BY date(timestamp)ORDER...
|
NULL
|
3700243769288638945
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp‹ 40lhl100% C-zshDOCKER• ₴1DEV (-zsh)O $2APP (-zsh)• *3-zsh• 84-zshlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*)BY date(timestamp);"2026-04-0915232026-04-11|197lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $|• *5-zsh• 86frames FROM frames GROUPSat 11 Apr 15:09:55T81-zshX7BY date(timestamp)ORDER...
|
721
|
|
723
|
17
|
8
|
2026-04-11T12:09:56.753136+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909396753_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShelllEditViewSessionScriptsProfilesWindowHe iTerm2ShelllEditViewSessionScriptsProfilesWindowHelp‹ $0(ahl100% <7-zshDOCKERO ₴1DEV (-zsh)O $2APP (-zsh)• ₴з-zsh• 84-zshlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny:~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*)BY date(timestamp);"2026-04-0915232026-04-11|197lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ l• ₴5-zshO 886frames FROM frames GROUPSat 11 Apr 15:09:56181-zsh*7BY date(timestamp)ORDER...
|
NULL
|
-9129933927592684585
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShelllEditViewSessionScriptsProfilesWindowHe iTerm2ShelllEditViewSessionScriptsProfilesWindowHelp‹ $0(ahl100% <7-zshDOCKERO ₴1DEV (-zsh)O $2APP (-zsh)• ₴з-zsh• 84-zshlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny:~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*)BY date(timestamp);"2026-04-0915232026-04-11|197lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ l• ₴5-zshO 886frames FROM frames GROUPSat 11 Apr 15:09:56181-zsh*7BY date(timestamp)ORDER...
|
NULL
|