|
728
|
17
|
13
|
2026-04-11T12:10:31.782354+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909431782_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\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"}]...
|
7975991961833669851
|
7936347407106952116
|
click
|
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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
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...
|
727
|
|
729
|
17
|
14
|
2026-04-11T12:10:32.514407+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909432514_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/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":")\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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"","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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/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"}]...
|
4165807506915910114
|
7936347407106952116
|
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);"
2026-04-09|523
2026-04-11|197
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/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...
|
NULL
|
|
730
|
17
|
15
|
2026-04-11T12:10:34.147103+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909434147_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"","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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-1 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\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"}]...
|
8552368549857249682
|
7937473341373533108
|
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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-1 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
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...
|
729
|
|
733
|
17
|
18
|
2026-04-11T12:10:55.804976+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909455804_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\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"}]...
|
9206977607410668598
|
7936347475826428852
|
click
|
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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.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
|
|
734
|
17
|
19
|
2026-04-11T12:10:56.864575+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909456864_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-1 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-1 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"","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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-1 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\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"}]...
|
-4731763117813192749
|
7937473375733269428
|
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);"
2026-04-09|523
2026-04-11|197
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-1 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
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...
|
733
|
|
735
|
17
|
20
|
2026-04-11T12:11:26.355864+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909486355_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\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"}]...
|
2193639622446553113
|
7937336967571948468
|
click
|
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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
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
|
|
739
|
17
|
24
|
2026-04-11T12:11:45.963964+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909505963_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\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"}]...
|
2193639622446553113
|
7937336967571948468
|
click
|
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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
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
|
|
740
|
17
|
25
|
2026-04-11T12:12:17.202755+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909537202_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\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"}]...
|
2193639622446553113
|
7937336967571948468
|
idle
|
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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
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...
|
739
|
|
741
|
17
|
26
|
2026-04-11T12:12:47.324131+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909567324_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\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"}]...
|
2193639622446553113
|
7937336967571948468
|
idle
|
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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
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...
|
739
|
|
752
|
18
|
5
|
2026-04-11T12:16:24.237745+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909784237_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\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"}]...
|
2193639622446553113
|
7937336967571948468
|
click
|
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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
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...
|
751
|
|
756
|
18
|
9
|
2026-04-11T12:16:35.414414+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909795414_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\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"}]...
|
4442845750214603506
|
-1268020670757747836
|
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);"
2026-04-09|523
2026-04-11|197
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
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...
|
755
|
|
757
|
18
|
10
|
2026-04-11T12:17:05.515101+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909825515_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock","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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock","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"}]...
|
-4262253729365247199
|
7955072120212605476
|
idle
|
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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
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
|
|
758
|
18
|
11
|
2026-04-11T12:17:05.909494+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909825909_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
-8664222300600007459
|
7955072120078387748
|
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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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...
|
757
|
|
761
|
18
|
14
|
2026-04-11T12:17:15.797292+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909835797_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
-8664222300600007459
|
7955072120078387748
|
click
|
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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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
|
|
762
|
18
|
15
|
2026-04-11T12:17:18.002381+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909838002_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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.49027777,"top":0.033333335,"width":0.01875,"height":0.017777778},"role_description":"text"}]...
|
3800978459205822800
|
5648665543643950756
|
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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $
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...
|
761
|
|
763
|
18
|
16
|
2026-04-11T12:17:21.054262+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909841054_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
-8513446901278255071
|
5648665612363427492
|
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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $
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
|
|
764
|
18
|
17
|
2026-04-11T12:17:51.152641+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909871152_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
-8513446901278255071
|
5648665612363427492
|
idle
|
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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $
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...
|
763
|
|
772
|
19
|
3
|
2026-04-11T12:19:53.552637+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775909993552_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
-8513446901278255071
|
5648665612363427492
|
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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $
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
|
|
775
|
19
|
6
|
2026-04-11T12:20:00.742149+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910000742_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
-6431438662058337885
|
5648665543644016292
|
click
|
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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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...
|
774
|
|
778
|
19
|
9
|
2026-04-11T12:20:06.323054+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910006323_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
-6431438662058337885
|
5648665543644016292
|
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);"
2026-04-09|523
2026-04-11|197
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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
|
|
782
|
19
|
13
|
2026-04-11T12:20:15.470221+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910015470_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
5831419128070011902
|
5648665543644016292
|
click
|
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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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
|
|
783
|
19
|
14
|
2026-04-11T12:20:16.227334+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910016227_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"","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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"","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"}]...
|
-3187445132333914215
|
5648665612363492004
|
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);"
2026-04-09|523
2026-04-11|197
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
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...
|
782
|
|
787
|
19
|
18
|
2026-04-11T12:20:27.760987+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910027760_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/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":")\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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"","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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/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"}]...
|
-1725556644437600667
|
5648665543644016292
|
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);"
2026-04-09|523
2026-04-11|197
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/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...
|
786
|
|
788
|
19
|
19
|
2026-04-11T12:20:35.328795+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910035328_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
-8744299132617807326
|
5648665543644016292
|
click
|
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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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
|
|
795
|
19
|
26
|
2026-04-11T12:21:11.195152+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910071195_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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear","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 $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name\nORDER BY frames DESC;\n\"\niTerm2|185|13.9\nDia|31|2.3\nSafari|20|1.5\nClaude|12|0.9\nUserNotificationCenter|4|0.3\nControl Centre|3|0.2\nSlack|2|0.1\nActivity Monitor|2|0.1\nFinder|1|0.1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT browser_url, COUNT(*) as frames\nFROM frames\nWHERE date(timestamp) = date('now', '-2 day')\nAND browser_url IS NOT NULL\nGROUP BY browser_url\nORDER BY frames DESC\nLIMIT 20;\n\"\nhttps://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21|13\nhttps://location-tracker.lakylak.xyz/dashboard|4\nhttps://nas.lakylak.xyz/desktop/?os=ugospro#/|2\nhttps://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT app_name, event_type, COUNT(*) as events\nFROM ui_events\nWHERE date(timestamp) = date('now', '-2 day')\nAND app_name IS NOT NULL\nGROUP BY app_name, event_type\nORDER BY events DESC\nLIMIT 30;\n\"\niTerm2|click|283\nDia|click|171\niTerm2|key|122\nDia|key|56\nSafari|click|56\nClaude|click|50\niTerm2|app_switch|34\nDia|clipboard|17\nSafari|key|11\nClaude|app_switch|9\nDia|app_switch|9\nUserNotificationCenter|click|8\nClaude|key|6\niTerm2|clipboard|6\nUserNotificationCenter|app_switch|4\nSafari|app_switch|3\nSlack|app_switch|1\nSlack|click|1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >.... \nWHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL\nGROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;\"\n\necho \"\\n🕐\u0000 HOURLY TIMELINE\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))\nFROM frames\nWHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL\nGROUP BY strftime('%H', timestamp), app_name\nORDER BY strftime('%H', timestamp), COUNT(*) DESC;\"\n\necho \"\\n📋\u0000 CLIPBOARD ACTIVITY\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))\nFROM ui_events\nWHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL\nORDER BY timestamp LIMIT 20;\"\n\necho \"\\n💬\u0000 OCR TEXT SAMPLES PER APP\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))\nFROM ocr_text o\nJOIN frames f ON o.frame_id = f.id\nWHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''\nGROUP BY o.app_name\nORDER BY o.app_name LIMIT 15;\"\n\necho \"\\n🔢\u0000 TOTALS\"\necho \"───────────────────────────────────────\"\nsqlite3 \"$DB\" \"\nSELECT\n 'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';\n\"\nsqlite3 \"$DB\" \"\nSELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';\n\"\nEOF\nchmod +x ~/screenpipe-day.sh\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll \ntotal 162888\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 ..\n-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json\ndrwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data\n-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite\n-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm\n-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal\ndrwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes\n-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log\n-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls\nApplications\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDocuments\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMovies\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPublic\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tjiminny\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tscreenpipe-day.sh\nCascadeProjects\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tDownloads\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tMusic\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUntitled 4.spf\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tnode_modules\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tyarn.lock\nDEV\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tKeychron_Screen\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPictures\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tUsers\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traycast\nDesktop\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tLibrary\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tPostman\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tiCloud Drive (Archive)\u0000\tresponse.bin\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll\ntotal 1272\ndrwx------+ 89 lukas staff 2848 11 Apr 15:16 .\ndrwxr-xr-x 5 root admin 160 23 Aug 2024 ..\n-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding\n-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store\ndrwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash\ndrwx------ 5 lukas staff 160 1 Nov 2021 .aws\n-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json\n-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc\ndrwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito\ndrwx------@ 6 lukas staff 192 9 Apr 19:53 .cache\ndrwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude\n-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json\ndrwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium\ndrwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer\ndrwx------ 16 lukas staff 512 21 May 2025 .config\ndrwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue\ndrwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot\ndrwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor\ndrwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor\ndrwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona\ndrwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb\ndrwx------ 24 lukas staff 768 9 Apr 18:24 .docker\ndrwx------ 15 lukas staff 480 6 Jun 2023 .dropbox\ndrwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak\n-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth\n-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig\n-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp\ndrwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon\ndrwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc\n-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst\ndrwx------ 5 lukas staff 160 23 Dec 2024 .local\n-rw------- 1 lukas staff 204 16 Mar 2024 .netrc\ndrwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp\n-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history\n-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer\ndrwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py\ndrwx------ 9 lukas staff 288 11 Apr 14:52 .npm\n-rw------- 1 lukas staff 74 20 May 2024 .npmrc\ndrwx------ 32 lukas staff 1024 25 Jul 2025 .nvm\ndrwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman\n-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile\n-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history\ndrwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode\ndrwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight\ndrwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe\ndrwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint\ndrwx------ 15 lukas staff 480 8 Aug 2025 .ssh\ndrwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit\ndrwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm\n-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo\ndrwx------ 5 lukas staff 160 19 Jun 2023 .vscode\ndrwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp\ndrwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm\ndrwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf\ndrwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn\n-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc\n-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump\n-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381\n-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile\n-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy\n-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave\n-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save\n-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees\n-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history\ndrwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions\n-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc\ndrwx------@ 9 lukas staff 288 9 Apr 20:08 Applications\ndrwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects\ndrwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV\ndrwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop\ndrwx------@ 7 lukas staff 224 26 Mar 14:40 Documents\ndrwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads\ndrwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen\ndrwx------@ 112 lukas staff 3584 2 Dec 09:19 Library\ndrwx------ 7 lukas staff 224 12 Feb 2024 Movies\ndrwx------+ 5 lukas staff 160 25 Sep 2023 Music\ndrwx------+ 9 lukas staff 288 25 Sep 2023 Pictures\ndrwx------ 3 lukas staff 96 8 Nov 2021 Postman\ndrwx------+ 4 lukas staff 128 28 Oct 2021 Public\n-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf\ndrwx------ 4 lukas staff 128 2 Jul 2023 Users\ndrwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)\ndrwx------ 16 lukas staff 512 3 Nov 11:35 jiminny\ndrwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules\ndrwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast\n-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin\n-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh\n-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09\n═══════════════════════════════════════\n SCREENPIPE REPORT — 2026-04-09\n═══════════════════════════════════════\n\n📱\u0000 APP USAGE (frames + estimated time)\n───────────────────────────────────────\niTerm2 185 frames ~ 13.9 min\nDia 31 frames ~ 2.3 min\nSafari 20 frames ~ 1.5 min\nClaude 12 frames ~ 0.9 min\nUserNotificationCenter 4 frames ~ 0.3 min\nControl Centre 3 frames ~ 0.2 min\nSlack 2 frames ~ 0.1 min\nActivity Monitor 2 frames ~ 0.1 min\nFinder 1 frames ~ 0.1 min\n\n⌨️\u0000 ACTIVITY TYPE PER APP (clicks / keys / switches)\n───────────────────────────────────────\niTerm2 clicks:283 keys:122 switches:34 \nDia clicks:171 keys:56 switches:9 \nSafari clicks:56 keys:11 switches:3 \nClaude clicks:50 keys:6 switches:9 \nUserNotificationCenter clicks:8 keys:0 switches:4 \nSlack clicks:1 keys:0 switches:1 \n\n🌐\u0000 BROWSER URLS VISITED\n───────────────────────────────────────\n 13 frames https://play.hbomax.com/video/watch/16b35e6c-e745-4416-bc16-0ef5092ba4e0/07b58730-24cb-419c-b5a0-1e258a77cd21\n 4 frames https://location-tracker.lakylak.xyz/dashboard\n 2 frames https://nas.lakylak.xyz/desktop/?os=ugospro#/\n 1 frames https://play.hbomax.com/show/06f986dd-dd6a-4596-9a0a-f473ef99c64b\n\n🪟\u0000 WINDOW TITLES (top 20)\n───────────────────────────────────────\niTerm2 93 -zsh\niTerm2 34 screenpipe\"\nSafari 13 Order Room Service • HBO Max\nClaude 12 Claude\niTerm2 8 ✳ Find cheapest WD Red Plus 6TB price\nDia 7 Personal: New Tab\niTerm2 7 ✳ Claude Code\niTerm2 7 ⠂ Find cheapest WD Red Plus 6TB price\niTerm2 7 ⠂ Research Western Digital Red Plus pricing\niTerm2 7 ⠐ Research Western Digital Red Plus pricing\nDia 6 Personal: GitHub - scree…\niTerm2 5 ✳ Research Western Digital Red Plus pricing\nSafari 4 Location Logger\nUserNotificationCenter 4 \niTerm2 4 nano\niTerm2 4 ⠐ Find cheapest WD Red Plus 6TB price\nControl Centre 3 Control Centre\nDia 3 Personal: Western Digita…\niTerm2 3 ✳ Check today's app usage\nActivity Monitor 2 Activity Monitor – All Processes\n\n🕐\u0000 HOURLY TIMELINE\n───────────────────────────────────────\n16:00 iTerm2 14 frames\n16:00 Safari 4 frames\n16:00 Dia 3 frames\n16:00 Control Centre 2 frames\n16:00 Activity Monitor 2 frames\n17:00 iTerm2 116 frames\n17:00 Dia 24 frames\n17:00 Safari 16 frames\n17:00 Claude 8 frames\n17:00 UserNotificationCenter 4 frames\n17:00 Finder 1 frames\n17:00 Control Centre 1 frames\n18:00 iTerm2 55 frames\n18:00 Dia 4 frames\n18:00 Claude 4 frames\n18:00 Slack 2 frames\n\n📋\u0000 CLIPBOARD ACTIVITY\n───────────────────────────────────────\niTerm2 claude mcp add screenpipe -- npx -y screenpipe-mcp\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\nDia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear","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"}]...
|
-6883981401558721013
|
5648665543644016292
|
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 $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutes
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames DESC;
"
iTerm2|185|13.9
Dia|31|2.3
Safari|20|1.5
Claude|12|0.9
UserNotificationCenter|4|0.3
Control Centre|3|0.2
Slack|2|0.1
Activity Monitor|2|0.1
Finder|1|0.1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT browser_url, COUNT(*) as frames
FROM frames
WHERE date(timestamp) = date('now', '-2 day')
AND browser_url IS NOT NULL
GROUP BY browser_url
ORDER BY frames DESC
LIMIT 20;
"
[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT app_name, event_type, COUNT(*) as events
FROM ui_events
WHERE date(timestamp) = date('now', '-2 day')
AND app_name IS NOT NULL
GROUP BY app_name, event_type
ORDER BY events DESC
LIMIT 30;
"
iTerm2|click|283
Dia|click|171
iTerm2|key|122
Dia|key|56
Safari|click|56
Claude|click|50
iTerm2|app_switch|34
Dia|clipboard|17
Safari|key|11
Claude|app_switch|9
Dia|app_switch|9
UserNotificationCenter|click|8
Claude|key|6
iTerm2|clipboard|6
UserNotificationCenter|app_switch|4
Safari|app_switch|3
Slack|app_switch|1
Slack|click|1
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ >....
WHERE date(timestamp) = '$DATE' AND window_name IS NOT NULL AND app_name IS NOT NULL
GROUP BY app_name, window_name ORDER BY COUNT(*) DESC LIMIT 20;"
echo "\n🕐 HOURLY TIMELINE"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%s %-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))
FROM frames
WHERE date(timestamp) = '$DATE' AND app_name IS NOT NULL
GROUP BY strftime('%H', timestamp), app_name
ORDER BY strftime('%H', timestamp), COUNT(*) DESC;"
echo "\n📋 CLIPBOARD ACTIVITY"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-20s %s', app_name, SUBSTR(text_content, 1, 80))
FROM ui_events
WHERE date(timestamp) = '$DATE' AND event_type = 'clipboard' AND text_content IS NOT NULL
ORDER BY timestamp LIMIT 20;"
echo "\n💬 OCR TEXT SAMPLES PER APP"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT printf('%-15s %s', o.app_name, SUBSTR(o.text, 1, 80))
FROM ocr_text o
JOIN frames f ON o.frame_id = f.id
WHERE date(f.timestamp) = '$DATE' AND o.app_name IS NOT NULL AND o.text != ''
GROUP BY o.app_name
ORDER BY o.app_name LIMIT 15;"
echo "\n🔢 TOTALS"
echo "───────────────────────────────────────"
sqlite3 "$DB" "
SELECT
'Frames: ' || COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'UI Events: ' || COUNT(*) FROM ui_events WHERE date(timestamp) = '$DATE';
"
sqlite3 "$DB" "
SELECT 'OCR texts: ' || COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) = '$DATE';
"
EOF
chmod +x ~/screenpipe-day.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ll
total 162888
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .
drwx------+ 89 lukas staff 2848 11 Apr 15:16 ..
-rw-r--r-- 1 lukas staff 270 9 Apr 20:27 config.json
drwxr-xr-x 5 lukas staff 160 11 Apr 15:03 data
-rw-r--r-- 1 lukas staff 73764864 11 Apr 15:12 db.sqlite
-rw-r--r-- 1 lukas staff 32768 11 Apr 14:52 db.sqlite-shm
-rw-r--r-- 1 lukas staff 8742672 11 Apr 15:16 db.sqlite-wal
drwxr-xr-x 8 lukas staff 256 9 Apr 19:53 pipes
-rw-r--r-- 1 lukas staff 132736 9 Apr 21:27 screenpipe.2026-04-09.0.log
-rw-r--r-- 1 lukas staff 17246 11 Apr 15:16 screenpipe.2026-04-11.0.log
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ls
Applications Documents Movies Public jiminny screenpipe-day.sh
CascadeProjects Downloads Music Untitled 4.spf node_modules yarn.lock
DEV Keychron_Screen Pictures Users raycast
Desktop Library Postman iCloud Drive (Archive) response.bin
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ll
total 1272
drwx------+ 89 lukas staff 2848 11 Apr 15:16 .
drwxr-xr-x 5 root admin 160 23 Aug 2024 ..
-r-------- 1 lukas staff 7 18 Nov 2021 .CFUserTextEncoding
-rw-r--r--@ 1 lukas staff 22532 11 Apr 11:15 .DS_Store
drwx------+ 2 lukas staff 64 11 Apr 11:15 .Trash
drwx------ 5 lukas staff 160 1 Nov 2021 .aws
-rw-r--r-- 1 lukas staff 341470 29 Sep 2022 .babel.json
-rw-------@ 1 lukas staff 388 25 Jul 2025 .bash_history
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .bashrc
drwxr-xr-x 5 lukas staff 160 11 Mar 2023 .bito
drwx------@ 6 lukas staff 192 9 Apr 19:53 .cache
drwxr-xr-x 20 lukas staff 640 9 Apr 21:21 .claude
-rw------- 1 lukas staff 24973 9 Apr 21:24 .claude.json
drwxr-xr-x@ 20 lukas staff 640 12 Mar 09:12 .codeium
drwxrwxrwx@ 3 lukas staff 96 2 Mar 2023 .composer
drwx------ 16 lukas staff 512 21 May 2025 .config
drwxr-xr-x 15 lukas staff 480 23 Dec 2024 .continue
drwx------@ 3 lukas staff 96 16 Feb 19:13 .copilot
drwxr-xr-x@ 5 lukas staff 160 9 Apr 2025 .cursor
drwxr-xr-x@ 5 lukas staff 160 17 Aug 2024 .cursor-tutor
drwxr-xr-x 3 lukas staff 96 8 Sep 2024 .daytona
drwxr-xr-x@ 4 lukas staff 128 18 Feb 10:52 .devdb
drwx------ 24 lukas staff 768 9 Apr 18:24 .docker
drwx------ 15 lukas staff 480 6 Jun 2023 .dropbox
drwxr-xr-x@ 3 lukas staff 96 20 Nov 2022 .fig.dotfiles.bak
-rw-r--r-- 1 lukas staff 138 5 Mar 2022 .gauth
-rw-r--r-- 1 lukas staff 220 25 Nov 2021 .gitconfig
-rw-r--r-- 1 lukas staff 12288 25 Nov 2021 .gitconfig.swp
drwx------ 5 lukas staff 160 18 Nov 2021 .hammerspoon
drwxr-xr-x 3 lukas staff 96 21 Mar 2025 .idlerc
-rw------- 1 lukas staff 20 31 Mar 18:32 .lesshst
drwx------ 5 lukas staff 160 23 Dec 2024 .local
-rw------- 1 lukas staff 204 16 Mar 2024 .netrc
drwx------ 3 lukas staff 96 1 Nov 2021 .node-gyp
-rw------- 1 lukas staff 4 6 Feb 2024 .node_repl_history
-rw-r--r-- 1 lukas staff 17 24 Dec 2023 .notion-enhancer
drwxr-xr-x 4 lukas staff 128 12 Jul 2024 .notion-py
drwx------ 9 lukas staff 288 11 Apr 14:52 .npm
-rw------- 1 lukas staff 74 20 May 2024 .npmrc
drwx------ 32 lukas staff 1024 25 Jul 2025 .nvm
drwxr-xr-x 4 lukas staff 128 5 Aug 2023 .postman
-rw-r--r--@ 1 lukas staff 77 9 Feb 2023 .profile
-rw-------@ 1 lukas staff 3153 21 Mar 2025 .python_history
drwx------ 2 lukas staff 64 15 Nov 2021 .quicktype-vscode
drwxr-xr-x@ 8 lukas staff 256 16 Feb 08:48 .redis-insight
drwxr-xr-x 10 lukas staff 320 11 Apr 14:52 .screenpipe
drwxr-xr-x 4 lukas staff 128 4 Feb 09:35 .sonarlint
drwx------ 15 lukas staff 480 8 Aug 2025 .ssh
drwxr-xr-x@ 3 lukas staff 96 15 Aug 2025 .streamlit
drwx------ 6 lukas staff 192 17 Oct 2022 .swiftpm
-rw------- 1 lukas staff 12183 8 Apr 19:14 .viminfo
drwx------ 5 lukas staff 160 19 Jun 2023 .vscode
drwxr-xr-x@ 3 lukas staff 96 20 Jan 2025 .warp
drwxr-xr-x 4 lukas staff 128 29 Apr 2023 .wdm
drwxr-xr-x@ 5 lukas staff 160 26 Jan 13:03 .windsurf
drwxr-xr-x 4 lukas staff 128 24 Mar 12:03 .yarn
-rw-r--r-- 1 lukas staff 116 30 Mar 10:12 .yarnrc
-rw-r--r--@ 1 lukas staff 49518 6 Apr 14:31 .zcompdump
-rw-r--r--@ 1 lukas staff 46758 2 Nov 20:34 .zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381
-rw-r--r--@ 1 lukas staff 5641 9 Apr 20:30 .zprofile
-rw-r--r-- 1 lukas staff 1468 8 Apr 2022 .zprofile-copy
-rw-r--r--@ 1 lukas staff 2900 15 Mar 2023 .zprofile.pysave
-rw------- 1 lukas staff 1731 29 Jun 2022 .zprofile.save
-rw-r--r-- 1 lukas staff 1569 8 Apr 2022 .zprofilees
-rw------- 1 lukas staff 28813 11 Apr 11:12 .zsh_history
drwx------ 9 lukas staff 288 6 May 2025 .zsh_sessions
-rw-r--r--@ 1 lukas staff 362 25 Jul 2025 .zshrc
drwx------@ 9 lukas staff 288 9 Apr 20:08 Applications
drwxr-xr-x@ 2 lukas staff 64 22 Oct 09:35 CascadeProjects
drwxr-xr-x 4 lukas staff 128 27 Oct 09:24 DEV
drwx------@ 5 lukas staff 160 11 Apr 14:53 Desktop
drwx------@ 7 lukas staff 224 26 Mar 14:40 Documents
drwx------@ 41 lukas staff 1312 8 Apr 20:46 Downloads
drwxr-xr-x@ 4 lukas staff 128 17 Mar 20:27 Keychron_Screen
drwx------@ 112 lukas staff 3584 2 Dec 09:19 Library
drwx------ 7 lukas staff 224 12 Feb 2024 Movies
drwx------+ 5 lukas staff 160 25 Sep 2023 Music
drwx------+ 9 lukas staff 288 25 Sep 2023 Pictures
drwx------ 3 lukas staff 96 8 Nov 2021 Postman
drwx------+ 4 lukas staff 128 28 Oct 2021 Public
-rw-r--r--@ 1 lukas staff 3950 15 Dec 09:16 Untitled 4.spf
drwx------ 4 lukas staff 128 2 Jul 2023 Users
drwx------ 3 lukas staff 96 30 Sep 2022 iCloud Drive (Archive)
drwx------ 16 lukas staff 512 3 Nov 11:35 jiminny
drwxr-xr-x 3 lukas staff 96 20 Mar 18:47 node_modules
drwxr-xr-x 4 lukas staff 128 21 Oct 18:15 raycast
-rw-r--r-- 1 lukas staff 0 1 Mar 14:26 response.bin
-rwxr-xr-x 1 lukas staff 3824 11 Apr 15:16 screenpipe-day.sh
-rw-r--r-- 1 lukas staff 86 20 Mar 18:47 yarn.lock
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/screenpipe-day.sh 2026-04-09
═══════════════════════════════════════
SCREENPIPE REPORT — 2026-04-09
═══════════════════════════════════════
📱 APP USAGE (frames + estimated time)
───────────────────────────────────────
iTerm2 185 frames ~ 13.9 min
Dia 31 frames ~ 2.3 min
Safari 20 frames ~ 1.5 min
Claude 12 frames ~ 0.9 min
UserNotificationCenter 4 frames ~ 0.3 min
Control Centre 3 frames ~ 0.2 min
Slack 2 frames ~ 0.1 min
Activity Monitor 2 frames ~ 0.1 min
Finder 1 frames ~ 0.1 min
⌨️ ACTIVITY TYPE PER APP (clicks / keys / switches)
───────────────────────────────────────
iTerm2 clicks:283 keys:122 switches:34
Dia clicks:171 keys:56 switches:9
Safari clicks:56 keys:11 switches:3
Claude clicks:50 keys:6 switches:9
UserNotificationCenter clicks:8 keys:0 switches:4
Slack clicks:1 keys:0 switches:1
🌐 BROWSER URLS VISITED
───────────────────────────────────────
13 frames [URL_WITH_CREDENTIALS] ~ $ claude mcp add screenpipe -- npx -y
Dia lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
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...
|
794
|
|
796
|
19
|
27
|
2026-04-11T12:21:12.732109+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910072732_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
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":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"","depth":4,"value":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"","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"}]...
|
-1441934453800214163
|
6658597508763200175
|
clipboard
|
accessibility
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
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
|
|
797
|
19
|
28
|
2026-04-11T12:21:14.241026+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910074241_m1.jpg...
|
iTerm2
|
sqlite3
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"value":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
8315006965312361648
|
6730654965363223212
|
visual_change
|
accessibility
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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...
|
796
|
|
800
|
19
|
31
|
2026-04-11T12:21:20.749473+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910080749_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"value":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
6654558723145318115
|
6730654965362174639
|
click
|
accessibility
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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
|
|
801
|
19
|
32
|
2026-04-11T12:21:21.142421+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910081142_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/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":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"","depth":4,"value":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/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"}]...
|
-2874204950340210378
|
6730655102801128111
|
clipboard
|
accessibility
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/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...
|
800
|
|
805
|
19
|
36
|
2026-04-11T12:21:27.573521+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910087573_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"value":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
543137638070975888
|
6730725471545306026
|
click
|
accessibility
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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...
|
804
|
|
806
|
19
|
37
|
2026-04-11T12:21:27.826612+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910087826_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/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":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"","depth":4,"value":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/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"}]...
|
-4121554977823788588
|
6730725471545306026
|
clipboard
|
accessibility
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/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...
|
NULL
|
|
807
|
19
|
38
|
2026-04-11T12:21:29.374019+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910089374_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
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":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"","depth":4,"value":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"","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"}]...
|
-1610790630866244402
|
6730725469397822378
|
visual_change
|
accessibility
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
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...
|
806
|
|
808
|
19
|
39
|
2026-04-11T12:21:32.409072+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910092409_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
Order Room Service • HBO Max|Back
Order Room Service • HBO Max|Search
Order Room Service • HBO Max|Ukončiť prehrávanie
Order Room Service • HBO Max|Rozbaliť Epizód, 1 z 2
Order Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2
Order Room Service • HBO Max|Preskočiť dozadu o 10 s
Order Room Service • HBO Max|Pozastaviť
Order Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd
Order Room Service • HBO Max|Hlasitosť 100 %
Order Room Service • HBO Max|Nastavenia zvuku a titulkov
Order Room Service • HBO Max|Celá obrazovka
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|Favourites
Order Room Service • HBO Max|Tab Group Favourites
Order Room Service • HBO Max|NAS
Order Room Service • HBO Max|Home
Order Room Service • HBO Max|Portainer
Order Room Service • HBO Max|Nginx Proxy Manager
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"\nOrder Room Service • HBO Max|Back\nOrder Room Service • HBO Max|Search\nOrder Room Service • HBO Max|Ukončiť prehrávanie\nOrder Room Service • HBO Max|Rozbaliť Epizód, 1 z 2\nOrder Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2\nOrder Room Service • HBO Max|Preskočiť dozadu o 10 s\nOrder Room Service • HBO Max|Pozastaviť\nOrder Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd\nOrder Room Service • HBO Max|Hlasitosť 100 %\nOrder Room Service • HBO Max|Nastavenia zvuku a titulkov\nOrder Room Service • HBO Max|Celá obrazovka\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|Favourites\nOrder Room Service • HBO Max|Tab Group Favourites\nOrder Room Service • HBO Max|NAS\nOrder Room Service • HBO Max|Home\nOrder Room Service • HBO Max|Portainer\nOrder Room Service • HBO Max|Nginx Proxy Manager\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"value":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"\nOrder Room Service • HBO Max|Back\nOrder Room Service • HBO Max|Search\nOrder Room Service • HBO Max|Ukončiť prehrávanie\nOrder Room Service • HBO Max|Rozbaliť Epizód, 1 z 2\nOrder Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2\nOrder Room Service • HBO Max|Preskočiť dozadu o 10 s\nOrder Room Service • HBO Max|Pozastaviť\nOrder Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd\nOrder Room Service • HBO Max|Hlasitosť 100 %\nOrder Room Service • HBO Max|Nastavenia zvuku a titulkov\nOrder Room Service • HBO Max|Celá obrazovka\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|Favourites\nOrder Room Service • HBO Max|Tab Group Favourites\nOrder Room Service • HBO Max|NAS\nOrder Room Service • HBO Max|Home\nOrder Room Service • HBO Max|Portainer\nOrder Room Service • HBO Max|Nginx Proxy Manager\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
-2155183469395643749
|
5693765216978349033
|
visual_change
|
accessibility
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
Order Room Service • HBO Max|Back
Order Room Service • HBO Max|Search
Order Room Service • HBO Max|Ukončiť prehrávanie
Order Room Service • HBO Max|Rozbaliť Epizód, 1 z 2
Order Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2
Order Room Service • HBO Max|Preskočiť dozadu o 10 s
Order Room Service • HBO Max|Pozastaviť
Order Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd
Order Room Service • HBO Max|Hlasitosť 100 %
Order Room Service • HBO Max|Nastavenia zvuku a titulkov
Order Room Service • HBO Max|Celá obrazovka
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|Favourites
Order Room Service • HBO Max|Tab Group Favourites
Order Room Service • HBO Max|NAS
Order Room Service • HBO Max|Home
Order Room Service • HBO Max|Portainer
Order Room Service • HBO Max|Nginx Proxy Manager
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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
|
|
812
|
19
|
43
|
2026-04-11T12:22:22.891394+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910142891_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
Order Room Service • HBO Max|Back
Order Room Service • HBO Max|Search
Order Room Service • HBO Max|Ukončiť prehrávanie
Order Room Service • HBO Max|Rozbaliť Epizód, 1 z 2
Order Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2
Order Room Service • HBO Max|Preskočiť dozadu o 10 s
Order Room Service • HBO Max|Pozastaviť
Order Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd
Order Room Service • HBO Max|Hlasitosť 100 %
Order Room Service • HBO Max|Nastavenia zvuku a titulkov
Order Room Service • HBO Max|Celá obrazovka
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|Favourites
Order Room Service • HBO Max|Tab Group Favourites
Order Room Service • HBO Max|NAS
Order Room Service • HBO Max|Home
Order Room Service • HBO Max|Portainer
Order Room Service • HBO Max|Nginx Proxy Manager
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"\nOrder Room Service • HBO Max|Back\nOrder Room Service • HBO Max|Search\nOrder Room Service • HBO Max|Ukončiť prehrávanie\nOrder Room Service • HBO Max|Rozbaliť Epizód, 1 z 2\nOrder Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2\nOrder Room Service • HBO Max|Preskočiť dozadu o 10 s\nOrder Room Service • HBO Max|Pozastaviť\nOrder Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd\nOrder Room Service • HBO Max|Hlasitosť 100 %\nOrder Room Service • HBO Max|Nastavenia zvuku a titulkov\nOrder Room Service • HBO Max|Celá obrazovka\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|Favourites\nOrder Room Service • HBO Max|Tab Group Favourites\nOrder Room Service • HBO Max|NAS\nOrder Room Service • HBO Max|Home\nOrder Room Service • HBO Max|Portainer\nOrder Room Service • HBO Max|Nginx Proxy Manager\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"value":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"\nOrder Room Service • HBO Max|Back\nOrder Room Service • HBO Max|Search\nOrder Room Service • HBO Max|Ukončiť prehrávanie\nOrder Room Service • HBO Max|Rozbaliť Epizód, 1 z 2\nOrder Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2\nOrder Room Service • HBO Max|Preskočiť dozadu o 10 s\nOrder Room Service • HBO Max|Pozastaviť\nOrder Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd\nOrder Room Service • HBO Max|Hlasitosť 100 %\nOrder Room Service • HBO Max|Nastavenia zvuku a titulkov\nOrder Room Service • HBO Max|Celá obrazovka\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|Favourites\nOrder Room Service • HBO Max|Tab Group Favourites\nOrder Room Service • HBO Max|NAS\nOrder Room Service • HBO Max|Home\nOrder Room Service • HBO Max|Portainer\nOrder Room Service • HBO Max|Nginx Proxy Manager\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
-2155183469395643749
|
5693765216978349033
|
click
|
accessibility
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
Order Room Service • HBO Max|Back
Order Room Service • HBO Max|Search
Order Room Service • HBO Max|Ukončiť prehrávanie
Order Room Service • HBO Max|Rozbaliť Epizód, 1 z 2
Order Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2
Order Room Service • HBO Max|Preskočiť dozadu o 10 s
Order Room Service • HBO Max|Pozastaviť
Order Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd
Order Room Service • HBO Max|Hlasitosť 100 %
Order Room Service • HBO Max|Nastavenia zvuku a titulkov
Order Room Service • HBO Max|Celá obrazovka
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|Favourites
Order Room Service • HBO Max|Tab Group Favourites
Order Room Service • HBO Max|NAS
Order Room Service • HBO Max|Home
Order Room Service • HBO Max|Portainer
Order Room Service • HBO Max|Nginx Proxy Manager
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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
|
|
820
|
19
|
51
|
2026-04-11T12:23:23.355286+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910203355_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
Order Room Service • HBO Max|Back
Order Room Service • HBO Max|Search
Order Room Service • HBO Max|Ukončiť prehrávanie
Order Room Service • HBO Max|Rozbaliť Epizód, 1 z 2
Order Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2
Order Room Service • HBO Max|Preskočiť dozadu o 10 s
Order Room Service • HBO Max|Pozastaviť
Order Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd
Order Room Service • HBO Max|Hlasitosť 100 %
Order Room Service • HBO Max|Nastavenia zvuku a titulkov
Order Room Service • HBO Max|Celá obrazovka
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|Favourites
Order Room Service • HBO Max|Tab Group Favourites
Order Room Service • HBO Max|NAS
Order Room Service • HBO Max|Home
Order Room Service • HBO Max|Portainer
Order Room Service • HBO Max|Nginx Proxy Manager
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"\nOrder Room Service • HBO Max|Back\nOrder Room Service • HBO Max|Search\nOrder Room Service • HBO Max|Ukončiť prehrávanie\nOrder Room Service • HBO Max|Rozbaliť Epizód, 1 z 2\nOrder Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2\nOrder Room Service • HBO Max|Preskočiť dozadu o 10 s\nOrder Room Service • HBO Max|Pozastaviť\nOrder Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd\nOrder Room Service • HBO Max|Hlasitosť 100 %\nOrder Room Service • HBO Max|Nastavenia zvuku a titulkov\nOrder Room Service • HBO Max|Celá obrazovka\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|Favourites\nOrder Room Service • HBO Max|Tab Group Favourites\nOrder Room Service • HBO Max|NAS\nOrder Room Service • HBO Max|Home\nOrder Room Service • HBO Max|Portainer\nOrder Room Service • HBO Max|Nginx Proxy Manager\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"value":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"\nOrder Room Service • HBO Max|Back\nOrder Room Service • HBO Max|Search\nOrder Room Service • HBO Max|Ukončiť prehrávanie\nOrder Room Service • HBO Max|Rozbaliť Epizód, 1 z 2\nOrder Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2\nOrder Room Service • HBO Max|Preskočiť dozadu o 10 s\nOrder Room Service • HBO Max|Pozastaviť\nOrder Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd\nOrder Room Service • HBO Max|Hlasitosť 100 %\nOrder Room Service • HBO Max|Nastavenia zvuku a titulkov\nOrder Room Service • HBO Max|Celá obrazovka\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|Favourites\nOrder Room Service • HBO Max|Tab Group Favourites\nOrder Room Service • HBO Max|NAS\nOrder Room Service • HBO Max|Home\nOrder Room Service • HBO Max|Portainer\nOrder Room Service • HBO Max|Nginx Proxy Manager\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
-2155183469395643749
|
5693765216978349033
|
click
|
accessibility
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
Order Room Service • HBO Max|Back
Order Room Service • HBO Max|Search
Order Room Service • HBO Max|Ukončiť prehrávanie
Order Room Service • HBO Max|Rozbaliť Epizód, 1 z 2
Order Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2
Order Room Service • HBO Max|Preskočiť dozadu o 10 s
Order Room Service • HBO Max|Pozastaviť
Order Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd
Order Room Service • HBO Max|Hlasitosť 100 %
Order Room Service • HBO Max|Nastavenia zvuku a titulkov
Order Room Service • HBO Max|Celá obrazovka
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|Favourites
Order Room Service • HBO Max|Tab Group Favourites
Order Room Service • HBO Max|NAS
Order Room Service • HBO Max|Home
Order Room Service • HBO Max|Portainer
Order Room Service • HBO Max|Nginx Proxy Manager
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
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
|
|
821
|
19
|
52
|
2026-04-11T12:23:24.548795+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910204548_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
Order Room Service • HBO Max|Back
Order Room Service • HBO Max|Search
Order Room Service • HBO Max|Ukončiť prehrávanie
Order Room Service • HBO Max|Rozbaliť Epizód, 1 z 2
Order Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2
Order Room Service • HBO Max|Preskočiť dozadu o 10 s
Order Room Service • HBO Max|Pozastaviť
Order Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd
Order Room Service • HBO Max|Hlasitosť 100 %
Order Room Service • HBO Max|Nastavenia zvuku a titulkov
Order Room Service • HBO Max|Celá obrazovka
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|Favourites
Order Room Service • HBO Max|Tab Group Favourites
Order Room Service • HBO Max|NAS
Order Room Service • HBO Max|Home
Order Room Service • HBO Max|Portainer
Order Room Service • HBO Max|Nginx Proxy Manager
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clea
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":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"\nOrder Room Service • HBO Max|Back\nOrder Room Service • HBO Max|Search\nOrder Room Service • HBO Max|Ukončiť prehrávanie\nOrder Room Service • HBO Max|Rozbaliť Epizód, 1 z 2\nOrder Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2\nOrder Room Service • HBO Max|Preskočiť dozadu o 10 s\nOrder Room Service • HBO Max|Pozastaviť\nOrder Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd\nOrder Room Service • HBO Max|Hlasitosť 100 %\nOrder Room Service • HBO Max|Nastavenia zvuku a titulkov\nOrder Room Service • HBO Max|Celá obrazovka\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|Favourites\nOrder Room Service • HBO Max|Tab Group Favourites\nOrder Room Service • HBO Max|NAS\nOrder Room Service • HBO Max|Home\nOrder Room Service • HBO Max|Portainer\nOrder Room Service • HBO Max|Nginx Proxy Manager\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clea","depth":4,"value":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y\n npm install -g @anthropic-ai/claude-code\nDia npm install -g @anthropic-ai/claude-code\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\n claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\nDia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc\niTerm2 curl http://localhost:3030/health\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/health\n{\n\n💬\u0000 OCR TEXT SAMPLES PER APP\n───────────────────────────────────────\n iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(io]100% C8Thu 9 Apr 19:53:14\n\n🔢\u0000 TOTALS\n───────────────────────────────────────\nFrames: 523\nUI Events: 1305\nOCR texts: 271\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM memories LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM meetings LIMIT 5;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"SELECT * FROM elements LIMIT 5;\"\n1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.0334302319420709|0.0139534876081678|1.0|0|\n2|1|ocr|block|Shell||0|0.0828488374709768|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|1|\n3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.0174418595102098|0.0139534876081678|1.0|2|\n4|1|ocr|block|View||0|0.148255814457411|0.0069767448005672|0.0218023247188992|0.0139534876081678|1.0|3|\n5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.0350975381003486|0.0153918912675646|1.0|4|\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT 'memories' as tbl, COUNT(*) FROM memories\nUNION ALL SELECT 'meetings', COUNT(*) FROM meetings\nUNION ALL SELECT 'elements', COUNT(*) FROM elements\nUNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;\"\nmemories|0\nmeetings|0\nelements|34220\nocr_text|448\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE e.text IS NOT NULL\nGROUP BY f.app_name\nORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"\nOrder Room Service • HBO Max|Back\nOrder Room Service • HBO Max|Search\nOrder Room Service • HBO Max|Ukončiť prehrávanie\nOrder Room Service • HBO Max|Rozbaliť Epizód, 1 z 2\nOrder Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2\nOrder Room Service • HBO Max|Preskočiť dozadu o 10 s\nOrder Room Service • HBO Max|Pozastaviť\nOrder Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd\nOrder Room Service • HBO Max|Hlasitosť 100 %\nOrder Room Service • HBO Max|Nastavenia zvuku a titulkov\nOrder Room Service • HBO Max|Celá obrazovka\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|Favourites\nOrder Room Service • HBO Max|Tab Group Favourites\nOrder Room Service • HBO Max|NAS\nOrder Room Service • HBO Max|Home\nOrder Room Service • HBO Max|Portainer\nOrder Room Service • HBO Max|Nginx Proxy Manager\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clea","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"}]...
|
2774038436661058009
|
5693765216978349033
|
visual_change
|
accessibility
|
NULL
|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claud lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -y
npm install -g @anthropic-ai/claude-code
Dia npm install -g @anthropic-ai/claude-code
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
Dia claude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mc
iTerm2 curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM meetings LIMIT 5;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "SELECT * FROM elements LIMIT 5;"
1|1|ocr|block|iTerm2||0|0.036337209192482|0.00697674468428822|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|0|
2|1|ocr|block|Shell||0|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|1|
3|1|ocr|block|Edit||0|0.117732558907686|0.00697674441297036|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|2|
4|1|ocr|block|View||0|0.148255814457411|0.[CREDIT_CARD]|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|3|
5|1|ocr|block|Session||0|0.181579138317795|0.006257542954757|0.[CREDIT_CARD]|0.[CREDIT_CARD]|1.0|4|
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT 'memories' as tbl, COUNT(*) FROM memories
UNION ALL SELECT 'meetings', COUNT(*) FROM meetings
UNION ALL SELECT 'elements', COUNT(*) FROM elements
UNION ALL SELECT 'ocr_text', COUNT(*) FROM ocr_text;"
memories|0
meetings|0
elements|34220
ocr_text|448
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.app_name, COUNT(*) as elements, COUNT(DISTINCT e.frame_id) as frames
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE e.text IS NOT NULL
GROUP BY f.app_name
ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
Order Room Service • HBO Max|Back
Order Room Service • HBO Max|Search
Order Room Service • HBO Max|Ukončiť prehrávanie
Order Room Service • HBO Max|Rozbaliť Epizód, 1 z 2
Order Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2
Order Room Service • HBO Max|Preskočiť dozadu o 10 s
Order Room Service • HBO Max|Pozastaviť
Order Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd
Order Room Service • HBO Max|Hlasitosť 100 %
Order Room Service • HBO Max|Nastavenia zvuku a titulkov
Order Room Service • HBO Max|Celá obrazovka
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|Favourites
Order Room Service • HBO Max|Tab Group Favourites
Order Room Service • HBO Max|NAS
Order Room Service • HBO Max|Home
Order Room Service • HBO Max|Portainer
Order Room Service • HBO Max|Nginx Proxy Manager
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clea
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...
|
820
|
|
822
|
19
|
53
|
2026-04-11T12:23:26.995460+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910206995_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
ORDER BY elements DESC;"
|24604|206
Dia|2884|1 ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
Order Room Service • HBO Max|Back
Order Room Service • HBO Max|Search
Order Room Service • HBO Max|Ukončiť prehrávanie
Order Room Service • HBO Max|Rozbaliť Epizód, 1 z 2
Order Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2
Order Room Service • HBO Max|Preskočiť dozadu o 10 s
Order Room Service • HBO Max|Pozastaviť
Order Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd
Order Room Service • HBO Max|Hlasitosť 100 %
Order Room Service • HBO Max|Nastavenia zvuku a titulkov
Order Room Service • HBO Max|Celá obrazovka
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|Favourites
Order Room Service • HBO Max|Tab Group Favourites
Order Room Service • HBO Max|NAS
Order Room Service • HBO Max|Home
Order Room Service • HBO Max|Portainer
Order Room Service • HBO Max|Nginx Proxy Manager
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?
sqlite3 ~/.screenpipe/db.sqlite "SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;"
# What are those 24k elements with no app_name?
sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, COUNT(*) as cnt
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name IS NULL AND e.text IS NOT NULL
GROUP BY f.window_name
ORDER BY cnt DESC
LIMIT 10;"
# iTerm2 elements with any role
sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.role, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL
LIMIT 20;"
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":"ORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"\nOrder Room Service • HBO Max|Back\nOrder Room Service • HBO Max|Search\nOrder Room Service • HBO Max|Ukončiť prehrávanie\nOrder Room Service • HBO Max|Rozbaliť Epizód, 1 z 2\nOrder Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2\nOrder Room Service • HBO Max|Preskočiť dozadu o 10 s\nOrder Room Service • HBO Max|Pozastaviť\nOrder Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd\nOrder Room Service • HBO Max|Hlasitosť 100 %\nOrder Room Service • HBO Max|Nastavenia zvuku a titulkov\nOrder Room Service • HBO Max|Celá obrazovka\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|Favourites\nOrder Room Service • HBO Max|Tab Group Favourites\nOrder Room Service • HBO Max|NAS\nOrder Room Service • HBO Max|Home\nOrder Room Service • HBO Max|Portainer\nOrder Room Service • HBO Max|Nginx Proxy Manager\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?\nsqlite3 ~/.screenpipe/db.sqlite \"SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;\"\n\n# What are those 24k elements with no app_name?\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, COUNT(*) as cnt\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name IS NULL AND e.text IS NOT NULL\nGROUP BY f.window_name\nORDER BY cnt DESC\nLIMIT 10;\"\n\n# iTerm2 elements with any role\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.role, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL\nLIMIT 20;\"","depth":4,"value":"ORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"\nOrder Room Service • HBO Max|Back\nOrder Room Service • HBO Max|Search\nOrder Room Service • HBO Max|Ukončiť prehrávanie\nOrder Room Service • HBO Max|Rozbaliť Epizód, 1 z 2\nOrder Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2\nOrder Room Service • HBO Max|Preskočiť dozadu o 10 s\nOrder Room Service • HBO Max|Pozastaviť\nOrder Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd\nOrder Room Service • HBO Max|Hlasitosť 100 %\nOrder Room Service • HBO Max|Nastavenia zvuku a titulkov\nOrder Room Service • HBO Max|Celá obrazovka\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|Favourites\nOrder Room Service • HBO Max|Tab Group Favourites\nOrder Room Service • HBO Max|NAS\nOrder Room Service • HBO Max|Home\nOrder Room Service • HBO Max|Portainer\nOrder Room Service • HBO Max|Nginx Proxy Manager\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?\nsqlite3 ~/.screenpipe/db.sqlite \"SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;\"\n\n# What are those 24k elements with no app_name?\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, COUNT(*) as cnt\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name IS NULL AND e.text IS NOT NULL\nGROUP BY f.window_name\nORDER BY cnt DESC\nLIMIT 10;\"\n\n# iTerm2 elements with any role\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.role, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL\nLIMIT 20;\"","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"}]...
|
-6918525387471082492
|
5694749881180760521
|
clipboard
|
accessibility
|
NULL
|
ORDER BY elements DESC;"
|24604|206
Dia|2884|1 ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
Order Room Service • HBO Max|Back
Order Room Service • HBO Max|Search
Order Room Service • HBO Max|Ukončiť prehrávanie
Order Room Service • HBO Max|Rozbaliť Epizód, 1 z 2
Order Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2
Order Room Service • HBO Max|Preskočiť dozadu o 10 s
Order Room Service • HBO Max|Pozastaviť
Order Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd
Order Room Service • HBO Max|Hlasitosť 100 %
Order Room Service • HBO Max|Nastavenia zvuku a titulkov
Order Room Service • HBO Max|Celá obrazovka
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|Favourites
Order Room Service • HBO Max|Tab Group Favourites
Order Room Service • HBO Max|NAS
Order Room Service • HBO Max|Home
Order Room Service • HBO Max|Portainer
Order Room Service • HBO Max|Nginx Proxy Manager
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?
sqlite3 ~/.screenpipe/db.sqlite "SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;"
# What are those 24k elements with no app_name?
sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, COUNT(*) as cnt
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name IS NULL AND e.text IS NOT NULL
GROUP BY f.window_name
ORDER BY cnt DESC
LIMIT 10;"
# iTerm2 elements with any role
sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.role, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL
LIMIT 20;"
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
|
|
823
|
19
|
54
|
2026-04-11T12:23:27.586697+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910207586_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
ORDER BY elements DESC;"
|24604|206
Dia|2884|1 ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
Order Room Service • HBO Max|Back
Order Room Service • HBO Max|Search
Order Room Service • HBO Max|Ukončiť prehrávanie
Order Room Service • HBO Max|Rozbaliť Epizód, 1 z 2
Order Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2
Order Room Service • HBO Max|Preskočiť dozadu o 10 s
Order Room Service • HBO Max|Pozastaviť
Order Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd
Order Room Service • HBO Max|Hlasitosť 100 %
Order Room Service • HBO Max|Nastavenia zvuku a titulkov
Order Room Service • HBO Max|Celá obrazovka
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|Favourites
Order Room Service • HBO Max|Tab Group Favourites
Order Room Service • HBO Max|NAS
Order Room Service • HBO Max|Home
Order Room Service • HBO Max|Portainer
Order Room Service • HBO Max|Nginx Proxy Manager
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?
sqlite3 ~/.screenpipe/db.sqlite "SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;"
# What are those 24k elements with no app_name?
sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, COUNT(*) as cnt
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name IS NULL AND e.text IS NOT NULL
GROUP BY f.window_name
ORDER BY cnt DESC
LIMIT 10;"
# iTerm2 elements with any role
sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.role, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL
LIMIT 20;"
zsh: no matches found: elements?
block|25522
AXStaticText|4681
AXButton|1364
AXLink|1123
AXRadioButton|1017
AXTextField|607
AXCell|297
AXHeading|166
AXTextArea|151
AXPopUpButton|83
AXCheckBox|59
AXComboBox|7
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":"ORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"\nOrder Room Service • HBO Max|Back\nOrder Room Service • HBO Max|Search\nOrder Room Service • HBO Max|Ukončiť prehrávanie\nOrder Room Service • HBO Max|Rozbaliť Epizód, 1 z 2\nOrder Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2\nOrder Room Service • HBO Max|Preskočiť dozadu o 10 s\nOrder Room Service • HBO Max|Pozastaviť\nOrder Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd\nOrder Room Service • HBO Max|Hlasitosť 100 %\nOrder Room Service • HBO Max|Nastavenia zvuku a titulkov\nOrder Room Service • HBO Max|Celá obrazovka\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|Favourites\nOrder Room Service • HBO Max|Tab Group Favourites\nOrder Room Service • HBO Max|NAS\nOrder Room Service • HBO Max|Home\nOrder Room Service • HBO Max|Portainer\nOrder Room Service • HBO Max|Nginx Proxy Manager\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?\nsqlite3 ~/.screenpipe/db.sqlite \"SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;\"\n\n# What are those 24k elements with no app_name?\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, COUNT(*) as cnt\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name IS NULL AND e.text IS NOT NULL\nGROUP BY f.window_name\nORDER BY cnt DESC\nLIMIT 10;\"\n\n# iTerm2 elements with any role\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.role, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL\nLIMIT 20;\"\nzsh: no matches found: elements?\nblock|25522\nAXStaticText|4681\nAXButton|1364\nAXLink|1123\nAXRadioButton|1017\nAXTextField|607\nAXCell|297\nAXHeading|166\nAXTextArea|151\nAXPopUpButton|83\nAXCheckBox|59\nAXComboBox|7","depth":4,"value":"ORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"\nOrder Room Service • HBO Max|Back\nOrder Room Service • HBO Max|Search\nOrder Room Service • HBO Max|Ukončiť prehrávanie\nOrder Room Service • HBO Max|Rozbaliť Epizód, 1 z 2\nOrder Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2\nOrder Room Service • HBO Max|Preskočiť dozadu o 10 s\nOrder Room Service • HBO Max|Pozastaviť\nOrder Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd\nOrder Room Service • HBO Max|Hlasitosť 100 %\nOrder Room Service • HBO Max|Nastavenia zvuku a titulkov\nOrder Room Service • HBO Max|Celá obrazovka\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|Favourites\nOrder Room Service • HBO Max|Tab Group Favourites\nOrder Room Service • HBO Max|NAS\nOrder Room Service • HBO Max|Home\nOrder Room Service • HBO Max|Portainer\nOrder Room Service • HBO Max|Nginx Proxy Manager\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?\nsqlite3 ~/.screenpipe/db.sqlite \"SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;\"\n\n# What are those 24k elements with no app_name?\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, COUNT(*) as cnt\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name IS NULL AND e.text IS NOT NULL\nGROUP BY f.window_name\nORDER BY cnt DESC\nLIMIT 10;\"\n\n# iTerm2 elements with any role\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.role, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL\nLIMIT 20;\"\nzsh: no matches found: elements?\nblock|25522\nAXStaticText|4681\nAXButton|1364\nAXLink|1123\nAXRadioButton|1017\nAXTextField|607\nAXCell|297\nAXHeading|166\nAXTextArea|151\nAXPopUpButton|83\nAXCheckBox|59\nAXComboBox|7","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"}]...
|
-5907118204318333059
|
5694749881180760553
|
visual_change
|
accessibility
|
NULL
|
ORDER BY elements DESC;"
|24604|206
Dia|2884|1 ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
Order Room Service • HBO Max|Back
Order Room Service • HBO Max|Search
Order Room Service • HBO Max|Ukončiť prehrávanie
Order Room Service • HBO Max|Rozbaliť Epizód, 1 z 2
Order Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2
Order Room Service • HBO Max|Preskočiť dozadu o 10 s
Order Room Service • HBO Max|Pozastaviť
Order Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd
Order Room Service • HBO Max|Hlasitosť 100 %
Order Room Service • HBO Max|Nastavenia zvuku a titulkov
Order Room Service • HBO Max|Celá obrazovka
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|Favourites
Order Room Service • HBO Max|Tab Group Favourites
Order Room Service • HBO Max|NAS
Order Room Service • HBO Max|Home
Order Room Service • HBO Max|Portainer
Order Room Service • HBO Max|Nginx Proxy Manager
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?
sqlite3 ~/.screenpipe/db.sqlite "SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;"
# What are those 24k elements with no app_name?
sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, COUNT(*) as cnt
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name IS NULL AND e.text IS NOT NULL
GROUP BY f.window_name
ORDER BY cnt DESC
LIMIT 10;"
# iTerm2 elements with any role
sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.role, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL
LIMIT 20;"
zsh: no matches found: elements?
block|25522
AXStaticText|4681
AXButton|1364
AXLink|1123
AXRadioButton|1017
AXTextField|607
AXCell|297
AXHeading|166
AXTextArea|151
AXPopUpButton|83
AXCheckBox|59
AXComboBox|7
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...
|
822
|
|
824
|
19
|
55
|
2026-04-11T12:23:30.599060+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910210599_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
ORDER BY elements DESC;"
|24604|206
Dia|2884|1 ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
Order Room Service • HBO Max|Back
Order Room Service • HBO Max|Search
Order Room Service • HBO Max|Ukončiť prehrávanie
Order Room Service • HBO Max|Rozbaliť Epizód, 1 z 2
Order Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2
Order Room Service • HBO Max|Preskočiť dozadu o 10 s
Order Room Service • HBO Max|Pozastaviť
Order Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd
Order Room Service • HBO Max|Hlasitosť 100 %
Order Room Service • HBO Max|Nastavenia zvuku a titulkov
Order Room Service • HBO Max|Celá obrazovka
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|Favourites
Order Room Service • HBO Max|Tab Group Favourites
Order Room Service • HBO Max|NAS
Order Room Service • HBO Max|Home
Order Room Service • HBO Max|Portainer
Order Room Service • HBO Max|Nginx Proxy Manager
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?
sqlite3 ~/.screenpipe/db.sqlite "SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;"
# What are those 24k elements with no app_name?
sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, COUNT(*) as cnt
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name IS NULL AND e.text IS NOT NULL
GROUP BY f.window_name
ORDER BY cnt DESC
LIMIT 10;"
# iTerm2 elements with any role
sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.role, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL
LIMIT 20;"
zsh: no matches found: elements?
block|25522
AXStaticText|4681
AXButton|1364
AXLink|1123
AXRadioButton|1017
AXTextField|607
AXCell|297
AXHeading|166
AXTextArea|151
AXPopUpButton|83
AXCheckBox|59
AXComboBox|7
zsh: no matches found: app_name?
|25079
zsh: command not found: #
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
AXRadioButton|APP (-zsh)
AXRadioButton|screenpipe"
AXRadioButton|Python"
AXStaticText|⌥⌘1
AXStaticText|screenpipe"
AXTextArea|Last login: Thu Apr 9 19:52:08 on ttys007
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ cd
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record
detected hardware tier: Mid
checking permissions...
screen recording: ok
microphone: ok
accessibility: ok
2026-04-09T19:53:07.212588Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-09T19:53:08.176294Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-09T19:53:08.180179Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-09T19:53:08.180172Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-09T19:53:08.180644Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-09T19:53:08.181079Z INFO screenpipe_audio::speaker::models: initiating wespeaker_en_voxceleb_CAM++.onnx model download...
2026-04-09T19:53:08.181124Z WARN screenpipe_audio::segmentation::segmentation_manager: embedding model unavailable at startup: wespeaker_en_voxceleb_CAM++.onnx model not available yet; download started in background
2026-04-09T19:53:08.181175Z INFO screenpipe_audio::speaker::models: initiating segmentation-3.0.onnx model download...
2026-04-09T19:53:08.181183Z WARN screenpipe_audio::segmentation::segmentation_manager: segmentation model unavailable at startup: segmentation-3.0.onnx model not available yet; download started in background
2026-04-09T19:53:08.181157Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model download attempt 1/3
2026-04-09T19:53:08.181223Z WARN screenpipe_audio::audio_manager::manager: silero vad unavailable, falling back to webrtc: silero vad model not available yet; download started in background
2026-04-09T19:53:08.181225Z INFO screenpipe_audio::speaker::models: downloading wespeaker_en_voxceleb_CAM++.onnx model from [URL_WITH_CREDENTIALS] ~ $
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":"ORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"\nOrder Room Service • HBO Max|Back\nOrder Room Service • HBO Max|Search\nOrder Room Service • HBO Max|Ukončiť prehrávanie\nOrder Room Service • HBO Max|Rozbaliť Epizód, 1 z 2\nOrder Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2\nOrder Room Service • HBO Max|Preskočiť dozadu o 10 s\nOrder Room Service • HBO Max|Pozastaviť\nOrder Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd\nOrder Room Service • HBO Max|Hlasitosť 100 %\nOrder Room Service • HBO Max|Nastavenia zvuku a titulkov\nOrder Room Service • HBO Max|Celá obrazovka\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|Favourites\nOrder Room Service • HBO Max|Tab Group Favourites\nOrder Room Service • HBO Max|NAS\nOrder Room Service • HBO Max|Home\nOrder Room Service • HBO Max|Portainer\nOrder Room Service • HBO Max|Nginx Proxy Manager\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?\nsqlite3 ~/.screenpipe/db.sqlite \"SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;\"\n\n# What are those 24k elements with no app_name?\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, COUNT(*) as cnt\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name IS NULL AND e.text IS NOT NULL\nGROUP BY f.window_name\nORDER BY cnt DESC\nLIMIT 10;\"\n\n# iTerm2 elements with any role\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.role, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL\nLIMIT 20;\"\nzsh: no matches found: elements?\nblock|25522\nAXStaticText|4681\nAXButton|1364\nAXLink|1123\nAXRadioButton|1017\nAXTextField|607\nAXCell|297\nAXHeading|166\nAXTextArea|151\nAXPopUpButton|83\nAXCheckBox|59\nAXComboBox|7\nzsh: no matches found: app_name?\n|25079\nzsh: command not found: #\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nAXRadioButton|APP (-zsh)\nAXRadioButton|screenpipe\"\nAXRadioButton|Python\"\nAXStaticText|⌥⌘1\nAXStaticText|screenpipe\"\nAXTextArea|Last login: Thu Apr 9 19:52:08 on ttys007\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ cd\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record\ndetected hardware tier: Mid\nchecking permissions...\n screen recording: ok\n microphone: ok\n accessibility: ok\n2026-04-09T19:53:07.212588Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6\n2026-04-09T19:53:08.176294Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor\n2026-04-09T19:53:08.180179Z INFO screenpipe: meeting detector enabled — independent of transcription mode\n2026-04-09T19:53:08.180172Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)\n2026-04-09T19:53:08.180644Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)\n2026-04-09T19:53:08.181079Z INFO screenpipe_audio::speaker::models: initiating wespeaker_en_voxceleb_CAM++.onnx model download...\n2026-04-09T19:53:08.181124Z WARN screenpipe_audio::segmentation::segmentation_manager: embedding model unavailable at startup: wespeaker_en_voxceleb_CAM++.onnx model not available yet; download started in background\n2026-04-09T19:53:08.181175Z INFO screenpipe_audio::speaker::models: initiating segmentation-3.0.onnx model download...\n2026-04-09T19:53:08.181183Z WARN screenpipe_audio::segmentation::segmentation_manager: segmentation model unavailable at startup: segmentation-3.0.onnx model not available yet; download started in background\n2026-04-09T19:53:08.181157Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model download attempt 1/3\n2026-04-09T19:53:08.181223Z WARN screenpipe_audio::audio_manager::manager: silero vad unavailable, falling back to webrtc: silero vad model not available yet; download started in background\n2026-04-09T19:53:08.181225Z INFO screenpipe_audio::speaker::models: downloading wespeaker_en_voxceleb_CAM++.onnx model from https://github.com/screenpipe/screenpipe/raw/refs/heads/main/crates/screenpipe-audio/models/pyannote/wespeaker_en_voxceleb_CAM++.onnx\n2026-04-09T19:53:08.181212Z INFO screenpipe_audio::speaker::models: segmentation-3.0.onnx model download attempt 1/3\n2026-04-09T19:53:08.181526Z INFO screenpipe_audio::speaker::models: downloading segmentation-3.0.onnx model from https://github.com/screenpipe/screenpipe/raw/refs/heads/main/crates/screenpipe-audio/models/pyannote/segmentation-3.0.onnx\n2026-04-09T19:53:08.181252Z INFO screenpipe_audio::vad::silero: downloading Silero VAD v5 model...\n2026-04-09T19:53:08.181607Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)\n2026-04-09T19:53:08.181646Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager\n2026-04-09T19:53:08.181366Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)\n2026-04-09T19:53:08.181759Z INFO screenpipe_core::pipes: installed built-in pipe: day-recap\n2026-04-09T19:53:08.181952Z INFO screenpipe_core::pipes: installed built-in pipe: standup-update\n2026-04-09T19:53:08.182315Z INFO screenpipe_core::pipes: installed built-in pipe: ai-habits\n2026-04-09T19:53:08.182501Z INFO screenpipe_core::pipes: installed built-in pipe: time-breakdown\n2026-04-09T19:53:08.182680Z INFO screenpipe_core::pipes: installed built-in pipe: video-export\n2026-04-09T19:53:08.182875Z INFO screenpipe_core::pipes: installed built-in pipe: meeting-summary\n2026-04-09T19:53:08.183091Z INFO screenpipe_core::pipes: loaded pipe: day-recap\n2026-04-09T19:53:08.183146Z INFO screenpipe_core::pipes: loaded pipe: standup-update\n2026-04-09T19:53:08.183187Z INFO screenpipe_core::pipes: loaded pipe: ai-habits\n2026-04-09T19:53:08.183237Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown\n2026-04-09T19:53:08.183306Z INFO screenpipe_core::pipes: loaded pipe: video-export\n2026-04-09T19:53:08.183363Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary\n2026-04-09T19:53:08.183380Z INFO screenpipe_core::pipes: loaded 6 pipes from \"/Users/lukas/.screenpipe/pipes\"\n\n\n\n _ \n __________________ ___ ____ ____ (_____ ___ \n / ___/ ___/ ___/ _ \\/ _ \\/ __ \\ / __ \\/ / __ \\/ _ \\\n (__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/\n/____/\\___/_/ \\___/\\___/_/ /_/ / .___/_/ .___/\\___/ \n /_/ /_/ \n\n\n\npower AI by everything you've seen, said or heard\nopen source | runs locally | developer friendly\n\n\n┌────────────────────────┬────────────────────────────────────┐\n│ setting │ value │\n├────────────────────────┼────────────────────────────────────┤\n│ audio chunk duration │ 30 seconds │\n│ port │ 3030 │\n│ audio disabled │ false │\n│ vision disabled │ false │\n│ audio engine │ Parakeet │\n│ vad engine │ Silero │\n│ data directory │ /Users/lukas/.screenpipe │\n│ debug mode │ false │\n│ telemetry │ true │\n│ use pii removal │ true │\n│ use all monitors │ true │\n│ ignored windows │ [] │\n│ included windows │ [] │\n│ cloud sync │ disabled │\n│ auto-destruct pid │ 0 │\n│ deepgram key │ not set │\n├────────────────────────┼────────────────────────────────────┤\n│ languages │ │\n│ │ all languages │\n├────────────────────────┼────────────────────────────────────┤\n│ monitors │ │\n│ │ no monitors available │\n├────────────────────────┼────────────────────────────────────┤\n│ audio devices │ │\n│ │ soundcore AeroClip (input) │\n│ │ System Audio (output) │\n└────────────────────────┴────────────────────────────────────┘\nyou are using local processing. all your data stays on your computer.\n\nwarning: telemetry is enabled. only error-level data will be sent.\nto disable, use the --disable-telemetry flag.\n\ncheck latest changes here: https://github.com/screenpipe/screenpipe/releases\n2026-04-09T19:53:08.185865Z INFO screenpipe: starting UI event capture\n2026-04-09T19:53:08.185586Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)\n2026-04-09T19:53:08.188922Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh\n2026-04-09T19:53:08.194461Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))\n2026-04-09T19:53:08.201212Z INFO screenpipe_engine::ui_recorder: Starting UI event capture\n2026-04-09T19:53:08.217633Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)\n2026-04-09T19:53:08.217794Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-08 16:53:08.217792 UTC to 2026-04-09 16:53:08.217792 UTC)\n2026-04-09T19:53:08.217649Z INFO screenpipe_engine::ui_recorder: UI recording session started: 3b59b1d1-d80e-4689-8c72-6476af4571df\n2026-04-09T19:53:08.220368Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)\n2026-04-09T19:53:08.222489Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 0 frame entries, coverage from 2026-04-08 16:53:08.217792 UTC\n2026-04-09T19:53:08.227257Z INFO screenpipe_engine::server: Server listening on 0.0.0.0:3030\n2026-04-09T19:53:08.232250Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030\n2026-04-09T19:53:08.543211Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)\n2026-04-09T19:53:08.543241Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)\n2026-04-09T19:53:08.543253Z INFO screenpipe_engine::vision_manager::manager: Skipping monitor 2 (Display 2_3008x1253_-813,-1253) — not in allowed list\n2026-04-09T19:53:08.543262Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)\n2026-04-09T19:53:08.543299Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)\n2026-04-09T19:53:09.210453Z INFO screenpipe_audio::vad::silero: Silero VAD v5 model downloaded and saved to: \"/Users/lukas/Library/Caches/screenpipe/vad/silero_vad_v5.onnx\"\n2026-04-09T19:53:09.352790Z INFO screenpipe_audio::speaker::models: saving segmentation-3.0.onnx model (5983836 bytes) to \"/Users/lukas/Library/Caches/screenpipe/models/segmentation-3.0.onnx\"\n2026-04-09T19:53:09.355799Z INFO screenpipe_audio::speaker::models: segmentation-3.0.onnx model successfully downloaded and saved\n2026-04-09T19:53:09.367746Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps)\n2026-04-09T19:53:10.102366Z INFO screenpipe_audio::speaker::models: saving wespeaker_en_voxceleb_CAM++.onnx model (29292684 bytes) to \"/Users/lukas/Library/Caches/screenpipe/models/wespeaker_en_voxceleb_CAM++.onnx\"\n2026-04-09T19:53:10.112264Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model successfully downloaded and saved\n2026-04-09T19:53:13.221908Z INFO screenpipe_engine::retention: retention: initialized with 14d retention\n2026-04-09T19:53:13.222855Z INFO screenpipe: local retention auto-enabled (14 days)\n2026-04-09T19:53:15.841867Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=1, dur=797ms\n2026-04-09T19:53:18.189478Z WARN screenpipe_audio::transcription::engine: whisper model is not available locally yet for WhisperTiny; audio transcription disabled until download completes\n2026-04-09T19:53:18.189794Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:53:18.190227Z INFO screenpipe_audio::transcription::whisper::model: downloading model \"ggml-tiny.bin\"\n2026-04-09T19:53:18.190847Z INFO screenpipe_audio::audio_manager::manager: audio manager started\n2026-04-09T19:53:18.190916Z INFO screenpipe_audio::audio_manager::manager: calendar-assisted speaker diarization: listening for meeting events\nggml-tiny.bin [00:00:01] [███████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 38.34 MiB/74.09 MiB 21.65 MiB/s (2s)2026-04-09T19:53:19.720503Z INFO screenpipe_audio::audio_manager::device_monitor: model capabilities changed after background download; restarting central handlers\n2026-04-09T19:53:19.720675Z WARN screenpipe_audio::transcription::engine: whisper model is not available locally yet for WhisperTiny; audio transcription disabled until download completes\n2026-04-09T19:53:19.720732Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:53:19.720787Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:53:19.720795Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:53:19.721204Z INFO screenpipe_audio::transcription::whisper::model: downloading model \"ggml-tiny.bin\"\nggml-tiny.bin [00:00:01] [██████████████████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 45.66 MiB/74.09 MiB 23.13 MiB/s (1s)\nggml-tiny.bin [00:00:00] [███░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 2.09 MiB/74.09 MiB 1.63 MiB/s (44s)2026-04-09T19:53:20.383627Z INFO screenpipe_audio::device::device_manager: starting recording for device: System Audio (output)\n2026-04-09T19:53:20.383837Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for System Audio (output) (30s segments)\nggml-tiny.bin [00:00:01] [██████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 9.22 MiB/74.09 MiB 4.95 MiB/s (13s)2026-04-09T19:53:20.972014Z INFO screenpipe_audio::device::device_manager: starting recording for device: soundcore AeroClip (input)\n2026-04-09T19:53:20.972101Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for soundcore AeroClip (input) (30s segments)\nggml-tiny.bin [00:00:02] [███████████████████████████████████████████████████████████████████████████████████████████████████████████████████] 74.09 MiB/74.09 MiB 28.28 MiB/s (0s)2026-04-09T19:53:21.047457Z INFO screenpipe_audio::transcription::whisper::model: model downloaded ggml-tiny.bin\n2026-04-09T19:53:21.047589Z INFO screenpipe_audio::transcription::engine: whisper model downloaded in background: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\nggml-tiny.bin [00:00:03] [███████████████████████████████████████████████████████████████████████████████████████████████████████████████████] 74.09 MiB/74.09 MiB 23.56 MiB/s (0s)2026-04-09T19:53:23.080110Z INFO screenpipe_audio::transcription::whisper::model: model downloaded ggml-tiny.bin\n2026-04-09T19:53:23.080240Z INFO screenpipe_audio::transcription::engine: whisper model downloaded in background: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:53:52.431282Z INFO screenpipe_audio::transcription::engine: whisper model available: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:53:52.431325Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)\n2026-04-09T19:53:52.431330Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...\nwhisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'\nwhisper_init_with_params_no_state: use gpu = 1\nwhisper_init_with_params_no_state: flash attn = 0\nwhisper_init_with_params_no_state: gpu_device = 0\nwhisper_init_with_params_no_state: dtw = 0\nggml_metal_device_init: tensor API disabled for pre-M5 and pre-A19 devices\nggml_metal_library_init: using embedded metal library\nggml_metal_library_init: loaded in 14.652 sec\nggml_metal_rsets_init: creating a residency set collection (keep_alive = 180 s)\nggml_metal_device_init: GPU name: Apple M1\nggml_metal_device_init: GPU family: MTLGPUFamilyApple7 (1007)\nggml_metal_device_init: GPU family: MTLGPUFamilyCommon3 (3003)\nggml_metal_device_init: GPU family: MTLGPUFamilyMetal3 (5001)\nggml_metal_device_init: simdgroup reduction = true\nggml_metal_device_init: simdgroup matrix mul. = true\nggml_metal_device_init: has unified memory = true\nggml_metal_device_init: has bfloat = true\nggml_metal_device_init: has tensor = false\nggml_metal_device_init: use residency sets = true\nggml_metal_device_init: use shared buffers = true\nggml_metal_device_init: recommendedMaxWorkingSetSize = 11453.25 MB\nwhisper_init_with_params_no_state: devices = 3\nwhisper_init_with_params_no_state: backends = 3\nwhisper_model_load: loading model\nwhisper_model_load: n_vocab = 51865\nwhisper_model_load: n_audio_ctx = 1500\nwhisper_model_load: n_audio_state = 384\nwhisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.178366Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\n2026-04-09T19:54:07.178441Z INFO screenpipe_audio::audio_manager::device_monitor: model capabilities changed after background download; restarting central handlers\n2026-04-09T19:54:07.178636Z INFO screenpipe_audio::transcription::engine: whisper model available: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:54:07.178655Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)\n2026-04-09T19:54:07.178661Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...\nwhisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'\nwhisper_init_with_params_no_state: use gpu = 1\nwhisper_init_with_params_no_state: flash attn = 0\nwhisper_init_with_params_no_state: gpu_device = 0\nwhisper_init_with_params_no_state: dtw = 0\nwhisper_init_with_params_no_state: devices = 3\nwhisper_init_with_params_no_state: backends = 3\nwhisper_model_load: loading model\nwhisper_model_load: n_vocab = 51865\nwhisper_model_load: n_audio_ctx = 1500\nwhisper_model_load: n_audio_state = 384\nwhisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"value":"ORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"\nOrder Room Service • HBO Max|Back\nOrder Room Service • HBO Max|Search\nOrder Room Service • HBO Max|Ukončiť prehrávanie\nOrder Room Service • HBO Max|Rozbaliť Epizód, 1 z 2\nOrder Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2\nOrder Room Service • HBO Max|Preskočiť dozadu o 10 s\nOrder Room Service • HBO Max|Pozastaviť\nOrder Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd\nOrder Room Service • HBO Max|Hlasitosť 100 %\nOrder Room Service • HBO Max|Nastavenia zvuku a titulkov\nOrder Room Service • HBO Max|Celá obrazovka\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|Favourites\nOrder Room Service • HBO Max|Tab Group Favourites\nOrder Room Service • HBO Max|NAS\nOrder Room Service • HBO Max|Home\nOrder Room Service • HBO Max|Portainer\nOrder Room Service • HBO Max|Nginx Proxy Manager\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?\nsqlite3 ~/.screenpipe/db.sqlite \"SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;\"\n\n# What are those 24k elements with no app_name?\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, COUNT(*) as cnt\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name IS NULL AND e.text IS NOT NULL\nGROUP BY f.window_name\nORDER BY cnt DESC\nLIMIT 10;\"\n\n# iTerm2 elements with any role\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.role, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL\nLIMIT 20;\"\nzsh: no matches found: elements?\nblock|25522\nAXStaticText|4681\nAXButton|1364\nAXLink|1123\nAXRadioButton|1017\nAXTextField|607\nAXCell|297\nAXHeading|166\nAXTextArea|151\nAXPopUpButton|83\nAXCheckBox|59\nAXComboBox|7\nzsh: no matches found: app_name?\n|25079\nzsh: command not found: #\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nAXRadioButton|APP (-zsh)\nAXRadioButton|screenpipe\"\nAXRadioButton|Python\"\nAXStaticText|⌥⌘1\nAXStaticText|screenpipe\"\nAXTextArea|Last login: Thu Apr 9 19:52:08 on ttys007\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ cd\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record\ndetected hardware tier: Mid\nchecking permissions...\n screen recording: ok\n microphone: ok\n accessibility: ok\n2026-04-09T19:53:07.212588Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6\n2026-04-09T19:53:08.176294Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor\n2026-04-09T19:53:08.180179Z INFO screenpipe: meeting detector enabled — independent of transcription mode\n2026-04-09T19:53:08.180172Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)\n2026-04-09T19:53:08.180644Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)\n2026-04-09T19:53:08.181079Z INFO screenpipe_audio::speaker::models: initiating wespeaker_en_voxceleb_CAM++.onnx model download...\n2026-04-09T19:53:08.181124Z WARN screenpipe_audio::segmentation::segmentation_manager: embedding model unavailable at startup: wespeaker_en_voxceleb_CAM++.onnx model not available yet; download started in background\n2026-04-09T19:53:08.181175Z INFO screenpipe_audio::speaker::models: initiating segmentation-3.0.onnx model download...\n2026-04-09T19:53:08.181183Z WARN screenpipe_audio::segmentation::segmentation_manager: segmentation model unavailable at startup: segmentation-3.0.onnx model not available yet; download started in background\n2026-04-09T19:53:08.181157Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model download attempt 1/3\n2026-04-09T19:53:08.181223Z WARN screenpipe_audio::audio_manager::manager: silero vad unavailable, falling back to webrtc: silero vad model not available yet; download started in background\n2026-04-09T19:53:08.181225Z INFO screenpipe_audio::speaker::models: downloading wespeaker_en_voxceleb_CAM++.onnx model from https://github.com/screenpipe/screenpipe/raw/refs/heads/main/crates/screenpipe-audio/models/pyannote/wespeaker_en_voxceleb_CAM++.onnx\n2026-04-09T19:53:08.181212Z INFO screenpipe_audio::speaker::models: segmentation-3.0.onnx model download attempt 1/3\n2026-04-09T19:53:08.181526Z INFO screenpipe_audio::speaker::models: downloading segmentation-3.0.onnx model from https://github.com/screenpipe/screenpipe/raw/refs/heads/main/crates/screenpipe-audio/models/pyannote/segmentation-3.0.onnx\n2026-04-09T19:53:08.181252Z INFO screenpipe_audio::vad::silero: downloading Silero VAD v5 model...\n2026-04-09T19:53:08.181607Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)\n2026-04-09T19:53:08.181646Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager\n2026-04-09T19:53:08.181366Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)\n2026-04-09T19:53:08.181759Z INFO screenpipe_core::pipes: installed built-in pipe: day-recap\n2026-04-09T19:53:08.181952Z INFO screenpipe_core::pipes: installed built-in pipe: standup-update\n2026-04-09T19:53:08.182315Z INFO screenpipe_core::pipes: installed built-in pipe: ai-habits\n2026-04-09T19:53:08.182501Z INFO screenpipe_core::pipes: installed built-in pipe: time-breakdown\n2026-04-09T19:53:08.182680Z INFO screenpipe_core::pipes: installed built-in pipe: video-export\n2026-04-09T19:53:08.182875Z INFO screenpipe_core::pipes: installed built-in pipe: meeting-summary\n2026-04-09T19:53:08.183091Z INFO screenpipe_core::pipes: loaded pipe: day-recap\n2026-04-09T19:53:08.183146Z INFO screenpipe_core::pipes: loaded pipe: standup-update\n2026-04-09T19:53:08.183187Z INFO screenpipe_core::pipes: loaded pipe: ai-habits\n2026-04-09T19:53:08.183237Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown\n2026-04-09T19:53:08.183306Z INFO screenpipe_core::pipes: loaded pipe: video-export\n2026-04-09T19:53:08.183363Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary\n2026-04-09T19:53:08.183380Z INFO screenpipe_core::pipes: loaded 6 pipes from \"/Users/lukas/.screenpipe/pipes\"\n\n\n\n _ \n __________________ ___ ____ ____ (_____ ___ \n / ___/ ___/ ___/ _ \\/ _ \\/ __ \\ / __ \\/ / __ \\/ _ \\\n (__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/\n/____/\\___/_/ \\___/\\___/_/ /_/ / .___/_/ .___/\\___/ \n /_/ /_/ \n\n\n\npower AI by everything you've seen, said or heard\nopen source | runs locally | developer friendly\n\n\n┌────────────────────────┬────────────────────────────────────┐\n│ setting │ value │\n├────────────────────────┼────────────────────────────────────┤\n│ audio chunk duration │ 30 seconds │\n│ port │ 3030 │\n│ audio disabled │ false │\n│ vision disabled │ false │\n│ audio engine │ Parakeet │\n│ vad engine │ Silero │\n│ data directory │ /Users/lukas/.screenpipe │\n│ debug mode │ false │\n│ telemetry │ true │\n│ use pii removal │ true │\n│ use all monitors │ true │\n│ ignored windows │ [] │\n│ included windows │ [] │\n│ cloud sync │ disabled │\n│ auto-destruct pid │ 0 │\n│ deepgram key │ not set │\n├────────────────────────┼────────────────────────────────────┤\n│ languages │ │\n│ │ all languages │\n├────────────────────────┼────────────────────────────────────┤\n│ monitors │ │\n│ │ no monitors available │\n├────────────────────────┼────────────────────────────────────┤\n│ audio devices │ │\n│ │ soundcore AeroClip (input) │\n│ │ System Audio (output) │\n└────────────────────────┴────────────────────────────────────┘\nyou are using local processing. all your data stays on your computer.\n\nwarning: telemetry is enabled. only error-level data will be sent.\nto disable, use the --disable-telemetry flag.\n\ncheck latest changes here: https://github.com/screenpipe/screenpipe/releases\n2026-04-09T19:53:08.185865Z INFO screenpipe: starting UI event capture\n2026-04-09T19:53:08.185586Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)\n2026-04-09T19:53:08.188922Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh\n2026-04-09T19:53:08.194461Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))\n2026-04-09T19:53:08.201212Z INFO screenpipe_engine::ui_recorder: Starting UI event capture\n2026-04-09T19:53:08.217633Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)\n2026-04-09T19:53:08.217794Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-08 16:53:08.217792 UTC to 2026-04-09 16:53:08.217792 UTC)\n2026-04-09T19:53:08.217649Z INFO screenpipe_engine::ui_recorder: UI recording session started: 3b59b1d1-d80e-4689-8c72-6476af4571df\n2026-04-09T19:53:08.220368Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)\n2026-04-09T19:53:08.222489Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 0 frame entries, coverage from 2026-04-08 16:53:08.217792 UTC\n2026-04-09T19:53:08.227257Z INFO screenpipe_engine::server: Server listening on 0.0.0.0:3030\n2026-04-09T19:53:08.232250Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030\n2026-04-09T19:53:08.543211Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)\n2026-04-09T19:53:08.543241Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)\n2026-04-09T19:53:08.543253Z INFO screenpipe_engine::vision_manager::manager: Skipping monitor 2 (Display 2_3008x1253_-813,-1253) — not in allowed list\n2026-04-09T19:53:08.543262Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)\n2026-04-09T19:53:08.543299Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)\n2026-04-09T19:53:09.210453Z INFO screenpipe_audio::vad::silero: Silero VAD v5 model downloaded and saved to: \"/Users/lukas/Library/Caches/screenpipe/vad/silero_vad_v5.onnx\"\n2026-04-09T19:53:09.352790Z INFO screenpipe_audio::speaker::models: saving segmentation-3.0.onnx model (5983836 bytes) to \"/Users/lukas/Library/Caches/screenpipe/models/segmentation-3.0.onnx\"\n2026-04-09T19:53:09.355799Z INFO screenpipe_audio::speaker::models: segmentation-3.0.onnx model successfully downloaded and saved\n2026-04-09T19:53:09.367746Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps)\n2026-04-09T19:53:10.102366Z INFO screenpipe_audio::speaker::models: saving wespeaker_en_voxceleb_CAM++.onnx model (29292684 bytes) to \"/Users/lukas/Library/Caches/screenpipe/models/wespeaker_en_voxceleb_CAM++.onnx\"\n2026-04-09T19:53:10.112264Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model successfully downloaded and saved\n2026-04-09T19:53:13.221908Z INFO screenpipe_engine::retention: retention: initialized with 14d retention\n2026-04-09T19:53:13.222855Z INFO screenpipe: local retention auto-enabled (14 days)\n2026-04-09T19:53:15.841867Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=1, dur=797ms\n2026-04-09T19:53:18.189478Z WARN screenpipe_audio::transcription::engine: whisper model is not available locally yet for WhisperTiny; audio transcription disabled until download completes\n2026-04-09T19:53:18.189794Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:53:18.190227Z INFO screenpipe_audio::transcription::whisper::model: downloading model \"ggml-tiny.bin\"\n2026-04-09T19:53:18.190847Z INFO screenpipe_audio::audio_manager::manager: audio manager started\n2026-04-09T19:53:18.190916Z INFO screenpipe_audio::audio_manager::manager: calendar-assisted speaker diarization: listening for meeting events\nggml-tiny.bin [00:00:01] [███████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 38.34 MiB/74.09 MiB 21.65 MiB/s (2s)2026-04-09T19:53:19.720503Z INFO screenpipe_audio::audio_manager::device_monitor: model capabilities changed after background download; restarting central handlers\n2026-04-09T19:53:19.720675Z WARN screenpipe_audio::transcription::engine: whisper model is not available locally yet for WhisperTiny; audio transcription disabled until download completes\n2026-04-09T19:53:19.720732Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:53:19.720787Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:53:19.720795Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:53:19.721204Z INFO screenpipe_audio::transcription::whisper::model: downloading model \"ggml-tiny.bin\"\nggml-tiny.bin [00:00:01] [██████████████████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 45.66 MiB/74.09 MiB 23.13 MiB/s (1s)\nggml-tiny.bin [00:00:00] [███░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 2.09 MiB/74.09 MiB 1.63 MiB/s (44s)2026-04-09T19:53:20.383627Z INFO screenpipe_audio::device::device_manager: starting recording for device: System Audio (output)\n2026-04-09T19:53:20.383837Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for System Audio (output) (30s segments)\nggml-tiny.bin [00:00:01] [██████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 9.22 MiB/74.09 MiB 4.95 MiB/s (13s)2026-04-09T19:53:20.972014Z INFO screenpipe_audio::device::device_manager: starting recording for device: soundcore AeroClip (input)\n2026-04-09T19:53:20.972101Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for soundcore AeroClip (input) (30s segments)\nggml-tiny.bin [00:00:02] [███████████████████████████████████████████████████████████████████████████████████████████████████████████████████] 74.09 MiB/74.09 MiB 28.28 MiB/s (0s)2026-04-09T19:53:21.047457Z INFO screenpipe_audio::transcription::whisper::model: model downloaded ggml-tiny.bin\n2026-04-09T19:53:21.047589Z INFO screenpipe_audio::transcription::engine: whisper model downloaded in background: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\nggml-tiny.bin [00:00:03] [███████████████████████████████████████████████████████████████████████████████████████████████████████████████████] 74.09 MiB/74.09 MiB 23.56 MiB/s (0s)2026-04-09T19:53:23.080110Z INFO screenpipe_audio::transcription::whisper::model: model downloaded ggml-tiny.bin\n2026-04-09T19:53:23.080240Z INFO screenpipe_audio::transcription::engine: whisper model downloaded in background: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:53:52.431282Z INFO screenpipe_audio::transcription::engine: whisper model available: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:53:52.431325Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)\n2026-04-09T19:53:52.431330Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...\nwhisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'\nwhisper_init_with_params_no_state: use gpu = 1\nwhisper_init_with_params_no_state: flash attn = 0\nwhisper_init_with_params_no_state: gpu_device = 0\nwhisper_init_with_params_no_state: dtw = 0\nggml_metal_device_init: tensor API disabled for pre-M5 and pre-A19 devices\nggml_metal_library_init: using embedded metal library\nggml_metal_library_init: loaded in 14.652 sec\nggml_metal_rsets_init: creating a residency set collection (keep_alive = 180 s)\nggml_metal_device_init: GPU name: Apple M1\nggml_metal_device_init: GPU family: MTLGPUFamilyApple7 (1007)\nggml_metal_device_init: GPU family: MTLGPUFamilyCommon3 (3003)\nggml_metal_device_init: GPU family: MTLGPUFamilyMetal3 (5001)\nggml_metal_device_init: simdgroup reduction = true\nggml_metal_device_init: simdgroup matrix mul. = true\nggml_metal_device_init: has unified memory = true\nggml_metal_device_init: has bfloat = true\nggml_metal_device_init: has tensor = false\nggml_metal_device_init: use residency sets = true\nggml_metal_device_init: use shared buffers = true\nggml_metal_device_init: recommendedMaxWorkingSetSize = 11453.25 MB\nwhisper_init_with_params_no_state: devices = 3\nwhisper_init_with_params_no_state: backends = 3\nwhisper_model_load: loading model\nwhisper_model_load: n_vocab = 51865\nwhisper_model_load: n_audio_ctx = 1500\nwhisper_model_load: n_audio_state = 384\nwhisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.178366Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\n2026-04-09T19:54:07.178441Z INFO screenpipe_audio::audio_manager::device_monitor: model capabilities changed after background download; restarting central handlers\n2026-04-09T19:54:07.178636Z INFO screenpipe_audio::transcription::engine: whisper model available: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:54:07.178655Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)\n2026-04-09T19:54:07.178661Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...\nwhisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'\nwhisper_init_with_params_no_state: use gpu = 1\nwhisper_init_with_params_no_state: flash attn = 0\nwhisper_init_with_params_no_state: gpu_device = 0\nwhisper_init_with_params_no_state: dtw = 0\nwhisper_init_with_params_no_state: devices = 3\nwhisper_init_with_params_no_state: backends = 3\nwhisper_model_load: loading model\nwhisper_model_load: n_vocab = 51865\nwhisper_model_load: n_audio_ctx = 1500\nwhisper_model_load: n_audio_state = 384\nwhisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
1614245617554003222
|
3100541190118501737
|
visual_change
|
accessibility
|
NULL
|
ORDER BY elements DESC;"
|24604|206
Dia|2884|1 ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
Order Room Service • HBO Max|Back
Order Room Service • HBO Max|Search
Order Room Service • HBO Max|Ukončiť prehrávanie
Order Room Service • HBO Max|Rozbaliť Epizód, 1 z 2
Order Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2
Order Room Service • HBO Max|Preskočiť dozadu o 10 s
Order Room Service • HBO Max|Pozastaviť
Order Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd
Order Room Service • HBO Max|Hlasitosť 100 %
Order Room Service • HBO Max|Nastavenia zvuku a titulkov
Order Room Service • HBO Max|Celá obrazovka
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|Favourites
Order Room Service • HBO Max|Tab Group Favourites
Order Room Service • HBO Max|NAS
Order Room Service • HBO Max|Home
Order Room Service • HBO Max|Portainer
Order Room Service • HBO Max|Nginx Proxy Manager
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?
sqlite3 ~/.screenpipe/db.sqlite "SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;"
# What are those 24k elements with no app_name?
sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, COUNT(*) as cnt
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name IS NULL AND e.text IS NOT NULL
GROUP BY f.window_name
ORDER BY cnt DESC
LIMIT 10;"
# iTerm2 elements with any role
sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.role, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL
LIMIT 20;"
zsh: no matches found: elements?
block|25522
AXStaticText|4681
AXButton|1364
AXLink|1123
AXRadioButton|1017
AXTextField|607
AXCell|297
AXHeading|166
AXTextArea|151
AXPopUpButton|83
AXCheckBox|59
AXComboBox|7
zsh: no matches found: app_name?
|25079
zsh: command not found: #
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
AXRadioButton|APP (-zsh)
AXRadioButton|screenpipe"
AXRadioButton|Python"
AXStaticText|⌥⌘1
AXStaticText|screenpipe"
AXTextArea|Last login: Thu Apr 9 19:52:08 on ttys007
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ cd
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record
detected hardware tier: Mid
checking permissions...
screen recording: ok
microphone: ok
accessibility: ok
2026-04-09T19:53:07.212588Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-09T19:53:08.176294Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-09T19:53:08.180179Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-09T19:53:08.180172Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-09T19:53:08.180644Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-09T19:53:08.181079Z INFO screenpipe_audio::speaker::models: initiating wespeaker_en_voxceleb_CAM++.onnx model download...
2026-04-09T19:53:08.181124Z WARN screenpipe_audio::segmentation::segmentation_manager: embedding model unavailable at startup: wespeaker_en_voxceleb_CAM++.onnx model not available yet; download started in background
2026-04-09T19:53:08.181175Z INFO screenpipe_audio::speaker::models: initiating segmentation-3.0.onnx model download...
2026-04-09T19:53:08.181183Z WARN screenpipe_audio::segmentation::segmentation_manager: segmentation model unavailable at startup: segmentation-3.0.onnx model not available yet; download started in background
2026-04-09T19:53:08.181157Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model download attempt 1/3
2026-04-09T19:53:08.181223Z WARN screenpipe_audio::audio_manager::manager: silero vad unavailable, falling back to webrtc: silero vad model not available yet; download started in background
2026-04-09T19:53:08.181225Z INFO screenpipe_audio::speaker::models: downloading wespeaker_en_voxceleb_CAM++.onnx model from [URL_WITH_CREDENTIALS] ~ $
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
|
|
827
|
NULL
|
0
|
2026-04-11T12:23:54.953890+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910234953_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
ORDER BY elements DESC;"
|24604|206
Dia|2884|1 ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
Order Room Service • HBO Max|Back
Order Room Service • HBO Max|Search
Order Room Service • HBO Max|Ukončiť prehrávanie
Order Room Service • HBO Max|Rozbaliť Epizód, 1 z 2
Order Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2
Order Room Service • HBO Max|Preskočiť dozadu o 10 s
Order Room Service • HBO Max|Pozastaviť
Order Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd
Order Room Service • HBO Max|Hlasitosť 100 %
Order Room Service • HBO Max|Nastavenia zvuku a titulkov
Order Room Service • HBO Max|Celá obrazovka
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|Favourites
Order Room Service • HBO Max|Tab Group Favourites
Order Room Service • HBO Max|NAS
Order Room Service • HBO Max|Home
Order Room Service • HBO Max|Portainer
Order Room Service • HBO Max|Nginx Proxy Manager
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?
sqlite3 ~/.screenpipe/db.sqlite "SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;"
# What are those 24k elements with no app_name?
sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, COUNT(*) as cnt
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name IS NULL AND e.text IS NOT NULL
GROUP BY f.window_name
ORDER BY cnt DESC
LIMIT 10;"
# iTerm2 elements with any role
sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.role, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL
LIMIT 20;"
zsh: no matches found: elements?
block|25522
AXStaticText|4681
AXButton|1364
AXLink|1123
AXRadioButton|1017
AXTextField|607
AXCell|297
AXHeading|166
AXTextArea|151
AXPopUpButton|83
AXCheckBox|59
AXComboBox|7
zsh: no matches found: app_name?
|25079
zsh: command not found: #
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
AXRadioButton|APP (-zsh)
AXRadioButton|screenpipe"
AXRadioButton|Python"
AXStaticText|⌥⌘1
AXStaticText|screenpipe"
AXTextArea|Last login: Thu Apr 9 19:52:08 on ttys007
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ cd
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record
detected hardware tier: Mid
checking permissions...
screen recording: ok
microphone: ok
accessibility: ok
2026-04-09T19:53:07.212588Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-09T19:53:08.176294Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-09T19:53:08.180179Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-09T19:53:08.180172Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-09T19:53:08.180644Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-09T19:53:08.181079Z INFO screenpipe_audio::speaker::models: initiating wespeaker_en_voxceleb_CAM++.onnx model download...
2026-04-09T19:53:08.181124Z WARN screenpipe_audio::segmentation::segmentation_manager: embedding model unavailable at startup: wespeaker_en_voxceleb_CAM++.onnx model not available yet; download started in background
2026-04-09T19:53:08.181175Z INFO screenpipe_audio::speaker::models: initiating segmentation-3.0.onnx model download...
2026-04-09T19:53:08.181183Z WARN screenpipe_audio::segmentation::segmentation_manager: segmentation model unavailable at startup: segmentation-3.0.onnx model not available yet; download started in background
2026-04-09T19:53:08.181157Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model download attempt 1/3
2026-04-09T19:53:08.181223Z WARN screenpipe_audio::audio_manager::manager: silero vad unavailable, falling back to webrtc: silero vad model not available yet; download started in background
2026-04-09T19:53:08.181225Z INFO screenpipe_audio::speaker::models: downloading wespeaker_en_voxceleb_CAM++.onnx model from [URL_WITH_CREDENTIALS] ~ $
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":"ORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"\nOrder Room Service • HBO Max|Back\nOrder Room Service • HBO Max|Search\nOrder Room Service • HBO Max|Ukončiť prehrávanie\nOrder Room Service • HBO Max|Rozbaliť Epizód, 1 z 2\nOrder Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2\nOrder Room Service • HBO Max|Preskočiť dozadu o 10 s\nOrder Room Service • HBO Max|Pozastaviť\nOrder Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd\nOrder Room Service • HBO Max|Hlasitosť 100 %\nOrder Room Service • HBO Max|Nastavenia zvuku a titulkov\nOrder Room Service • HBO Max|Celá obrazovka\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|Favourites\nOrder Room Service • HBO Max|Tab Group Favourites\nOrder Room Service • HBO Max|NAS\nOrder Room Service • HBO Max|Home\nOrder Room Service • HBO Max|Portainer\nOrder Room Service • HBO Max|Nginx Proxy Manager\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?\nsqlite3 ~/.screenpipe/db.sqlite \"SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;\"\n\n# What are those 24k elements with no app_name?\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, COUNT(*) as cnt\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name IS NULL AND e.text IS NOT NULL\nGROUP BY f.window_name\nORDER BY cnt DESC\nLIMIT 10;\"\n\n# iTerm2 elements with any role\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.role, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL\nLIMIT 20;\"\nzsh: no matches found: elements?\nblock|25522\nAXStaticText|4681\nAXButton|1364\nAXLink|1123\nAXRadioButton|1017\nAXTextField|607\nAXCell|297\nAXHeading|166\nAXTextArea|151\nAXPopUpButton|83\nAXCheckBox|59\nAXComboBox|7\nzsh: no matches found: app_name?\n|25079\nzsh: command not found: #\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nAXRadioButton|APP (-zsh)\nAXRadioButton|screenpipe\"\nAXRadioButton|Python\"\nAXStaticText|⌥⌘1\nAXStaticText|screenpipe\"\nAXTextArea|Last login: Thu Apr 9 19:52:08 on ttys007\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ cd\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record\ndetected hardware tier: Mid\nchecking permissions...\n screen recording: ok\n microphone: ok\n accessibility: ok\n2026-04-09T19:53:07.212588Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6\n2026-04-09T19:53:08.176294Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor\n2026-04-09T19:53:08.180179Z INFO screenpipe: meeting detector enabled — independent of transcription mode\n2026-04-09T19:53:08.180172Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)\n2026-04-09T19:53:08.180644Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)\n2026-04-09T19:53:08.181079Z INFO screenpipe_audio::speaker::models: initiating wespeaker_en_voxceleb_CAM++.onnx model download...\n2026-04-09T19:53:08.181124Z WARN screenpipe_audio::segmentation::segmentation_manager: embedding model unavailable at startup: wespeaker_en_voxceleb_CAM++.onnx model not available yet; download started in background\n2026-04-09T19:53:08.181175Z INFO screenpipe_audio::speaker::models: initiating segmentation-3.0.onnx model download...\n2026-04-09T19:53:08.181183Z WARN screenpipe_audio::segmentation::segmentation_manager: segmentation model unavailable at startup: segmentation-3.0.onnx model not available yet; download started in background\n2026-04-09T19:53:08.181157Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model download attempt 1/3\n2026-04-09T19:53:08.181223Z WARN screenpipe_audio::audio_manager::manager: silero vad unavailable, falling back to webrtc: silero vad model not available yet; download started in background\n2026-04-09T19:53:08.181225Z INFO screenpipe_audio::speaker::models: downloading wespeaker_en_voxceleb_CAM++.onnx model from https://github.com/screenpipe/screenpipe/raw/refs/heads/main/crates/screenpipe-audio/models/pyannote/wespeaker_en_voxceleb_CAM++.onnx\n2026-04-09T19:53:08.181212Z INFO screenpipe_audio::speaker::models: segmentation-3.0.onnx model download attempt 1/3\n2026-04-09T19:53:08.181526Z INFO screenpipe_audio::speaker::models: downloading segmentation-3.0.onnx model from https://github.com/screenpipe/screenpipe/raw/refs/heads/main/crates/screenpipe-audio/models/pyannote/segmentation-3.0.onnx\n2026-04-09T19:53:08.181252Z INFO screenpipe_audio::vad::silero: downloading Silero VAD v5 model...\n2026-04-09T19:53:08.181607Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)\n2026-04-09T19:53:08.181646Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager\n2026-04-09T19:53:08.181366Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)\n2026-04-09T19:53:08.181759Z INFO screenpipe_core::pipes: installed built-in pipe: day-recap\n2026-04-09T19:53:08.181952Z INFO screenpipe_core::pipes: installed built-in pipe: standup-update\n2026-04-09T19:53:08.182315Z INFO screenpipe_core::pipes: installed built-in pipe: ai-habits\n2026-04-09T19:53:08.182501Z INFO screenpipe_core::pipes: installed built-in pipe: time-breakdown\n2026-04-09T19:53:08.182680Z INFO screenpipe_core::pipes: installed built-in pipe: video-export\n2026-04-09T19:53:08.182875Z INFO screenpipe_core::pipes: installed built-in pipe: meeting-summary\n2026-04-09T19:53:08.183091Z INFO screenpipe_core::pipes: loaded pipe: day-recap\n2026-04-09T19:53:08.183146Z INFO screenpipe_core::pipes: loaded pipe: standup-update\n2026-04-09T19:53:08.183187Z INFO screenpipe_core::pipes: loaded pipe: ai-habits\n2026-04-09T19:53:08.183237Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown\n2026-04-09T19:53:08.183306Z INFO screenpipe_core::pipes: loaded pipe: video-export\n2026-04-09T19:53:08.183363Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary\n2026-04-09T19:53:08.183380Z INFO screenpipe_core::pipes: loaded 6 pipes from \"/Users/lukas/.screenpipe/pipes\"\n\n\n\n _ \n __________________ ___ ____ ____ (_____ ___ \n / ___/ ___/ ___/ _ \\/ _ \\/ __ \\ / __ \\/ / __ \\/ _ \\\n (__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/\n/____/\\___/_/ \\___/\\___/_/ /_/ / .___/_/ .___/\\___/ \n /_/ /_/ \n\n\n\npower AI by everything you've seen, said or heard\nopen source | runs locally | developer friendly\n\n\n┌────────────────────────┬────────────────────────────────────┐\n│ setting │ value │\n├────────────────────────┼────────────────────────────────────┤\n│ audio chunk duration │ 30 seconds │\n│ port │ 3030 │\n│ audio disabled │ false │\n│ vision disabled │ false │\n│ audio engine │ Parakeet │\n│ vad engine │ Silero │\n│ data directory │ /Users/lukas/.screenpipe │\n│ debug mode │ false │\n│ telemetry │ true │\n│ use pii removal │ true │\n│ use all monitors │ true │\n│ ignored windows │ [] │\n│ included windows │ [] │\n│ cloud sync │ disabled │\n│ auto-destruct pid │ 0 │\n│ deepgram key │ not set │\n├────────────────────────┼────────────────────────────────────┤\n│ languages │ │\n│ │ all languages │\n├────────────────────────┼────────────────────────────────────┤\n│ monitors │ │\n│ │ no monitors available │\n├────────────────────────┼────────────────────────────────────┤\n│ audio devices │ │\n│ │ soundcore AeroClip (input) │\n│ │ System Audio (output) │\n└────────────────────────┴────────────────────────────────────┘\nyou are using local processing. all your data stays on your computer.\n\nwarning: telemetry is enabled. only error-level data will be sent.\nto disable, use the --disable-telemetry flag.\n\ncheck latest changes here: https://github.com/screenpipe/screenpipe/releases\n2026-04-09T19:53:08.185865Z INFO screenpipe: starting UI event capture\n2026-04-09T19:53:08.185586Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)\n2026-04-09T19:53:08.188922Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh\n2026-04-09T19:53:08.194461Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))\n2026-04-09T19:53:08.201212Z INFO screenpipe_engine::ui_recorder: Starting UI event capture\n2026-04-09T19:53:08.217633Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)\n2026-04-09T19:53:08.217794Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-08 16:53:08.217792 UTC to 2026-04-09 16:53:08.217792 UTC)\n2026-04-09T19:53:08.217649Z INFO screenpipe_engine::ui_recorder: UI recording session started: 3b59b1d1-d80e-4689-8c72-6476af4571df\n2026-04-09T19:53:08.220368Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)\n2026-04-09T19:53:08.222489Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 0 frame entries, coverage from 2026-04-08 16:53:08.217792 UTC\n2026-04-09T19:53:08.227257Z INFO screenpipe_engine::server: Server listening on 0.0.0.0:3030\n2026-04-09T19:53:08.232250Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030\n2026-04-09T19:53:08.543211Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)\n2026-04-09T19:53:08.543241Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)\n2026-04-09T19:53:08.543253Z INFO screenpipe_engine::vision_manager::manager: Skipping monitor 2 (Display 2_3008x1253_-813,-1253) — not in allowed list\n2026-04-09T19:53:08.543262Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)\n2026-04-09T19:53:08.543299Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)\n2026-04-09T19:53:09.210453Z INFO screenpipe_audio::vad::silero: Silero VAD v5 model downloaded and saved to: \"/Users/lukas/Library/Caches/screenpipe/vad/silero_vad_v5.onnx\"\n2026-04-09T19:53:09.352790Z INFO screenpipe_audio::speaker::models: saving segmentation-3.0.onnx model (5983836 bytes) to \"/Users/lukas/Library/Caches/screenpipe/models/segmentation-3.0.onnx\"\n2026-04-09T19:53:09.355799Z INFO screenpipe_audio::speaker::models: segmentation-3.0.onnx model successfully downloaded and saved\n2026-04-09T19:53:09.367746Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps)\n2026-04-09T19:53:10.102366Z INFO screenpipe_audio::speaker::models: saving wespeaker_en_voxceleb_CAM++.onnx model (29292684 bytes) to \"/Users/lukas/Library/Caches/screenpipe/models/wespeaker_en_voxceleb_CAM++.onnx\"\n2026-04-09T19:53:10.112264Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model successfully downloaded and saved\n2026-04-09T19:53:13.221908Z INFO screenpipe_engine::retention: retention: initialized with 14d retention\n2026-04-09T19:53:13.222855Z INFO screenpipe: local retention auto-enabled (14 days)\n2026-04-09T19:53:15.841867Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=1, dur=797ms\n2026-04-09T19:53:18.189478Z WARN screenpipe_audio::transcription::engine: whisper model is not available locally yet for WhisperTiny; audio transcription disabled until download completes\n2026-04-09T19:53:18.189794Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:53:18.190227Z INFO screenpipe_audio::transcription::whisper::model: downloading model \"ggml-tiny.bin\"\n2026-04-09T19:53:18.190847Z INFO screenpipe_audio::audio_manager::manager: audio manager started\n2026-04-09T19:53:18.190916Z INFO screenpipe_audio::audio_manager::manager: calendar-assisted speaker diarization: listening for meeting events\nggml-tiny.bin [00:00:01] [███████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 38.34 MiB/74.09 MiB 21.65 MiB/s (2s)2026-04-09T19:53:19.720503Z INFO screenpipe_audio::audio_manager::device_monitor: model capabilities changed after background download; restarting central handlers\n2026-04-09T19:53:19.720675Z WARN screenpipe_audio::transcription::engine: whisper model is not available locally yet for WhisperTiny; audio transcription disabled until download completes\n2026-04-09T19:53:19.720732Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:53:19.720787Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:53:19.720795Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:53:19.721204Z INFO screenpipe_audio::transcription::whisper::model: downloading model \"ggml-tiny.bin\"\nggml-tiny.bin [00:00:01] [██████████████████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 45.66 MiB/74.09 MiB 23.13 MiB/s (1s)\nggml-tiny.bin [00:00:00] [███░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 2.09 MiB/74.09 MiB 1.63 MiB/s (44s)2026-04-09T19:53:20.383627Z INFO screenpipe_audio::device::device_manager: starting recording for device: System Audio (output)\n2026-04-09T19:53:20.383837Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for System Audio (output) (30s segments)\nggml-tiny.bin [00:00:01] [██████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 9.22 MiB/74.09 MiB 4.95 MiB/s (13s)2026-04-09T19:53:20.972014Z INFO screenpipe_audio::device::device_manager: starting recording for device: soundcore AeroClip (input)\n2026-04-09T19:53:20.972101Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for soundcore AeroClip (input) (30s segments)\nggml-tiny.bin [00:00:02] [███████████████████████████████████████████████████████████████████████████████████████████████████████████████████] 74.09 MiB/74.09 MiB 28.28 MiB/s (0s)2026-04-09T19:53:21.047457Z INFO screenpipe_audio::transcription::whisper::model: model downloaded ggml-tiny.bin\n2026-04-09T19:53:21.047589Z INFO screenpipe_audio::transcription::engine: whisper model downloaded in background: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\nggml-tiny.bin [00:00:03] [███████████████████████████████████████████████████████████████████████████████████████████████████████████████████] 74.09 MiB/74.09 MiB 23.56 MiB/s (0s)2026-04-09T19:53:23.080110Z INFO screenpipe_audio::transcription::whisper::model: model downloaded ggml-tiny.bin\n2026-04-09T19:53:23.080240Z INFO screenpipe_audio::transcription::engine: whisper model downloaded in background: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:53:52.431282Z INFO screenpipe_audio::transcription::engine: whisper model available: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:53:52.431325Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)\n2026-04-09T19:53:52.431330Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...\nwhisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'\nwhisper_init_with_params_no_state: use gpu = 1\nwhisper_init_with_params_no_state: flash attn = 0\nwhisper_init_with_params_no_state: gpu_device = 0\nwhisper_init_with_params_no_state: dtw = 0\nggml_metal_device_init: tensor API disabled for pre-M5 and pre-A19 devices\nggml_metal_library_init: using embedded metal library\nggml_metal_library_init: loaded in 14.652 sec\nggml_metal_rsets_init: creating a residency set collection (keep_alive = 180 s)\nggml_metal_device_init: GPU name: Apple M1\nggml_metal_device_init: GPU family: MTLGPUFamilyApple7 (1007)\nggml_metal_device_init: GPU family: MTLGPUFamilyCommon3 (3003)\nggml_metal_device_init: GPU family: MTLGPUFamilyMetal3 (5001)\nggml_metal_device_init: simdgroup reduction = true\nggml_metal_device_init: simdgroup matrix mul. = true\nggml_metal_device_init: has unified memory = true\nggml_metal_device_init: has bfloat = true\nggml_metal_device_init: has tensor = false\nggml_metal_device_init: use residency sets = true\nggml_metal_device_init: use shared buffers = true\nggml_metal_device_init: recommendedMaxWorkingSetSize = 11453.25 MB\nwhisper_init_with_params_no_state: devices = 3\nwhisper_init_with_params_no_state: backends = 3\nwhisper_model_load: loading model\nwhisper_model_load: n_vocab = 51865\nwhisper_model_load: n_audio_ctx = 1500\nwhisper_model_load: n_audio_state = 384\nwhisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.178366Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\n2026-04-09T19:54:07.178441Z INFO screenpipe_audio::audio_manager::device_monitor: model capabilities changed after background download; restarting central handlers\n2026-04-09T19:54:07.178636Z INFO screenpipe_audio::transcription::engine: whisper model available: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:54:07.178655Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)\n2026-04-09T19:54:07.178661Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...\nwhisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'\nwhisper_init_with_params_no_state: use gpu = 1\nwhisper_init_with_params_no_state: flash attn = 0\nwhisper_init_with_params_no_state: gpu_device = 0\nwhisper_init_with_params_no_state: dtw = 0\nwhisper_init_with_params_no_state: devices = 3\nwhisper_init_with_params_no_state: backends = 3\nwhisper_model_load: loading model\nwhisper_model_load: n_vocab = 51865\nwhisper_model_load: n_audio_ctx = 1500\nwhisper_model_load: n_audio_state = 384\nwhisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"value":"ORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"\nOrder Room Service • HBO Max|Back\nOrder Room Service • HBO Max|Search\nOrder Room Service • HBO Max|Ukončiť prehrávanie\nOrder Room Service • HBO Max|Rozbaliť Epizód, 1 z 2\nOrder Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2\nOrder Room Service • HBO Max|Preskočiť dozadu o 10 s\nOrder Room Service • HBO Max|Pozastaviť\nOrder Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd\nOrder Room Service • HBO Max|Hlasitosť 100 %\nOrder Room Service • HBO Max|Nastavenia zvuku a titulkov\nOrder Room Service • HBO Max|Celá obrazovka\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|Favourites\nOrder Room Service • HBO Max|Tab Group Favourites\nOrder Room Service • HBO Max|NAS\nOrder Room Service • HBO Max|Home\nOrder Room Service • HBO Max|Portainer\nOrder Room Service • HBO Max|Nginx Proxy Manager\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?\nsqlite3 ~/.screenpipe/db.sqlite \"SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;\"\n\n# What are those 24k elements with no app_name?\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, COUNT(*) as cnt\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name IS NULL AND e.text IS NOT NULL\nGROUP BY f.window_name\nORDER BY cnt DESC\nLIMIT 10;\"\n\n# iTerm2 elements with any role\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.role, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL\nLIMIT 20;\"\nzsh: no matches found: elements?\nblock|25522\nAXStaticText|4681\nAXButton|1364\nAXLink|1123\nAXRadioButton|1017\nAXTextField|607\nAXCell|297\nAXHeading|166\nAXTextArea|151\nAXPopUpButton|83\nAXCheckBox|59\nAXComboBox|7\nzsh: no matches found: app_name?\n|25079\nzsh: command not found: #\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nAXRadioButton|APP (-zsh)\nAXRadioButton|screenpipe\"\nAXRadioButton|Python\"\nAXStaticText|⌥⌘1\nAXStaticText|screenpipe\"\nAXTextArea|Last login: Thu Apr 9 19:52:08 on ttys007\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ cd\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record\ndetected hardware tier: Mid\nchecking permissions...\n screen recording: ok\n microphone: ok\n accessibility: ok\n2026-04-09T19:53:07.212588Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6\n2026-04-09T19:53:08.176294Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor\n2026-04-09T19:53:08.180179Z INFO screenpipe: meeting detector enabled — independent of transcription mode\n2026-04-09T19:53:08.180172Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)\n2026-04-09T19:53:08.180644Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)\n2026-04-09T19:53:08.181079Z INFO screenpipe_audio::speaker::models: initiating wespeaker_en_voxceleb_CAM++.onnx model download...\n2026-04-09T19:53:08.181124Z WARN screenpipe_audio::segmentation::segmentation_manager: embedding model unavailable at startup: wespeaker_en_voxceleb_CAM++.onnx model not available yet; download started in background\n2026-04-09T19:53:08.181175Z INFO screenpipe_audio::speaker::models: initiating segmentation-3.0.onnx model download...\n2026-04-09T19:53:08.181183Z WARN screenpipe_audio::segmentation::segmentation_manager: segmentation model unavailable at startup: segmentation-3.0.onnx model not available yet; download started in background\n2026-04-09T19:53:08.181157Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model download attempt 1/3\n2026-04-09T19:53:08.181223Z WARN screenpipe_audio::audio_manager::manager: silero vad unavailable, falling back to webrtc: silero vad model not available yet; download started in background\n2026-04-09T19:53:08.181225Z INFO screenpipe_audio::speaker::models: downloading wespeaker_en_voxceleb_CAM++.onnx model from https://github.com/screenpipe/screenpipe/raw/refs/heads/main/crates/screenpipe-audio/models/pyannote/wespeaker_en_voxceleb_CAM++.onnx\n2026-04-09T19:53:08.181212Z INFO screenpipe_audio::speaker::models: segmentation-3.0.onnx model download attempt 1/3\n2026-04-09T19:53:08.181526Z INFO screenpipe_audio::speaker::models: downloading segmentation-3.0.onnx model from https://github.com/screenpipe/screenpipe/raw/refs/heads/main/crates/screenpipe-audio/models/pyannote/segmentation-3.0.onnx\n2026-04-09T19:53:08.181252Z INFO screenpipe_audio::vad::silero: downloading Silero VAD v5 model...\n2026-04-09T19:53:08.181607Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)\n2026-04-09T19:53:08.181646Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager\n2026-04-09T19:53:08.181366Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)\n2026-04-09T19:53:08.181759Z INFO screenpipe_core::pipes: installed built-in pipe: day-recap\n2026-04-09T19:53:08.181952Z INFO screenpipe_core::pipes: installed built-in pipe: standup-update\n2026-04-09T19:53:08.182315Z INFO screenpipe_core::pipes: installed built-in pipe: ai-habits\n2026-04-09T19:53:08.182501Z INFO screenpipe_core::pipes: installed built-in pipe: time-breakdown\n2026-04-09T19:53:08.182680Z INFO screenpipe_core::pipes: installed built-in pipe: video-export\n2026-04-09T19:53:08.182875Z INFO screenpipe_core::pipes: installed built-in pipe: meeting-summary\n2026-04-09T19:53:08.183091Z INFO screenpipe_core::pipes: loaded pipe: day-recap\n2026-04-09T19:53:08.183146Z INFO screenpipe_core::pipes: loaded pipe: standup-update\n2026-04-09T19:53:08.183187Z INFO screenpipe_core::pipes: loaded pipe: ai-habits\n2026-04-09T19:53:08.183237Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown\n2026-04-09T19:53:08.183306Z INFO screenpipe_core::pipes: loaded pipe: video-export\n2026-04-09T19:53:08.183363Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary\n2026-04-09T19:53:08.183380Z INFO screenpipe_core::pipes: loaded 6 pipes from \"/Users/lukas/.screenpipe/pipes\"\n\n\n\n _ \n __________________ ___ ____ ____ (_____ ___ \n / ___/ ___/ ___/ _ \\/ _ \\/ __ \\ / __ \\/ / __ \\/ _ \\\n (__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/\n/____/\\___/_/ \\___/\\___/_/ /_/ / .___/_/ .___/\\___/ \n /_/ /_/ \n\n\n\npower AI by everything you've seen, said or heard\nopen source | runs locally | developer friendly\n\n\n┌────────────────────────┬────────────────────────────────────┐\n│ setting │ value │\n├────────────────────────┼────────────────────────────────────┤\n│ audio chunk duration │ 30 seconds │\n│ port │ 3030 │\n│ audio disabled │ false │\n│ vision disabled │ false │\n│ audio engine │ Parakeet │\n│ vad engine │ Silero │\n│ data directory │ /Users/lukas/.screenpipe │\n│ debug mode │ false │\n│ telemetry │ true │\n│ use pii removal │ true │\n│ use all monitors │ true │\n│ ignored windows │ [] │\n│ included windows │ [] │\n│ cloud sync │ disabled │\n│ auto-destruct pid │ 0 │\n│ deepgram key │ not set │\n├────────────────────────┼────────────────────────────────────┤\n│ languages │ │\n│ │ all languages │\n├────────────────────────┼────────────────────────────────────┤\n│ monitors │ │\n│ │ no monitors available │\n├────────────────────────┼────────────────────────────────────┤\n│ audio devices │ │\n│ │ soundcore AeroClip (input) │\n│ │ System Audio (output) │\n└────────────────────────┴────────────────────────────────────┘\nyou are using local processing. all your data stays on your computer.\n\nwarning: telemetry is enabled. only error-level data will be sent.\nto disable, use the --disable-telemetry flag.\n\ncheck latest changes here: https://github.com/screenpipe/screenpipe/releases\n2026-04-09T19:53:08.185865Z INFO screenpipe: starting UI event capture\n2026-04-09T19:53:08.185586Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)\n2026-04-09T19:53:08.188922Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh\n2026-04-09T19:53:08.194461Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))\n2026-04-09T19:53:08.201212Z INFO screenpipe_engine::ui_recorder: Starting UI event capture\n2026-04-09T19:53:08.217633Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)\n2026-04-09T19:53:08.217794Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-08 16:53:08.217792 UTC to 2026-04-09 16:53:08.217792 UTC)\n2026-04-09T19:53:08.217649Z INFO screenpipe_engine::ui_recorder: UI recording session started: 3b59b1d1-d80e-4689-8c72-6476af4571df\n2026-04-09T19:53:08.220368Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)\n2026-04-09T19:53:08.222489Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 0 frame entries, coverage from 2026-04-08 16:53:08.217792 UTC\n2026-04-09T19:53:08.227257Z INFO screenpipe_engine::server: Server listening on 0.0.0.0:3030\n2026-04-09T19:53:08.232250Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030\n2026-04-09T19:53:08.543211Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)\n2026-04-09T19:53:08.543241Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)\n2026-04-09T19:53:08.543253Z INFO screenpipe_engine::vision_manager::manager: Skipping monitor 2 (Display 2_3008x1253_-813,-1253) — not in allowed list\n2026-04-09T19:53:08.543262Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)\n2026-04-09T19:53:08.543299Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)\n2026-04-09T19:53:09.210453Z INFO screenpipe_audio::vad::silero: Silero VAD v5 model downloaded and saved to: \"/Users/lukas/Library/Caches/screenpipe/vad/silero_vad_v5.onnx\"\n2026-04-09T19:53:09.352790Z INFO screenpipe_audio::speaker::models: saving segmentation-3.0.onnx model (5983836 bytes) to \"/Users/lukas/Library/Caches/screenpipe/models/segmentation-3.0.onnx\"\n2026-04-09T19:53:09.355799Z INFO screenpipe_audio::speaker::models: segmentation-3.0.onnx model successfully downloaded and saved\n2026-04-09T19:53:09.367746Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps)\n2026-04-09T19:53:10.102366Z INFO screenpipe_audio::speaker::models: saving wespeaker_en_voxceleb_CAM++.onnx model (29292684 bytes) to \"/Users/lukas/Library/Caches/screenpipe/models/wespeaker_en_voxceleb_CAM++.onnx\"\n2026-04-09T19:53:10.112264Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model successfully downloaded and saved\n2026-04-09T19:53:13.221908Z INFO screenpipe_engine::retention: retention: initialized with 14d retention\n2026-04-09T19:53:13.222855Z INFO screenpipe: local retention auto-enabled (14 days)\n2026-04-09T19:53:15.841867Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=1, dur=797ms\n2026-04-09T19:53:18.189478Z WARN screenpipe_audio::transcription::engine: whisper model is not available locally yet for WhisperTiny; audio transcription disabled until download completes\n2026-04-09T19:53:18.189794Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:53:18.190227Z INFO screenpipe_audio::transcription::whisper::model: downloading model \"ggml-tiny.bin\"\n2026-04-09T19:53:18.190847Z INFO screenpipe_audio::audio_manager::manager: audio manager started\n2026-04-09T19:53:18.190916Z INFO screenpipe_audio::audio_manager::manager: calendar-assisted speaker diarization: listening for meeting events\nggml-tiny.bin [00:00:01] [███████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 38.34 MiB/74.09 MiB 21.65 MiB/s (2s)2026-04-09T19:53:19.720503Z INFO screenpipe_audio::audio_manager::device_monitor: model capabilities changed after background download; restarting central handlers\n2026-04-09T19:53:19.720675Z WARN screenpipe_audio::transcription::engine: whisper model is not available locally yet for WhisperTiny; audio transcription disabled until download completes\n2026-04-09T19:53:19.720732Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:53:19.720787Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:53:19.720795Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:53:19.721204Z INFO screenpipe_audio::transcription::whisper::model: downloading model \"ggml-tiny.bin\"\nggml-tiny.bin [00:00:01] [██████████████████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 45.66 MiB/74.09 MiB 23.13 MiB/s (1s)\nggml-tiny.bin [00:00:00] [███░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 2.09 MiB/74.09 MiB 1.63 MiB/s (44s)2026-04-09T19:53:20.383627Z INFO screenpipe_audio::device::device_manager: starting recording for device: System Audio (output)\n2026-04-09T19:53:20.383837Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for System Audio (output) (30s segments)\nggml-tiny.bin [00:00:01] [██████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 9.22 MiB/74.09 MiB 4.95 MiB/s (13s)2026-04-09T19:53:20.972014Z INFO screenpipe_audio::device::device_manager: starting recording for device: soundcore AeroClip (input)\n2026-04-09T19:53:20.972101Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for soundcore AeroClip (input) (30s segments)\nggml-tiny.bin [00:00:02] [███████████████████████████████████████████████████████████████████████████████████████████████████████████████████] 74.09 MiB/74.09 MiB 28.28 MiB/s (0s)2026-04-09T19:53:21.047457Z INFO screenpipe_audio::transcription::whisper::model: model downloaded ggml-tiny.bin\n2026-04-09T19:53:21.047589Z INFO screenpipe_audio::transcription::engine: whisper model downloaded in background: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\nggml-tiny.bin [00:00:03] [███████████████████████████████████████████████████████████████████████████████████████████████████████████████████] 74.09 MiB/74.09 MiB 23.56 MiB/s (0s)2026-04-09T19:53:23.080110Z INFO screenpipe_audio::transcription::whisper::model: model downloaded ggml-tiny.bin\n2026-04-09T19:53:23.080240Z INFO screenpipe_audio::transcription::engine: whisper model downloaded in background: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:53:52.431282Z INFO screenpipe_audio::transcription::engine: whisper model available: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:53:52.431325Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)\n2026-04-09T19:53:52.431330Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...\nwhisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'\nwhisper_init_with_params_no_state: use gpu = 1\nwhisper_init_with_params_no_state: flash attn = 0\nwhisper_init_with_params_no_state: gpu_device = 0\nwhisper_init_with_params_no_state: dtw = 0\nggml_metal_device_init: tensor API disabled for pre-M5 and pre-A19 devices\nggml_metal_library_init: using embedded metal library\nggml_metal_library_init: loaded in 14.652 sec\nggml_metal_rsets_init: creating a residency set collection (keep_alive = 180 s)\nggml_metal_device_init: GPU name: Apple M1\nggml_metal_device_init: GPU family: MTLGPUFamilyApple7 (1007)\nggml_metal_device_init: GPU family: MTLGPUFamilyCommon3 (3003)\nggml_metal_device_init: GPU family: MTLGPUFamilyMetal3 (5001)\nggml_metal_device_init: simdgroup reduction = true\nggml_metal_device_init: simdgroup matrix mul. = true\nggml_metal_device_init: has unified memory = true\nggml_metal_device_init: has bfloat = true\nggml_metal_device_init: has tensor = false\nggml_metal_device_init: use residency sets = true\nggml_metal_device_init: use shared buffers = true\nggml_metal_device_init: recommendedMaxWorkingSetSize = 11453.25 MB\nwhisper_init_with_params_no_state: devices = 3\nwhisper_init_with_params_no_state: backends = 3\nwhisper_model_load: loading model\nwhisper_model_load: n_vocab = 51865\nwhisper_model_load: n_audio_ctx = 1500\nwhisper_model_load: n_audio_state = 384\nwhisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.178366Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\n2026-04-09T19:54:07.178441Z INFO screenpipe_audio::audio_manager::device_monitor: model capabilities changed after background download; restarting central handlers\n2026-04-09T19:54:07.178636Z INFO screenpipe_audio::transcription::engine: whisper model available: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:54:07.178655Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)\n2026-04-09T19:54:07.178661Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...\nwhisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'\nwhisper_init_with_params_no_state: use gpu = 1\nwhisper_init_with_params_no_state: flash attn = 0\nwhisper_init_with_params_no_state: gpu_device = 0\nwhisper_init_with_params_no_state: dtw = 0\nwhisper_init_with_params_no_state: devices = 3\nwhisper_init_with_params_no_state: backends = 3\nwhisper_model_load: loading model\nwhisper_model_load: n_vocab = 51865\nwhisper_model_load: n_audio_ctx = 1500\nwhisper_model_load: n_audio_state = 384\nwhisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
1614245617554003222
|
3100541190118501737
|
click
|
accessibility
|
NULL
|
ORDER BY elements DESC;"
|24604|206
Dia|2884|1 ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
Order Room Service • HBO Max|Back
Order Room Service • HBO Max|Search
Order Room Service • HBO Max|Ukončiť prehrávanie
Order Room Service • HBO Max|Rozbaliť Epizód, 1 z 2
Order Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2
Order Room Service • HBO Max|Preskočiť dozadu o 10 s
Order Room Service • HBO Max|Pozastaviť
Order Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd
Order Room Service • HBO Max|Hlasitosť 100 %
Order Room Service • HBO Max|Nastavenia zvuku a titulkov
Order Room Service • HBO Max|Celá obrazovka
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|Favourites
Order Room Service • HBO Max|Tab Group Favourites
Order Room Service • HBO Max|NAS
Order Room Service • HBO Max|Home
Order Room Service • HBO Max|Portainer
Order Room Service • HBO Max|Nginx Proxy Manager
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?
sqlite3 ~/.screenpipe/db.sqlite "SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;"
# What are those 24k elements with no app_name?
sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, COUNT(*) as cnt
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name IS NULL AND e.text IS NOT NULL
GROUP BY f.window_name
ORDER BY cnt DESC
LIMIT 10;"
# iTerm2 elements with any role
sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.role, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL
LIMIT 20;"
zsh: no matches found: elements?
block|25522
AXStaticText|4681
AXButton|1364
AXLink|1123
AXRadioButton|1017
AXTextField|607
AXCell|297
AXHeading|166
AXTextArea|151
AXPopUpButton|83
AXCheckBox|59
AXComboBox|7
zsh: no matches found: app_name?
|25079
zsh: command not found: #
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
AXRadioButton|APP (-zsh)
AXRadioButton|screenpipe"
AXRadioButton|Python"
AXStaticText|⌥⌘1
AXStaticText|screenpipe"
AXTextArea|Last login: Thu Apr 9 19:52:08 on ttys007
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ cd
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record
detected hardware tier: Mid
checking permissions...
screen recording: ok
microphone: ok
accessibility: ok
2026-04-09T19:53:07.212588Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-09T19:53:08.176294Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-09T19:53:08.180179Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-09T19:53:08.180172Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-09T19:53:08.180644Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-09T19:53:08.181079Z INFO screenpipe_audio::speaker::models: initiating wespeaker_en_voxceleb_CAM++.onnx model download...
2026-04-09T19:53:08.181124Z WARN screenpipe_audio::segmentation::segmentation_manager: embedding model unavailable at startup: wespeaker_en_voxceleb_CAM++.onnx model not available yet; download started in background
2026-04-09T19:53:08.181175Z INFO screenpipe_audio::speaker::models: initiating segmentation-3.0.onnx model download...
2026-04-09T19:53:08.181183Z WARN screenpipe_audio::segmentation::segmentation_manager: segmentation model unavailable at startup: segmentation-3.0.onnx model not available yet; download started in background
2026-04-09T19:53:08.181157Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model download attempt 1/3
2026-04-09T19:53:08.181223Z WARN screenpipe_audio::audio_manager::manager: silero vad unavailable, falling back to webrtc: silero vad model not available yet; download started in background
2026-04-09T19:53:08.181225Z INFO screenpipe_audio::speaker::models: downloading wespeaker_en_voxceleb_CAM++.onnx model from [URL_WITH_CREDENTIALS] ~ $
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...
|
826
|
|
828
|
20
|
0
|
2026-04-11T12:24:25.300069+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910265300_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
ORDER BY elements DESC;"
|24604|206
Dia|2884|1 ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
Order Room Service • HBO Max|Back
Order Room Service • HBO Max|Search
Order Room Service • HBO Max|Ukončiť prehrávanie
Order Room Service • HBO Max|Rozbaliť Epizód, 1 z 2
Order Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2
Order Room Service • HBO Max|Preskočiť dozadu o 10 s
Order Room Service • HBO Max|Pozastaviť
Order Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd
Order Room Service • HBO Max|Hlasitosť 100 %
Order Room Service • HBO Max|Nastavenia zvuku a titulkov
Order Room Service • HBO Max|Celá obrazovka
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|Favourites
Order Room Service • HBO Max|Tab Group Favourites
Order Room Service • HBO Max|NAS
Order Room Service • HBO Max|Home
Order Room Service • HBO Max|Portainer
Order Room Service • HBO Max|Nginx Proxy Manager
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?
sqlite3 ~/.screenpipe/db.sqlite "SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;"
# What are those 24k elements with no app_name?
sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, COUNT(*) as cnt
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name IS NULL AND e.text IS NOT NULL
GROUP BY f.window_name
ORDER BY cnt DESC
LIMIT 10;"
# iTerm2 elements with any role
sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.role, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL
LIMIT 20;"
zsh: no matches found: elements?
block|25522
AXStaticText|4681
AXButton|1364
AXLink|1123
AXRadioButton|1017
AXTextField|607
AXCell|297
AXHeading|166
AXTextArea|151
AXPopUpButton|83
AXCheckBox|59
AXComboBox|7
zsh: no matches found: app_name?
|25079
zsh: command not found: #
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
AXRadioButton|APP (-zsh)
AXRadioButton|screenpipe"
AXRadioButton|Python"
AXStaticText|⌥⌘1
AXStaticText|screenpipe"
AXTextArea|Last login: Thu Apr 9 19:52:08 on ttys007
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ cd
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record
detected hardware tier: Mid
checking permissions...
screen recording: ok
microphone: ok
accessibility: ok
2026-04-09T19:53:07.212588Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-09T19:53:08.176294Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-09T19:53:08.180179Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-09T19:53:08.180172Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-09T19:53:08.180644Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-09T19:53:08.181079Z INFO screenpipe_audio::speaker::models: initiating wespeaker_en_voxceleb_CAM++.onnx model download...
2026-04-09T19:53:08.181124Z WARN screenpipe_audio::segmentation::segmentation_manager: embedding model unavailable at startup: wespeaker_en_voxceleb_CAM++.onnx model not available yet; download started in background
2026-04-09T19:53:08.181175Z INFO screenpipe_audio::speaker::models: initiating segmentation-3.0.onnx model download...
2026-04-09T19:53:08.181183Z WARN screenpipe_audio::segmentation::segmentation_manager: segmentation model unavailable at startup: segmentation-3.0.onnx model not available yet; download started in background
2026-04-09T19:53:08.181157Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model download attempt 1/3
2026-04-09T19:53:08.181223Z WARN screenpipe_audio::audio_manager::manager: silero vad unavailable, falling back to webrtc: silero vad model not available yet; download started in background
2026-04-09T19:53:08.181225Z INFO screenpipe_audio::speaker::models: downloading wespeaker_en_voxceleb_CAM++.onnx model from [URL_WITH_CREDENTIALS] ~ $
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":"ORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"\nOrder Room Service • HBO Max|Back\nOrder Room Service • HBO Max|Search\nOrder Room Service • HBO Max|Ukončiť prehrávanie\nOrder Room Service • HBO Max|Rozbaliť Epizód, 1 z 2\nOrder Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2\nOrder Room Service • HBO Max|Preskočiť dozadu o 10 s\nOrder Room Service • HBO Max|Pozastaviť\nOrder Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd\nOrder Room Service • HBO Max|Hlasitosť 100 %\nOrder Room Service • HBO Max|Nastavenia zvuku a titulkov\nOrder Room Service • HBO Max|Celá obrazovka\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|Favourites\nOrder Room Service • HBO Max|Tab Group Favourites\nOrder Room Service • HBO Max|NAS\nOrder Room Service • HBO Max|Home\nOrder Room Service • HBO Max|Portainer\nOrder Room Service • HBO Max|Nginx Proxy Manager\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?\nsqlite3 ~/.screenpipe/db.sqlite \"SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;\"\n\n# What are those 24k elements with no app_name?\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, COUNT(*) as cnt\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name IS NULL AND e.text IS NOT NULL\nGROUP BY f.window_name\nORDER BY cnt DESC\nLIMIT 10;\"\n\n# iTerm2 elements with any role\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.role, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL\nLIMIT 20;\"\nzsh: no matches found: elements?\nblock|25522\nAXStaticText|4681\nAXButton|1364\nAXLink|1123\nAXRadioButton|1017\nAXTextField|607\nAXCell|297\nAXHeading|166\nAXTextArea|151\nAXPopUpButton|83\nAXCheckBox|59\nAXComboBox|7\nzsh: no matches found: app_name?\n|25079\nzsh: command not found: #\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nAXRadioButton|APP (-zsh)\nAXRadioButton|screenpipe\"\nAXRadioButton|Python\"\nAXStaticText|⌥⌘1\nAXStaticText|screenpipe\"\nAXTextArea|Last login: Thu Apr 9 19:52:08 on ttys007\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ cd\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record\ndetected hardware tier: Mid\nchecking permissions...\n screen recording: ok\n microphone: ok\n accessibility: ok\n2026-04-09T19:53:07.212588Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6\n2026-04-09T19:53:08.176294Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor\n2026-04-09T19:53:08.180179Z INFO screenpipe: meeting detector enabled — independent of transcription mode\n2026-04-09T19:53:08.180172Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)\n2026-04-09T19:53:08.180644Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)\n2026-04-09T19:53:08.181079Z INFO screenpipe_audio::speaker::models: initiating wespeaker_en_voxceleb_CAM++.onnx model download...\n2026-04-09T19:53:08.181124Z WARN screenpipe_audio::segmentation::segmentation_manager: embedding model unavailable at startup: wespeaker_en_voxceleb_CAM++.onnx model not available yet; download started in background\n2026-04-09T19:53:08.181175Z INFO screenpipe_audio::speaker::models: initiating segmentation-3.0.onnx model download...\n2026-04-09T19:53:08.181183Z WARN screenpipe_audio::segmentation::segmentation_manager: segmentation model unavailable at startup: segmentation-3.0.onnx model not available yet; download started in background\n2026-04-09T19:53:08.181157Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model download attempt 1/3\n2026-04-09T19:53:08.181223Z WARN screenpipe_audio::audio_manager::manager: silero vad unavailable, falling back to webrtc: silero vad model not available yet; download started in background\n2026-04-09T19:53:08.181225Z INFO screenpipe_audio::speaker::models: downloading wespeaker_en_voxceleb_CAM++.onnx model from https://github.com/screenpipe/screenpipe/raw/refs/heads/main/crates/screenpipe-audio/models/pyannote/wespeaker_en_voxceleb_CAM++.onnx\n2026-04-09T19:53:08.181212Z INFO screenpipe_audio::speaker::models: segmentation-3.0.onnx model download attempt 1/3\n2026-04-09T19:53:08.181526Z INFO screenpipe_audio::speaker::models: downloading segmentation-3.0.onnx model from https://github.com/screenpipe/screenpipe/raw/refs/heads/main/crates/screenpipe-audio/models/pyannote/segmentation-3.0.onnx\n2026-04-09T19:53:08.181252Z INFO screenpipe_audio::vad::silero: downloading Silero VAD v5 model...\n2026-04-09T19:53:08.181607Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)\n2026-04-09T19:53:08.181646Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager\n2026-04-09T19:53:08.181366Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)\n2026-04-09T19:53:08.181759Z INFO screenpipe_core::pipes: installed built-in pipe: day-recap\n2026-04-09T19:53:08.181952Z INFO screenpipe_core::pipes: installed built-in pipe: standup-update\n2026-04-09T19:53:08.182315Z INFO screenpipe_core::pipes: installed built-in pipe: ai-habits\n2026-04-09T19:53:08.182501Z INFO screenpipe_core::pipes: installed built-in pipe: time-breakdown\n2026-04-09T19:53:08.182680Z INFO screenpipe_core::pipes: installed built-in pipe: video-export\n2026-04-09T19:53:08.182875Z INFO screenpipe_core::pipes: installed built-in pipe: meeting-summary\n2026-04-09T19:53:08.183091Z INFO screenpipe_core::pipes: loaded pipe: day-recap\n2026-04-09T19:53:08.183146Z INFO screenpipe_core::pipes: loaded pipe: standup-update\n2026-04-09T19:53:08.183187Z INFO screenpipe_core::pipes: loaded pipe: ai-habits\n2026-04-09T19:53:08.183237Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown\n2026-04-09T19:53:08.183306Z INFO screenpipe_core::pipes: loaded pipe: video-export\n2026-04-09T19:53:08.183363Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary\n2026-04-09T19:53:08.183380Z INFO screenpipe_core::pipes: loaded 6 pipes from \"/Users/lukas/.screenpipe/pipes\"\n\n\n\n _ \n __________________ ___ ____ ____ (_____ ___ \n / ___/ ___/ ___/ _ \\/ _ \\/ __ \\ / __ \\/ / __ \\/ _ \\\n (__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/\n/____/\\___/_/ \\___/\\___/_/ /_/ / .___/_/ .___/\\___/ \n /_/ /_/ \n\n\n\npower AI by everything you've seen, said or heard\nopen source | runs locally | developer friendly\n\n\n┌────────────────────────┬────────────────────────────────────┐\n│ setting │ value │\n├────────────────────────┼────────────────────────────────────┤\n│ audio chunk duration │ 30 seconds │\n│ port │ 3030 │\n│ audio disabled │ false │\n│ vision disabled │ false │\n│ audio engine │ Parakeet │\n│ vad engine │ Silero │\n│ data directory │ /Users/lukas/.screenpipe │\n│ debug mode │ false │\n│ telemetry │ true │\n│ use pii removal │ true │\n│ use all monitors │ true │\n│ ignored windows │ [] │\n│ included windows │ [] │\n│ cloud sync │ disabled │\n│ auto-destruct pid │ 0 │\n│ deepgram key │ not set │\n├────────────────────────┼────────────────────────────────────┤\n│ languages │ │\n│ │ all languages │\n├────────────────────────┼────────────────────────────────────┤\n│ monitors │ │\n│ │ no monitors available │\n├────────────────────────┼────────────────────────────────────┤\n│ audio devices │ │\n│ │ soundcore AeroClip (input) │\n│ │ System Audio (output) │\n└────────────────────────┴────────────────────────────────────┘\nyou are using local processing. all your data stays on your computer.\n\nwarning: telemetry is enabled. only error-level data will be sent.\nto disable, use the --disable-telemetry flag.\n\ncheck latest changes here: https://github.com/screenpipe/screenpipe/releases\n2026-04-09T19:53:08.185865Z INFO screenpipe: starting UI event capture\n2026-04-09T19:53:08.185586Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)\n2026-04-09T19:53:08.188922Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh\n2026-04-09T19:53:08.194461Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))\n2026-04-09T19:53:08.201212Z INFO screenpipe_engine::ui_recorder: Starting UI event capture\n2026-04-09T19:53:08.217633Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)\n2026-04-09T19:53:08.217794Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-08 16:53:08.217792 UTC to 2026-04-09 16:53:08.217792 UTC)\n2026-04-09T19:53:08.217649Z INFO screenpipe_engine::ui_recorder: UI recording session started: 3b59b1d1-d80e-4689-8c72-6476af4571df\n2026-04-09T19:53:08.220368Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)\n2026-04-09T19:53:08.222489Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 0 frame entries, coverage from 2026-04-08 16:53:08.217792 UTC\n2026-04-09T19:53:08.227257Z INFO screenpipe_engine::server: Server listening on 0.0.0.0:3030\n2026-04-09T19:53:08.232250Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030\n2026-04-09T19:53:08.543211Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)\n2026-04-09T19:53:08.543241Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)\n2026-04-09T19:53:08.543253Z INFO screenpipe_engine::vision_manager::manager: Skipping monitor 2 (Display 2_3008x1253_-813,-1253) — not in allowed list\n2026-04-09T19:53:08.543262Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)\n2026-04-09T19:53:08.543299Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)\n2026-04-09T19:53:09.210453Z INFO screenpipe_audio::vad::silero: Silero VAD v5 model downloaded and saved to: \"/Users/lukas/Library/Caches/screenpipe/vad/silero_vad_v5.onnx\"\n2026-04-09T19:53:09.352790Z INFO screenpipe_audio::speaker::models: saving segmentation-3.0.onnx model (5983836 bytes) to \"/Users/lukas/Library/Caches/screenpipe/models/segmentation-3.0.onnx\"\n2026-04-09T19:53:09.355799Z INFO screenpipe_audio::speaker::models: segmentation-3.0.onnx model successfully downloaded and saved\n2026-04-09T19:53:09.367746Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps)\n2026-04-09T19:53:10.102366Z INFO screenpipe_audio::speaker::models: saving wespeaker_en_voxceleb_CAM++.onnx model (29292684 bytes) to \"/Users/lukas/Library/Caches/screenpipe/models/wespeaker_en_voxceleb_CAM++.onnx\"\n2026-04-09T19:53:10.112264Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model successfully downloaded and saved\n2026-04-09T19:53:13.221908Z INFO screenpipe_engine::retention: retention: initialized with 14d retention\n2026-04-09T19:53:13.222855Z INFO screenpipe: local retention auto-enabled (14 days)\n2026-04-09T19:53:15.841867Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=1, dur=797ms\n2026-04-09T19:53:18.189478Z WARN screenpipe_audio::transcription::engine: whisper model is not available locally yet for WhisperTiny; audio transcription disabled until download completes\n2026-04-09T19:53:18.189794Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:53:18.190227Z INFO screenpipe_audio::transcription::whisper::model: downloading model \"ggml-tiny.bin\"\n2026-04-09T19:53:18.190847Z INFO screenpipe_audio::audio_manager::manager: audio manager started\n2026-04-09T19:53:18.190916Z INFO screenpipe_audio::audio_manager::manager: calendar-assisted speaker diarization: listening for meeting events\nggml-tiny.bin [00:00:01] [███████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 38.34 MiB/74.09 MiB 21.65 MiB/s (2s)2026-04-09T19:53:19.720503Z INFO screenpipe_audio::audio_manager::device_monitor: model capabilities changed after background download; restarting central handlers\n2026-04-09T19:53:19.720675Z WARN screenpipe_audio::transcription::engine: whisper model is not available locally yet for WhisperTiny; audio transcription disabled until download completes\n2026-04-09T19:53:19.720732Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:53:19.720787Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:53:19.720795Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:53:19.721204Z INFO screenpipe_audio::transcription::whisper::model: downloading model \"ggml-tiny.bin\"\nggml-tiny.bin [00:00:01] [██████████████████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 45.66 MiB/74.09 MiB 23.13 MiB/s (1s)\nggml-tiny.bin [00:00:00] [███░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 2.09 MiB/74.09 MiB 1.63 MiB/s (44s)2026-04-09T19:53:20.383627Z INFO screenpipe_audio::device::device_manager: starting recording for device: System Audio (output)\n2026-04-09T19:53:20.383837Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for System Audio (output) (30s segments)\nggml-tiny.bin [00:00:01] [██████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 9.22 MiB/74.09 MiB 4.95 MiB/s (13s)2026-04-09T19:53:20.972014Z INFO screenpipe_audio::device::device_manager: starting recording for device: soundcore AeroClip (input)\n2026-04-09T19:53:20.972101Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for soundcore AeroClip (input) (30s segments)\nggml-tiny.bin [00:00:02] [███████████████████████████████████████████████████████████████████████████████████████████████████████████████████] 74.09 MiB/74.09 MiB 28.28 MiB/s (0s)2026-04-09T19:53:21.047457Z INFO screenpipe_audio::transcription::whisper::model: model downloaded ggml-tiny.bin\n2026-04-09T19:53:21.047589Z INFO screenpipe_audio::transcription::engine: whisper model downloaded in background: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\nggml-tiny.bin [00:00:03] [███████████████████████████████████████████████████████████████████████████████████████████████████████████████████] 74.09 MiB/74.09 MiB 23.56 MiB/s (0s)2026-04-09T19:53:23.080110Z INFO screenpipe_audio::transcription::whisper::model: model downloaded ggml-tiny.bin\n2026-04-09T19:53:23.080240Z INFO screenpipe_audio::transcription::engine: whisper model downloaded in background: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:53:52.431282Z INFO screenpipe_audio::transcription::engine: whisper model available: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:53:52.431325Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)\n2026-04-09T19:53:52.431330Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...\nwhisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'\nwhisper_init_with_params_no_state: use gpu = 1\nwhisper_init_with_params_no_state: flash attn = 0\nwhisper_init_with_params_no_state: gpu_device = 0\nwhisper_init_with_params_no_state: dtw = 0\nggml_metal_device_init: tensor API disabled for pre-M5 and pre-A19 devices\nggml_metal_library_init: using embedded metal library\nggml_metal_library_init: loaded in 14.652 sec\nggml_metal_rsets_init: creating a residency set collection (keep_alive = 180 s)\nggml_metal_device_init: GPU name: Apple M1\nggml_metal_device_init: GPU family: MTLGPUFamilyApple7 (1007)\nggml_metal_device_init: GPU family: MTLGPUFamilyCommon3 (3003)\nggml_metal_device_init: GPU family: MTLGPUFamilyMetal3 (5001)\nggml_metal_device_init: simdgroup reduction = true\nggml_metal_device_init: simdgroup matrix mul. = true\nggml_metal_device_init: has unified memory = true\nggml_metal_device_init: has bfloat = true\nggml_metal_device_init: has tensor = false\nggml_metal_device_init: use residency sets = true\nggml_metal_device_init: use shared buffers = true\nggml_metal_device_init: recommendedMaxWorkingSetSize = 11453.25 MB\nwhisper_init_with_params_no_state: devices = 3\nwhisper_init_with_params_no_state: backends = 3\nwhisper_model_load: loading model\nwhisper_model_load: n_vocab = 51865\nwhisper_model_load: n_audio_ctx = 1500\nwhisper_model_load: n_audio_state = 384\nwhisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.178366Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\n2026-04-09T19:54:07.178441Z INFO screenpipe_audio::audio_manager::device_monitor: model capabilities changed after background download; restarting central handlers\n2026-04-09T19:54:07.178636Z INFO screenpipe_audio::transcription::engine: whisper model available: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:54:07.178655Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)\n2026-04-09T19:54:07.178661Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...\nwhisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'\nwhisper_init_with_params_no_state: use gpu = 1\nwhisper_init_with_params_no_state: flash attn = 0\nwhisper_init_with_params_no_state: gpu_device = 0\nwhisper_init_with_params_no_state: dtw = 0\nwhisper_init_with_params_no_state: devices = 3\nwhisper_init_with_params_no_state: backends = 3\nwhisper_model_load: loading model\nwhisper_model_load: n_vocab = 51865\nwhisper_model_load: n_audio_ctx = 1500\nwhisper_model_load: n_audio_state = 384\nwhisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"value":"ORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"\nOrder Room Service • HBO Max|Back\nOrder Room Service • HBO Max|Search\nOrder Room Service • HBO Max|Ukončiť prehrávanie\nOrder Room Service • HBO Max|Rozbaliť Epizód, 1 z 2\nOrder Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2\nOrder Room Service • HBO Max|Preskočiť dozadu o 10 s\nOrder Room Service • HBO Max|Pozastaviť\nOrder Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd\nOrder Room Service • HBO Max|Hlasitosť 100 %\nOrder Room Service • HBO Max|Nastavenia zvuku a titulkov\nOrder Room Service • HBO Max|Celá obrazovka\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|Favourites\nOrder Room Service • HBO Max|Tab Group Favourites\nOrder Room Service • HBO Max|NAS\nOrder Room Service • HBO Max|Home\nOrder Room Service • HBO Max|Portainer\nOrder Room Service • HBO Max|Nginx Proxy Manager\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?\nsqlite3 ~/.screenpipe/db.sqlite \"SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;\"\n\n# What are those 24k elements with no app_name?\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, COUNT(*) as cnt\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name IS NULL AND e.text IS NOT NULL\nGROUP BY f.window_name\nORDER BY cnt DESC\nLIMIT 10;\"\n\n# iTerm2 elements with any role\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.role, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL\nLIMIT 20;\"\nzsh: no matches found: elements?\nblock|25522\nAXStaticText|4681\nAXButton|1364\nAXLink|1123\nAXRadioButton|1017\nAXTextField|607\nAXCell|297\nAXHeading|166\nAXTextArea|151\nAXPopUpButton|83\nAXCheckBox|59\nAXComboBox|7\nzsh: no matches found: app_name?\n|25079\nzsh: command not found: #\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nAXRadioButton|APP (-zsh)\nAXRadioButton|screenpipe\"\nAXRadioButton|Python\"\nAXStaticText|⌥⌘1\nAXStaticText|screenpipe\"\nAXTextArea|Last login: Thu Apr 9 19:52:08 on ttys007\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ cd\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record\ndetected hardware tier: Mid\nchecking permissions...\n screen recording: ok\n microphone: ok\n accessibility: ok\n2026-04-09T19:53:07.212588Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6\n2026-04-09T19:53:08.176294Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor\n2026-04-09T19:53:08.180179Z INFO screenpipe: meeting detector enabled — independent of transcription mode\n2026-04-09T19:53:08.180172Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)\n2026-04-09T19:53:08.180644Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)\n2026-04-09T19:53:08.181079Z INFO screenpipe_audio::speaker::models: initiating wespeaker_en_voxceleb_CAM++.onnx model download...\n2026-04-09T19:53:08.181124Z WARN screenpipe_audio::segmentation::segmentation_manager: embedding model unavailable at startup: wespeaker_en_voxceleb_CAM++.onnx model not available yet; download started in background\n2026-04-09T19:53:08.181175Z INFO screenpipe_audio::speaker::models: initiating segmentation-3.0.onnx model download...\n2026-04-09T19:53:08.181183Z WARN screenpipe_audio::segmentation::segmentation_manager: segmentation model unavailable at startup: segmentation-3.0.onnx model not available yet; download started in background\n2026-04-09T19:53:08.181157Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model download attempt 1/3\n2026-04-09T19:53:08.181223Z WARN screenpipe_audio::audio_manager::manager: silero vad unavailable, falling back to webrtc: silero vad model not available yet; download started in background\n2026-04-09T19:53:08.181225Z INFO screenpipe_audio::speaker::models: downloading wespeaker_en_voxceleb_CAM++.onnx model from https://github.com/screenpipe/screenpipe/raw/refs/heads/main/crates/screenpipe-audio/models/pyannote/wespeaker_en_voxceleb_CAM++.onnx\n2026-04-09T19:53:08.181212Z INFO screenpipe_audio::speaker::models: segmentation-3.0.onnx model download attempt 1/3\n2026-04-09T19:53:08.181526Z INFO screenpipe_audio::speaker::models: downloading segmentation-3.0.onnx model from https://github.com/screenpipe/screenpipe/raw/refs/heads/main/crates/screenpipe-audio/models/pyannote/segmentation-3.0.onnx\n2026-04-09T19:53:08.181252Z INFO screenpipe_audio::vad::silero: downloading Silero VAD v5 model...\n2026-04-09T19:53:08.181607Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)\n2026-04-09T19:53:08.181646Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager\n2026-04-09T19:53:08.181366Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)\n2026-04-09T19:53:08.181759Z INFO screenpipe_core::pipes: installed built-in pipe: day-recap\n2026-04-09T19:53:08.181952Z INFO screenpipe_core::pipes: installed built-in pipe: standup-update\n2026-04-09T19:53:08.182315Z INFO screenpipe_core::pipes: installed built-in pipe: ai-habits\n2026-04-09T19:53:08.182501Z INFO screenpipe_core::pipes: installed built-in pipe: time-breakdown\n2026-04-09T19:53:08.182680Z INFO screenpipe_core::pipes: installed built-in pipe: video-export\n2026-04-09T19:53:08.182875Z INFO screenpipe_core::pipes: installed built-in pipe: meeting-summary\n2026-04-09T19:53:08.183091Z INFO screenpipe_core::pipes: loaded pipe: day-recap\n2026-04-09T19:53:08.183146Z INFO screenpipe_core::pipes: loaded pipe: standup-update\n2026-04-09T19:53:08.183187Z INFO screenpipe_core::pipes: loaded pipe: ai-habits\n2026-04-09T19:53:08.183237Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown\n2026-04-09T19:53:08.183306Z INFO screenpipe_core::pipes: loaded pipe: video-export\n2026-04-09T19:53:08.183363Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary\n2026-04-09T19:53:08.183380Z INFO screenpipe_core::pipes: loaded 6 pipes from \"/Users/lukas/.screenpipe/pipes\"\n\n\n\n _ \n __________________ ___ ____ ____ (_____ ___ \n / ___/ ___/ ___/ _ \\/ _ \\/ __ \\ / __ \\/ / __ \\/ _ \\\n (__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/\n/____/\\___/_/ \\___/\\___/_/ /_/ / .___/_/ .___/\\___/ \n /_/ /_/ \n\n\n\npower AI by everything you've seen, said or heard\nopen source | runs locally | developer friendly\n\n\n┌────────────────────────┬────────────────────────────────────┐\n│ setting │ value │\n├────────────────────────┼────────────────────────────────────┤\n│ audio chunk duration │ 30 seconds │\n│ port │ 3030 │\n│ audio disabled │ false │\n│ vision disabled │ false │\n│ audio engine │ Parakeet │\n│ vad engine │ Silero │\n│ data directory │ /Users/lukas/.screenpipe │\n│ debug mode │ false │\n│ telemetry │ true │\n│ use pii removal │ true │\n│ use all monitors │ true │\n│ ignored windows │ [] │\n│ included windows │ [] │\n│ cloud sync │ disabled │\n│ auto-destruct pid │ 0 │\n│ deepgram key │ not set │\n├────────────────────────┼────────────────────────────────────┤\n│ languages │ │\n│ │ all languages │\n├────────────────────────┼────────────────────────────────────┤\n│ monitors │ │\n│ │ no monitors available │\n├────────────────────────┼────────────────────────────────────┤\n│ audio devices │ │\n│ │ soundcore AeroClip (input) │\n│ │ System Audio (output) │\n└────────────────────────┴────────────────────────────────────┘\nyou are using local processing. all your data stays on your computer.\n\nwarning: telemetry is enabled. only error-level data will be sent.\nto disable, use the --disable-telemetry flag.\n\ncheck latest changes here: https://github.com/screenpipe/screenpipe/releases\n2026-04-09T19:53:08.185865Z INFO screenpipe: starting UI event capture\n2026-04-09T19:53:08.185586Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)\n2026-04-09T19:53:08.188922Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh\n2026-04-09T19:53:08.194461Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))\n2026-04-09T19:53:08.201212Z INFO screenpipe_engine::ui_recorder: Starting UI event capture\n2026-04-09T19:53:08.217633Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)\n2026-04-09T19:53:08.217794Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-08 16:53:08.217792 UTC to 2026-04-09 16:53:08.217792 UTC)\n2026-04-09T19:53:08.217649Z INFO screenpipe_engine::ui_recorder: UI recording session started: 3b59b1d1-d80e-4689-8c72-6476af4571df\n2026-04-09T19:53:08.220368Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)\n2026-04-09T19:53:08.222489Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 0 frame entries, coverage from 2026-04-08 16:53:08.217792 UTC\n2026-04-09T19:53:08.227257Z INFO screenpipe_engine::server: Server listening on 0.0.0.0:3030\n2026-04-09T19:53:08.232250Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030\n2026-04-09T19:53:08.543211Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)\n2026-04-09T19:53:08.543241Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)\n2026-04-09T19:53:08.543253Z INFO screenpipe_engine::vision_manager::manager: Skipping monitor 2 (Display 2_3008x1253_-813,-1253) — not in allowed list\n2026-04-09T19:53:08.543262Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)\n2026-04-09T19:53:08.543299Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)\n2026-04-09T19:53:09.210453Z INFO screenpipe_audio::vad::silero: Silero VAD v5 model downloaded and saved to: \"/Users/lukas/Library/Caches/screenpipe/vad/silero_vad_v5.onnx\"\n2026-04-09T19:53:09.352790Z INFO screenpipe_audio::speaker::models: saving segmentation-3.0.onnx model (5983836 bytes) to \"/Users/lukas/Library/Caches/screenpipe/models/segmentation-3.0.onnx\"\n2026-04-09T19:53:09.355799Z INFO screenpipe_audio::speaker::models: segmentation-3.0.onnx model successfully downloaded and saved\n2026-04-09T19:53:09.367746Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps)\n2026-04-09T19:53:10.102366Z INFO screenpipe_audio::speaker::models: saving wespeaker_en_voxceleb_CAM++.onnx model (29292684 bytes) to \"/Users/lukas/Library/Caches/screenpipe/models/wespeaker_en_voxceleb_CAM++.onnx\"\n2026-04-09T19:53:10.112264Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model successfully downloaded and saved\n2026-04-09T19:53:13.221908Z INFO screenpipe_engine::retention: retention: initialized with 14d retention\n2026-04-09T19:53:13.222855Z INFO screenpipe: local retention auto-enabled (14 days)\n2026-04-09T19:53:15.841867Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=1, dur=797ms\n2026-04-09T19:53:18.189478Z WARN screenpipe_audio::transcription::engine: whisper model is not available locally yet for WhisperTiny; audio transcription disabled until download completes\n2026-04-09T19:53:18.189794Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:53:18.190227Z INFO screenpipe_audio::transcription::whisper::model: downloading model \"ggml-tiny.bin\"\n2026-04-09T19:53:18.190847Z INFO screenpipe_audio::audio_manager::manager: audio manager started\n2026-04-09T19:53:18.190916Z INFO screenpipe_audio::audio_manager::manager: calendar-assisted speaker diarization: listening for meeting events\nggml-tiny.bin [00:00:01] [███████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 38.34 MiB/74.09 MiB 21.65 MiB/s (2s)2026-04-09T19:53:19.720503Z INFO screenpipe_audio::audio_manager::device_monitor: model capabilities changed after background download; restarting central handlers\n2026-04-09T19:53:19.720675Z WARN screenpipe_audio::transcription::engine: whisper model is not available locally yet for WhisperTiny; audio transcription disabled until download completes\n2026-04-09T19:53:19.720732Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:53:19.720787Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:53:19.720795Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:53:19.721204Z INFO screenpipe_audio::transcription::whisper::model: downloading model \"ggml-tiny.bin\"\nggml-tiny.bin [00:00:01] [██████████████████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 45.66 MiB/74.09 MiB 23.13 MiB/s (1s)\nggml-tiny.bin [00:00:00] [███░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 2.09 MiB/74.09 MiB 1.63 MiB/s (44s)2026-04-09T19:53:20.383627Z INFO screenpipe_audio::device::device_manager: starting recording for device: System Audio (output)\n2026-04-09T19:53:20.383837Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for System Audio (output) (30s segments)\nggml-tiny.bin [00:00:01] [██████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 9.22 MiB/74.09 MiB 4.95 MiB/s (13s)2026-04-09T19:53:20.972014Z INFO screenpipe_audio::device::device_manager: starting recording for device: soundcore AeroClip (input)\n2026-04-09T19:53:20.972101Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for soundcore AeroClip (input) (30s segments)\nggml-tiny.bin [00:00:02] [███████████████████████████████████████████████████████████████████████████████████████████████████████████████████] 74.09 MiB/74.09 MiB 28.28 MiB/s (0s)2026-04-09T19:53:21.047457Z INFO screenpipe_audio::transcription::whisper::model: model downloaded ggml-tiny.bin\n2026-04-09T19:53:21.047589Z INFO screenpipe_audio::transcription::engine: whisper model downloaded in background: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\nggml-tiny.bin [00:00:03] [███████████████████████████████████████████████████████████████████████████████████████████████████████████████████] 74.09 MiB/74.09 MiB 23.56 MiB/s (0s)2026-04-09T19:53:23.080110Z INFO screenpipe_audio::transcription::whisper::model: model downloaded ggml-tiny.bin\n2026-04-09T19:53:23.080240Z INFO screenpipe_audio::transcription::engine: whisper model downloaded in background: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:53:52.431282Z INFO screenpipe_audio::transcription::engine: whisper model available: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:53:52.431325Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)\n2026-04-09T19:53:52.431330Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...\nwhisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'\nwhisper_init_with_params_no_state: use gpu = 1\nwhisper_init_with_params_no_state: flash attn = 0\nwhisper_init_with_params_no_state: gpu_device = 0\nwhisper_init_with_params_no_state: dtw = 0\nggml_metal_device_init: tensor API disabled for pre-M5 and pre-A19 devices\nggml_metal_library_init: using embedded metal library\nggml_metal_library_init: loaded in 14.652 sec\nggml_metal_rsets_init: creating a residency set collection (keep_alive = 180 s)\nggml_metal_device_init: GPU name: Apple M1\nggml_metal_device_init: GPU family: MTLGPUFamilyApple7 (1007)\nggml_metal_device_init: GPU family: MTLGPUFamilyCommon3 (3003)\nggml_metal_device_init: GPU family: MTLGPUFamilyMetal3 (5001)\nggml_metal_device_init: simdgroup reduction = true\nggml_metal_device_init: simdgroup matrix mul. = true\nggml_metal_device_init: has unified memory = true\nggml_metal_device_init: has bfloat = true\nggml_metal_device_init: has tensor = false\nggml_metal_device_init: use residency sets = true\nggml_metal_device_init: use shared buffers = true\nggml_metal_device_init: recommendedMaxWorkingSetSize = 11453.25 MB\nwhisper_init_with_params_no_state: devices = 3\nwhisper_init_with_params_no_state: backends = 3\nwhisper_model_load: loading model\nwhisper_model_load: n_vocab = 51865\nwhisper_model_load: n_audio_ctx = 1500\nwhisper_model_load: n_audio_state = 384\nwhisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.178366Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\n2026-04-09T19:54:07.178441Z INFO screenpipe_audio::audio_manager::device_monitor: model capabilities changed after background download; restarting central handlers\n2026-04-09T19:54:07.178636Z INFO screenpipe_audio::transcription::engine: whisper model available: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:54:07.178655Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)\n2026-04-09T19:54:07.178661Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...\nwhisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'\nwhisper_init_with_params_no_state: use gpu = 1\nwhisper_init_with_params_no_state: flash attn = 0\nwhisper_init_with_params_no_state: gpu_device = 0\nwhisper_init_with_params_no_state: dtw = 0\nwhisper_init_with_params_no_state: devices = 3\nwhisper_init_with_params_no_state: backends = 3\nwhisper_model_load: loading model\nwhisper_model_load: n_vocab = 51865\nwhisper_model_load: n_audio_ctx = 1500\nwhisper_model_load: n_audio_state = 384\nwhisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
1614245617554003222
|
3100541190118501737
|
idle
|
accessibility
|
NULL
|
ORDER BY elements DESC;"
|24604|206
Dia|2884|1 ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
Order Room Service • HBO Max|Back
Order Room Service • HBO Max|Search
Order Room Service • HBO Max|Ukončiť prehrávanie
Order Room Service • HBO Max|Rozbaliť Epizód, 1 z 2
Order Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2
Order Room Service • HBO Max|Preskočiť dozadu o 10 s
Order Room Service • HBO Max|Pozastaviť
Order Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd
Order Room Service • HBO Max|Hlasitosť 100 %
Order Room Service • HBO Max|Nastavenia zvuku a titulkov
Order Room Service • HBO Max|Celá obrazovka
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|Favourites
Order Room Service • HBO Max|Tab Group Favourites
Order Room Service • HBO Max|NAS
Order Room Service • HBO Max|Home
Order Room Service • HBO Max|Portainer
Order Room Service • HBO Max|Nginx Proxy Manager
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?
sqlite3 ~/.screenpipe/db.sqlite "SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;"
# What are those 24k elements with no app_name?
sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, COUNT(*) as cnt
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name IS NULL AND e.text IS NOT NULL
GROUP BY f.window_name
ORDER BY cnt DESC
LIMIT 10;"
# iTerm2 elements with any role
sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.role, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL
LIMIT 20;"
zsh: no matches found: elements?
block|25522
AXStaticText|4681
AXButton|1364
AXLink|1123
AXRadioButton|1017
AXTextField|607
AXCell|297
AXHeading|166
AXTextArea|151
AXPopUpButton|83
AXCheckBox|59
AXComboBox|7
zsh: no matches found: app_name?
|25079
zsh: command not found: #
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
AXRadioButton|APP (-zsh)
AXRadioButton|screenpipe"
AXRadioButton|Python"
AXStaticText|⌥⌘1
AXStaticText|screenpipe"
AXTextArea|Last login: Thu Apr 9 19:52:08 on ttys007
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ cd
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record
detected hardware tier: Mid
checking permissions...
screen recording: ok
microphone: ok
accessibility: ok
2026-04-09T19:53:07.212588Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-09T19:53:08.176294Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-09T19:53:08.180179Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-09T19:53:08.180172Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-09T19:53:08.180644Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-09T19:53:08.181079Z INFO screenpipe_audio::speaker::models: initiating wespeaker_en_voxceleb_CAM++.onnx model download...
2026-04-09T19:53:08.181124Z WARN screenpipe_audio::segmentation::segmentation_manager: embedding model unavailable at startup: wespeaker_en_voxceleb_CAM++.onnx model not available yet; download started in background
2026-04-09T19:53:08.181175Z INFO screenpipe_audio::speaker::models: initiating segmentation-3.0.onnx model download...
2026-04-09T19:53:08.181183Z WARN screenpipe_audio::segmentation::segmentation_manager: segmentation model unavailable at startup: segmentation-3.0.onnx model not available yet; download started in background
2026-04-09T19:53:08.181157Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model download attempt 1/3
2026-04-09T19:53:08.181223Z WARN screenpipe_audio::audio_manager::manager: silero vad unavailable, falling back to webrtc: silero vad model not available yet; download started in background
2026-04-09T19:53:08.181225Z INFO screenpipe_audio::speaker::models: downloading wespeaker_en_voxceleb_CAM++.onnx model from [URL_WITH_CREDENTIALS] ~ $
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
|
|
834
|
20
|
6
|
2026-04-11T12:25:59.427846+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910359427_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
ORDER BY elements DESC;"
|24604|206
Dia|2884|1 ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
Order Room Service • HBO Max|Back
Order Room Service • HBO Max|Search
Order Room Service • HBO Max|Ukončiť prehrávanie
Order Room Service • HBO Max|Rozbaliť Epizód, 1 z 2
Order Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2
Order Room Service • HBO Max|Preskočiť dozadu o 10 s
Order Room Service • HBO Max|Pozastaviť
Order Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd
Order Room Service • HBO Max|Hlasitosť 100 %
Order Room Service • HBO Max|Nastavenia zvuku a titulkov
Order Room Service • HBO Max|Celá obrazovka
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|Favourites
Order Room Service • HBO Max|Tab Group Favourites
Order Room Service • HBO Max|NAS
Order Room Service • HBO Max|Home
Order Room Service • HBO Max|Portainer
Order Room Service • HBO Max|Nginx Proxy Manager
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?
sqlite3 ~/.screenpipe/db.sqlite "SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;"
# What are those 24k elements with no app_name?
sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, COUNT(*) as cnt
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name IS NULL AND e.text IS NOT NULL
GROUP BY f.window_name
ORDER BY cnt DESC
LIMIT 10;"
# iTerm2 elements with any role
sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.role, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL
LIMIT 20;"
zsh: no matches found: elements?
block|25522
AXStaticText|4681
AXButton|1364
AXLink|1123
AXRadioButton|1017
AXTextField|607
AXCell|297
AXHeading|166
AXTextArea|151
AXPopUpButton|83
AXCheckBox|59
AXComboBox|7
zsh: no matches found: app_name?
|25079
zsh: command not found: #
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
AXRadioButton|APP (-zsh)
AXRadioButton|screenpipe"
AXRadioButton|Python"
AXStaticText|⌥⌘1
AXStaticText|screenpipe"
AXTextArea|Last login: Thu Apr 9 19:52:08 on ttys007
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ cd
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record
detected hardware tier: Mid
checking permissions...
screen recording: ok
microphone: ok
accessibility: ok
2026-04-09T19:53:07.212588Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-09T19:53:08.176294Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-09T19:53:08.180179Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-09T19:53:08.180172Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-09T19:53:08.180644Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-09T19:53:08.181079Z INFO screenpipe_audio::speaker::models: initiating wespeaker_en_voxceleb_CAM++.onnx model download...
2026-04-09T19:53:08.181124Z WARN screenpipe_audio::segmentation::segmentation_manager: embedding model unavailable at startup: wespeaker_en_voxceleb_CAM++.onnx model not available yet; download started in background
2026-04-09T19:53:08.181175Z INFO screenpipe_audio::speaker::models: initiating segmentation-3.0.onnx model download...
2026-04-09T19:53:08.181183Z WARN screenpipe_audio::segmentation::segmentation_manager: segmentation model unavailable at startup: segmentation-3.0.onnx model not available yet; download started in background
2026-04-09T19:53:08.181157Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model download attempt 1/3
2026-04-09T19:53:08.181223Z WARN screenpipe_audio::audio_manager::manager: silero vad unavailable, falling back to webrtc: silero vad model not available yet; download started in background
2026-04-09T19:53:08.181225Z INFO screenpipe_audio::speaker::models: downloading wespeaker_en_voxceleb_CAM++.onnx model from [URL_WITH_CREDENTIALS] ~ $
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":"ORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"\nOrder Room Service • HBO Max|Back\nOrder Room Service • HBO Max|Search\nOrder Room Service • HBO Max|Ukončiť prehrávanie\nOrder Room Service • HBO Max|Rozbaliť Epizód, 1 z 2\nOrder Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2\nOrder Room Service • HBO Max|Preskočiť dozadu o 10 s\nOrder Room Service • HBO Max|Pozastaviť\nOrder Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd\nOrder Room Service • HBO Max|Hlasitosť 100 %\nOrder Room Service • HBO Max|Nastavenia zvuku a titulkov\nOrder Room Service • HBO Max|Celá obrazovka\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|Favourites\nOrder Room Service • HBO Max|Tab Group Favourites\nOrder Room Service • HBO Max|NAS\nOrder Room Service • HBO Max|Home\nOrder Room Service • HBO Max|Portainer\nOrder Room Service • HBO Max|Nginx Proxy Manager\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?\nsqlite3 ~/.screenpipe/db.sqlite \"SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;\"\n\n# What are those 24k elements with no app_name?\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, COUNT(*) as cnt\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name IS NULL AND e.text IS NOT NULL\nGROUP BY f.window_name\nORDER BY cnt DESC\nLIMIT 10;\"\n\n# iTerm2 elements with any role\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.role, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL\nLIMIT 20;\"\nzsh: no matches found: elements?\nblock|25522\nAXStaticText|4681\nAXButton|1364\nAXLink|1123\nAXRadioButton|1017\nAXTextField|607\nAXCell|297\nAXHeading|166\nAXTextArea|151\nAXPopUpButton|83\nAXCheckBox|59\nAXComboBox|7\nzsh: no matches found: app_name?\n|25079\nzsh: command not found: #\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nAXRadioButton|APP (-zsh)\nAXRadioButton|screenpipe\"\nAXRadioButton|Python\"\nAXStaticText|⌥⌘1\nAXStaticText|screenpipe\"\nAXTextArea|Last login: Thu Apr 9 19:52:08 on ttys007\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ cd\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record\ndetected hardware tier: Mid\nchecking permissions...\n screen recording: ok\n microphone: ok\n accessibility: ok\n2026-04-09T19:53:07.212588Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6\n2026-04-09T19:53:08.176294Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor\n2026-04-09T19:53:08.180179Z INFO screenpipe: meeting detector enabled — independent of transcription mode\n2026-04-09T19:53:08.180172Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)\n2026-04-09T19:53:08.180644Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)\n2026-04-09T19:53:08.181079Z INFO screenpipe_audio::speaker::models: initiating wespeaker_en_voxceleb_CAM++.onnx model download...\n2026-04-09T19:53:08.181124Z WARN screenpipe_audio::segmentation::segmentation_manager: embedding model unavailable at startup: wespeaker_en_voxceleb_CAM++.onnx model not available yet; download started in background\n2026-04-09T19:53:08.181175Z INFO screenpipe_audio::speaker::models: initiating segmentation-3.0.onnx model download...\n2026-04-09T19:53:08.181183Z WARN screenpipe_audio::segmentation::segmentation_manager: segmentation model unavailable at startup: segmentation-3.0.onnx model not available yet; download started in background\n2026-04-09T19:53:08.181157Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model download attempt 1/3\n2026-04-09T19:53:08.181223Z WARN screenpipe_audio::audio_manager::manager: silero vad unavailable, falling back to webrtc: silero vad model not available yet; download started in background\n2026-04-09T19:53:08.181225Z INFO screenpipe_audio::speaker::models: downloading wespeaker_en_voxceleb_CAM++.onnx model from https://github.com/screenpipe/screenpipe/raw/refs/heads/main/crates/screenpipe-audio/models/pyannote/wespeaker_en_voxceleb_CAM++.onnx\n2026-04-09T19:53:08.181212Z INFO screenpipe_audio::speaker::models: segmentation-3.0.onnx model download attempt 1/3\n2026-04-09T19:53:08.181526Z INFO screenpipe_audio::speaker::models: downloading segmentation-3.0.onnx model from https://github.com/screenpipe/screenpipe/raw/refs/heads/main/crates/screenpipe-audio/models/pyannote/segmentation-3.0.onnx\n2026-04-09T19:53:08.181252Z INFO screenpipe_audio::vad::silero: downloading Silero VAD v5 model...\n2026-04-09T19:53:08.181607Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)\n2026-04-09T19:53:08.181646Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager\n2026-04-09T19:53:08.181366Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)\n2026-04-09T19:53:08.181759Z INFO screenpipe_core::pipes: installed built-in pipe: day-recap\n2026-04-09T19:53:08.181952Z INFO screenpipe_core::pipes: installed built-in pipe: standup-update\n2026-04-09T19:53:08.182315Z INFO screenpipe_core::pipes: installed built-in pipe: ai-habits\n2026-04-09T19:53:08.182501Z INFO screenpipe_core::pipes: installed built-in pipe: time-breakdown\n2026-04-09T19:53:08.182680Z INFO screenpipe_core::pipes: installed built-in pipe: video-export\n2026-04-09T19:53:08.182875Z INFO screenpipe_core::pipes: installed built-in pipe: meeting-summary\n2026-04-09T19:53:08.183091Z INFO screenpipe_core::pipes: loaded pipe: day-recap\n2026-04-09T19:53:08.183146Z INFO screenpipe_core::pipes: loaded pipe: standup-update\n2026-04-09T19:53:08.183187Z INFO screenpipe_core::pipes: loaded pipe: ai-habits\n2026-04-09T19:53:08.183237Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown\n2026-04-09T19:53:08.183306Z INFO screenpipe_core::pipes: loaded pipe: video-export\n2026-04-09T19:53:08.183363Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary\n2026-04-09T19:53:08.183380Z INFO screenpipe_core::pipes: loaded 6 pipes from \"/Users/lukas/.screenpipe/pipes\"\n\n\n\n _ \n __________________ ___ ____ ____ (_____ ___ \n / ___/ ___/ ___/ _ \\/ _ \\/ __ \\ / __ \\/ / __ \\/ _ \\\n (__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/\n/____/\\___/_/ \\___/\\___/_/ /_/ / .___/_/ .___/\\___/ \n /_/ /_/ \n\n\n\npower AI by everything you've seen, said or heard\nopen source | runs locally | developer friendly\n\n\n┌────────────────────────┬────────────────────────────────────┐\n│ setting │ value │\n├────────────────────────┼────────────────────────────────────┤\n│ audio chunk duration │ 30 seconds │\n│ port │ 3030 │\n│ audio disabled │ false │\n│ vision disabled │ false │\n│ audio engine │ Parakeet │\n│ vad engine │ Silero │\n│ data directory │ /Users/lukas/.screenpipe │\n│ debug mode │ false │\n│ telemetry │ true │\n│ use pii removal │ true │\n│ use all monitors │ true │\n│ ignored windows │ [] │\n│ included windows │ [] │\n│ cloud sync │ disabled │\n│ auto-destruct pid │ 0 │\n│ deepgram key │ not set │\n├────────────────────────┼────────────────────────────────────┤\n│ languages │ │\n│ │ all languages │\n├────────────────────────┼────────────────────────────────────┤\n│ monitors │ │\n│ │ no monitors available │\n├────────────────────────┼────────────────────────────────────┤\n│ audio devices │ │\n│ │ soundcore AeroClip (input) │\n│ │ System Audio (output) │\n└────────────────────────┴────────────────────────────────────┘\nyou are using local processing. all your data stays on your computer.\n\nwarning: telemetry is enabled. only error-level data will be sent.\nto disable, use the --disable-telemetry flag.\n\ncheck latest changes here: https://github.com/screenpipe/screenpipe/releases\n2026-04-09T19:53:08.185865Z INFO screenpipe: starting UI event capture\n2026-04-09T19:53:08.185586Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)\n2026-04-09T19:53:08.188922Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh\n2026-04-09T19:53:08.194461Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))\n2026-04-09T19:53:08.201212Z INFO screenpipe_engine::ui_recorder: Starting UI event capture\n2026-04-09T19:53:08.217633Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)\n2026-04-09T19:53:08.217794Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-08 16:53:08.217792 UTC to 2026-04-09 16:53:08.217792 UTC)\n2026-04-09T19:53:08.217649Z INFO screenpipe_engine::ui_recorder: UI recording session started: 3b59b1d1-d80e-4689-8c72-6476af4571df\n2026-04-09T19:53:08.220368Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)\n2026-04-09T19:53:08.222489Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 0 frame entries, coverage from 2026-04-08 16:53:08.217792 UTC\n2026-04-09T19:53:08.227257Z INFO screenpipe_engine::server: Server listening on 0.0.0.0:3030\n2026-04-09T19:53:08.232250Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030\n2026-04-09T19:53:08.543211Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)\n2026-04-09T19:53:08.543241Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)\n2026-04-09T19:53:08.543253Z INFO screenpipe_engine::vision_manager::manager: Skipping monitor 2 (Display 2_3008x1253_-813,-1253) — not in allowed list\n2026-04-09T19:53:08.543262Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)\n2026-04-09T19:53:08.543299Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)\n2026-04-09T19:53:09.210453Z INFO screenpipe_audio::vad::silero: Silero VAD v5 model downloaded and saved to: \"/Users/lukas/Library/Caches/screenpipe/vad/silero_vad_v5.onnx\"\n2026-04-09T19:53:09.352790Z INFO screenpipe_audio::speaker::models: saving segmentation-3.0.onnx model (5983836 bytes) to \"/Users/lukas/Library/Caches/screenpipe/models/segmentation-3.0.onnx\"\n2026-04-09T19:53:09.355799Z INFO screenpipe_audio::speaker::models: segmentation-3.0.onnx model successfully downloaded and saved\n2026-04-09T19:53:09.367746Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps)\n2026-04-09T19:53:10.102366Z INFO screenpipe_audio::speaker::models: saving wespeaker_en_voxceleb_CAM++.onnx model (29292684 bytes) to \"/Users/lukas/Library/Caches/screenpipe/models/wespeaker_en_voxceleb_CAM++.onnx\"\n2026-04-09T19:53:10.112264Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model successfully downloaded and saved\n2026-04-09T19:53:13.221908Z INFO screenpipe_engine::retention: retention: initialized with 14d retention\n2026-04-09T19:53:13.222855Z INFO screenpipe: local retention auto-enabled (14 days)\n2026-04-09T19:53:15.841867Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=1, dur=797ms\n2026-04-09T19:53:18.189478Z WARN screenpipe_audio::transcription::engine: whisper model is not available locally yet for WhisperTiny; audio transcription disabled until download completes\n2026-04-09T19:53:18.189794Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:53:18.190227Z INFO screenpipe_audio::transcription::whisper::model: downloading model \"ggml-tiny.bin\"\n2026-04-09T19:53:18.190847Z INFO screenpipe_audio::audio_manager::manager: audio manager started\n2026-04-09T19:53:18.190916Z INFO screenpipe_audio::audio_manager::manager: calendar-assisted speaker diarization: listening for meeting events\nggml-tiny.bin [00:00:01] [███████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 38.34 MiB/74.09 MiB 21.65 MiB/s (2s)2026-04-09T19:53:19.720503Z INFO screenpipe_audio::audio_manager::device_monitor: model capabilities changed after background download; restarting central handlers\n2026-04-09T19:53:19.720675Z WARN screenpipe_audio::transcription::engine: whisper model is not available locally yet for WhisperTiny; audio transcription disabled until download completes\n2026-04-09T19:53:19.720732Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:53:19.720787Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:53:19.720795Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:53:19.721204Z INFO screenpipe_audio::transcription::whisper::model: downloading model \"ggml-tiny.bin\"\nggml-tiny.bin [00:00:01] [██████████████████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 45.66 MiB/74.09 MiB 23.13 MiB/s (1s)\nggml-tiny.bin [00:00:00] [███░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 2.09 MiB/74.09 MiB 1.63 MiB/s (44s)2026-04-09T19:53:20.383627Z INFO screenpipe_audio::device::device_manager: starting recording for device: System Audio (output)\n2026-04-09T19:53:20.383837Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for System Audio (output) (30s segments)\nggml-tiny.bin [00:00:01] [██████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 9.22 MiB/74.09 MiB 4.95 MiB/s (13s)2026-04-09T19:53:20.972014Z INFO screenpipe_audio::device::device_manager: starting recording for device: soundcore AeroClip (input)\n2026-04-09T19:53:20.972101Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for soundcore AeroClip (input) (30s segments)\nggml-tiny.bin [00:00:02] [███████████████████████████████████████████████████████████████████████████████████████████████████████████████████] 74.09 MiB/74.09 MiB 28.28 MiB/s (0s)2026-04-09T19:53:21.047457Z INFO screenpipe_audio::transcription::whisper::model: model downloaded ggml-tiny.bin\n2026-04-09T19:53:21.047589Z INFO screenpipe_audio::transcription::engine: whisper model downloaded in background: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\nggml-tiny.bin [00:00:03] [███████████████████████████████████████████████████████████████████████████████████████████████████████████████████] 74.09 MiB/74.09 MiB 23.56 MiB/s (0s)2026-04-09T19:53:23.080110Z INFO screenpipe_audio::transcription::whisper::model: model downloaded ggml-tiny.bin\n2026-04-09T19:53:23.080240Z INFO screenpipe_audio::transcription::engine: whisper model downloaded in background: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:53:52.431282Z INFO screenpipe_audio::transcription::engine: whisper model available: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:53:52.431325Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)\n2026-04-09T19:53:52.431330Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...\nwhisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'\nwhisper_init_with_params_no_state: use gpu = 1\nwhisper_init_with_params_no_state: flash attn = 0\nwhisper_init_with_params_no_state: gpu_device = 0\nwhisper_init_with_params_no_state: dtw = 0\nggml_metal_device_init: tensor API disabled for pre-M5 and pre-A19 devices\nggml_metal_library_init: using embedded metal library\nggml_metal_library_init: loaded in 14.652 sec\nggml_metal_rsets_init: creating a residency set collection (keep_alive = 180 s)\nggml_metal_device_init: GPU name: Apple M1\nggml_metal_device_init: GPU family: MTLGPUFamilyApple7 (1007)\nggml_metal_device_init: GPU family: MTLGPUFamilyCommon3 (3003)\nggml_metal_device_init: GPU family: MTLGPUFamilyMetal3 (5001)\nggml_metal_device_init: simdgroup reduction = true\nggml_metal_device_init: simdgroup matrix mul. = true\nggml_metal_device_init: has unified memory = true\nggml_metal_device_init: has bfloat = true\nggml_metal_device_init: has tensor = false\nggml_metal_device_init: use residency sets = true\nggml_metal_device_init: use shared buffers = true\nggml_metal_device_init: recommendedMaxWorkingSetSize = 11453.25 MB\nwhisper_init_with_params_no_state: devices = 3\nwhisper_init_with_params_no_state: backends = 3\nwhisper_model_load: loading model\nwhisper_model_load: n_vocab = 51865\nwhisper_model_load: n_audio_ctx = 1500\nwhisper_model_load: n_audio_state = 384\nwhisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.178366Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\n2026-04-09T19:54:07.178441Z INFO screenpipe_audio::audio_manager::device_monitor: model capabilities changed after background download; restarting central handlers\n2026-04-09T19:54:07.178636Z INFO screenpipe_audio::transcription::engine: whisper model available: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:54:07.178655Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)\n2026-04-09T19:54:07.178661Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...\nwhisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'\nwhisper_init_with_params_no_state: use gpu = 1\nwhisper_init_with_params_no_state: flash attn = 0\nwhisper_init_with_params_no_state: gpu_device = 0\nwhisper_init_with_params_no_state: dtw = 0\nwhisper_init_with_params_no_state: devices = 3\nwhisper_init_with_params_no_state: backends = 3\nwhisper_model_load: loading model\nwhisper_model_load: n_vocab = 51865\nwhisper_model_load: n_audio_ctx = 1500\nwhisper_model_load: n_audio_state = 384\nwhisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"value":"ORDER BY elements DESC;\"\n|24604|206\nDia|2884|17\niTerm2|2087|136\nClaude|2040|8\nSafari|1248|10\nFirefox|454|1\nActivity Monitor|380|2\nSlack|234|1\nControl Centre|178|1\nUserNotificationCenter|20|4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL\nLIMIT 30;\"\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'Safari' AND e.text IS NOT NULL\nLIMIT 20;\"\nOrder Room Service • HBO Max|Back\nOrder Room Service • HBO Max|Search\nOrder Room Service • HBO Max|Ukončiť prehrávanie\nOrder Room Service • HBO Max|Rozbaliť Epizód, 1 z 2\nOrder Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2\nOrder Room Service • HBO Max|Preskočiť dozadu o 10 s\nOrder Room Service • HBO Max|Pozastaviť\nOrder Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd\nOrder Room Service • HBO Max|Hlasitosť 100 %\nOrder Room Service • HBO Max|Nastavenia zvuku a titulkov\nOrder Room Service • HBO Max|Celá obrazovka\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|close tab\nOrder Room Service • HBO Max|Favourites\nOrder Room Service • HBO Max|Tab Group Favourites\nOrder Room Service • HBO Max|NAS\nOrder Room Service • HBO Max|Home\nOrder Room Service • HBO Max|Portainer\nOrder Room Service • HBO Max|Nginx Proxy Manager\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?\nsqlite3 ~/.screenpipe/db.sqlite \"SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;\"\n\n# What are those 24k elements with no app_name?\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT f.window_name, COUNT(*) as cnt\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name IS NULL AND e.text IS NOT NULL\nGROUP BY f.window_name\nORDER BY cnt DESC\nLIMIT 10;\"\n\n# iTerm2 elements with any role\nsqlite3 ~/.screenpipe/db.sqlite \"\nSELECT e.role, e.text\nFROM elements e\nJOIN frames f ON e.frame_id = f.id\nWHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL\nLIMIT 20;\"\nzsh: no matches found: elements?\nblock|25522\nAXStaticText|4681\nAXButton|1364\nAXLink|1123\nAXRadioButton|1017\nAXTextField|607\nAXCell|297\nAXHeading|166\nAXTextArea|151\nAXPopUpButton|83\nAXCheckBox|59\nAXComboBox|7\nzsh: no matches found: app_name?\n|25079\nzsh: command not found: #\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nAXRadioButton|APP (-zsh)\nAXRadioButton|screenpipe\"\nAXRadioButton|Python\"\nAXStaticText|⌥⌘1\nAXStaticText|screenpipe\"\nAXTextArea|Last login: Thu Apr 9 19:52:08 on ttys007\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ cd\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record\ndetected hardware tier: Mid\nchecking permissions...\n screen recording: ok\n microphone: ok\n accessibility: ok\n2026-04-09T19:53:07.212588Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6\n2026-04-09T19:53:08.176294Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor\n2026-04-09T19:53:08.180179Z INFO screenpipe: meeting detector enabled — independent of transcription mode\n2026-04-09T19:53:08.180172Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)\n2026-04-09T19:53:08.180644Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)\n2026-04-09T19:53:08.181079Z INFO screenpipe_audio::speaker::models: initiating wespeaker_en_voxceleb_CAM++.onnx model download...\n2026-04-09T19:53:08.181124Z WARN screenpipe_audio::segmentation::segmentation_manager: embedding model unavailable at startup: wespeaker_en_voxceleb_CAM++.onnx model not available yet; download started in background\n2026-04-09T19:53:08.181175Z INFO screenpipe_audio::speaker::models: initiating segmentation-3.0.onnx model download...\n2026-04-09T19:53:08.181183Z WARN screenpipe_audio::segmentation::segmentation_manager: segmentation model unavailable at startup: segmentation-3.0.onnx model not available yet; download started in background\n2026-04-09T19:53:08.181157Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model download attempt 1/3\n2026-04-09T19:53:08.181223Z WARN screenpipe_audio::audio_manager::manager: silero vad unavailable, falling back to webrtc: silero vad model not available yet; download started in background\n2026-04-09T19:53:08.181225Z INFO screenpipe_audio::speaker::models: downloading wespeaker_en_voxceleb_CAM++.onnx model from https://github.com/screenpipe/screenpipe/raw/refs/heads/main/crates/screenpipe-audio/models/pyannote/wespeaker_en_voxceleb_CAM++.onnx\n2026-04-09T19:53:08.181212Z INFO screenpipe_audio::speaker::models: segmentation-3.0.onnx model download attempt 1/3\n2026-04-09T19:53:08.181526Z INFO screenpipe_audio::speaker::models: downloading segmentation-3.0.onnx model from https://github.com/screenpipe/screenpipe/raw/refs/heads/main/crates/screenpipe-audio/models/pyannote/segmentation-3.0.onnx\n2026-04-09T19:53:08.181252Z INFO screenpipe_audio::vad::silero: downloading Silero VAD v5 model...\n2026-04-09T19:53:08.181607Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)\n2026-04-09T19:53:08.181646Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager\n2026-04-09T19:53:08.181366Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)\n2026-04-09T19:53:08.181759Z INFO screenpipe_core::pipes: installed built-in pipe: day-recap\n2026-04-09T19:53:08.181952Z INFO screenpipe_core::pipes: installed built-in pipe: standup-update\n2026-04-09T19:53:08.182315Z INFO screenpipe_core::pipes: installed built-in pipe: ai-habits\n2026-04-09T19:53:08.182501Z INFO screenpipe_core::pipes: installed built-in pipe: time-breakdown\n2026-04-09T19:53:08.182680Z INFO screenpipe_core::pipes: installed built-in pipe: video-export\n2026-04-09T19:53:08.182875Z INFO screenpipe_core::pipes: installed built-in pipe: meeting-summary\n2026-04-09T19:53:08.183091Z INFO screenpipe_core::pipes: loaded pipe: day-recap\n2026-04-09T19:53:08.183146Z INFO screenpipe_core::pipes: loaded pipe: standup-update\n2026-04-09T19:53:08.183187Z INFO screenpipe_core::pipes: loaded pipe: ai-habits\n2026-04-09T19:53:08.183237Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown\n2026-04-09T19:53:08.183306Z INFO screenpipe_core::pipes: loaded pipe: video-export\n2026-04-09T19:53:08.183363Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary\n2026-04-09T19:53:08.183380Z INFO screenpipe_core::pipes: loaded 6 pipes from \"/Users/lukas/.screenpipe/pipes\"\n\n\n\n _ \n __________________ ___ ____ ____ (_____ ___ \n / ___/ ___/ ___/ _ \\/ _ \\/ __ \\ / __ \\/ / __ \\/ _ \\\n (__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/\n/____/\\___/_/ \\___/\\___/_/ /_/ / .___/_/ .___/\\___/ \n /_/ /_/ \n\n\n\npower AI by everything you've seen, said or heard\nopen source | runs locally | developer friendly\n\n\n┌────────────────────────┬────────────────────────────────────┐\n│ setting │ value │\n├────────────────────────┼────────────────────────────────────┤\n│ audio chunk duration │ 30 seconds │\n│ port │ 3030 │\n│ audio disabled │ false │\n│ vision disabled │ false │\n│ audio engine │ Parakeet │\n│ vad engine │ Silero │\n│ data directory │ /Users/lukas/.screenpipe │\n│ debug mode │ false │\n│ telemetry │ true │\n│ use pii removal │ true │\n│ use all monitors │ true │\n│ ignored windows │ [] │\n│ included windows │ [] │\n│ cloud sync │ disabled │\n│ auto-destruct pid │ 0 │\n│ deepgram key │ not set │\n├────────────────────────┼────────────────────────────────────┤\n│ languages │ │\n│ │ all languages │\n├────────────────────────┼────────────────────────────────────┤\n│ monitors │ │\n│ │ no monitors available │\n├────────────────────────┼────────────────────────────────────┤\n│ audio devices │ │\n│ │ soundcore AeroClip (input) │\n│ │ System Audio (output) │\n└────────────────────────┴────────────────────────────────────┘\nyou are using local processing. all your data stays on your computer.\n\nwarning: telemetry is enabled. only error-level data will be sent.\nto disable, use the --disable-telemetry flag.\n\ncheck latest changes here: https://github.com/screenpipe/screenpipe/releases\n2026-04-09T19:53:08.185865Z INFO screenpipe: starting UI event capture\n2026-04-09T19:53:08.185586Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)\n2026-04-09T19:53:08.188922Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh\n2026-04-09T19:53:08.194461Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))\n2026-04-09T19:53:08.201212Z INFO screenpipe_engine::ui_recorder: Starting UI event capture\n2026-04-09T19:53:08.217633Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)\n2026-04-09T19:53:08.217794Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-08 16:53:08.217792 UTC to 2026-04-09 16:53:08.217792 UTC)\n2026-04-09T19:53:08.217649Z INFO screenpipe_engine::ui_recorder: UI recording session started: 3b59b1d1-d80e-4689-8c72-6476af4571df\n2026-04-09T19:53:08.220368Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)\n2026-04-09T19:53:08.222489Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 0 frame entries, coverage from 2026-04-08 16:53:08.217792 UTC\n2026-04-09T19:53:08.227257Z INFO screenpipe_engine::server: Server listening on 0.0.0.0:3030\n2026-04-09T19:53:08.232250Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030\n2026-04-09T19:53:08.543211Z INFO screenpipe_engine::vision_manager::manager: Starting vision recording for monitor 1 (1440x900)\n2026-04-09T19:53:08.543241Z INFO screenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)\n2026-04-09T19:53:08.543253Z INFO screenpipe_engine::vision_manager::manager: Skipping monitor 2 (Display 2_3008x1253_-813,-1253) — not in allowed list\n2026-04-09T19:53:08.543262Z INFO screenpipe_engine::vision_manager::monitor_watcher: Starting monitor watcher (polling every 5 seconds)\n2026-04-09T19:53:08.543299Z INFO screenpipe_engine::event_driven_capture: event-driven capture started for monitor 1 (device: monitor_1)\n2026-04-09T19:53:09.210453Z INFO screenpipe_audio::vad::silero: Silero VAD v5 model downloaded and saved to: \"/Users/lukas/Library/Caches/screenpipe/vad/silero_vad_v5.onnx\"\n2026-04-09T19:53:09.352790Z INFO screenpipe_audio::speaker::models: saving segmentation-3.0.onnx model (5983836 bytes) to \"/Users/lukas/Library/Caches/screenpipe/models/segmentation-3.0.onnx\"\n2026-04-09T19:53:09.355799Z INFO screenpipe_audio::speaker::models: segmentation-3.0.onnx model successfully downloaded and saved\n2026-04-09T19:53:09.367746Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps)\n2026-04-09T19:53:10.102366Z INFO screenpipe_audio::speaker::models: saving wespeaker_en_voxceleb_CAM++.onnx model (29292684 bytes) to \"/Users/lukas/Library/Caches/screenpipe/models/wespeaker_en_voxceleb_CAM++.onnx\"\n2026-04-09T19:53:10.112264Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model successfully downloaded and saved\n2026-04-09T19:53:13.221908Z INFO screenpipe_engine::retention: retention: initialized with 14d retention\n2026-04-09T19:53:13.222855Z INFO screenpipe: local retention auto-enabled (14 days)\n2026-04-09T19:53:15.841867Z INFO screenpipe_engine::event_driven_capture: startup capture for monitor 1: frame_id=1, dur=797ms\n2026-04-09T19:53:18.189478Z WARN screenpipe_audio::transcription::engine: whisper model is not available locally yet for WhisperTiny; audio transcription disabled until download completes\n2026-04-09T19:53:18.189794Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:53:18.190227Z INFO screenpipe_audio::transcription::whisper::model: downloading model \"ggml-tiny.bin\"\n2026-04-09T19:53:18.190847Z INFO screenpipe_audio::audio_manager::manager: audio manager started\n2026-04-09T19:53:18.190916Z INFO screenpipe_audio::audio_manager::manager: calendar-assisted speaker diarization: listening for meeting events\nggml-tiny.bin [00:00:01] [███████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 38.34 MiB/74.09 MiB 21.65 MiB/s (2s)2026-04-09T19:53:19.720503Z INFO screenpipe_audio::audio_manager::device_monitor: model capabilities changed after background download; restarting central handlers\n2026-04-09T19:53:19.720675Z WARN screenpipe_audio::transcription::engine: whisper model is not available locally yet for WhisperTiny; audio transcription disabled until download completes\n2026-04-09T19:53:19.720732Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:53:19.720787Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:53:19.720795Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:53:19.721204Z INFO screenpipe_audio::transcription::whisper::model: downloading model \"ggml-tiny.bin\"\nggml-tiny.bin [00:00:01] [██████████████████████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 45.66 MiB/74.09 MiB 23.13 MiB/s (1s)\nggml-tiny.bin [00:00:00] [███░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 2.09 MiB/74.09 MiB 1.63 MiB/s (44s)2026-04-09T19:53:20.383627Z INFO screenpipe_audio::device::device_manager: starting recording for device: System Audio (output)\n2026-04-09T19:53:20.383837Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for System Audio (output) (30s segments)\nggml-tiny.bin [00:00:01] [██████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 9.22 MiB/74.09 MiB 4.95 MiB/s (13s)2026-04-09T19:53:20.972014Z INFO screenpipe_audio::device::device_manager: starting recording for device: soundcore AeroClip (input)\n2026-04-09T19:53:20.972101Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for soundcore AeroClip (input) (30s segments)\nggml-tiny.bin [00:00:02] [███████████████████████████████████████████████████████████████████████████████████████████████████████████████████] 74.09 MiB/74.09 MiB 28.28 MiB/s (0s)2026-04-09T19:53:21.047457Z INFO screenpipe_audio::transcription::whisper::model: model downloaded ggml-tiny.bin\n2026-04-09T19:53:21.047589Z INFO screenpipe_audio::transcription::engine: whisper model downloaded in background: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\nggml-tiny.bin [00:00:03] [███████████████████████████████████████████████████████████████████████████████████████████████████████████████████] 74.09 MiB/74.09 MiB 23.56 MiB/s (0s)2026-04-09T19:53:23.080110Z INFO screenpipe_audio::transcription::whisper::model: model downloaded ggml-tiny.bin\n2026-04-09T19:53:23.080240Z INFO screenpipe_audio::transcription::engine: whisper model downloaded in background: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:53:52.431282Z INFO screenpipe_audio::transcription::engine: whisper model available: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:53:52.431325Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)\n2026-04-09T19:53:52.431330Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...\nwhisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'\nwhisper_init_with_params_no_state: use gpu = 1\nwhisper_init_with_params_no_state: flash attn = 0\nwhisper_init_with_params_no_state: gpu_device = 0\nwhisper_init_with_params_no_state: dtw = 0\nggml_metal_device_init: tensor API disabled for pre-M5 and pre-A19 devices\nggml_metal_library_init: using embedded metal library\nggml_metal_library_init: loaded in 14.652 sec\nggml_metal_rsets_init: creating a residency set collection (keep_alive = 180 s)\nggml_metal_device_init: GPU name: Apple M1\nggml_metal_device_init: GPU family: MTLGPUFamilyApple7 (1007)\nggml_metal_device_init: GPU family: MTLGPUFamilyCommon3 (3003)\nggml_metal_device_init: GPU family: MTLGPUFamilyMetal3 (5001)\nggml_metal_device_init: simdgroup reduction = true\nggml_metal_device_init: simdgroup matrix mul. = true\nggml_metal_device_init: has unified memory = true\nggml_metal_device_init: has bfloat = true\nggml_metal_device_init: has tensor = false\nggml_metal_device_init: use residency sets = true\nggml_metal_device_init: use shared buffers = true\nggml_metal_device_init: recommendedMaxWorkingSetSize = 11453.25 MB\nwhisper_init_with_params_no_state: devices = 3\nwhisper_init_with_params_no_state: backends = 3\nwhisper_model_load: loading model\nwhisper_model_load: n_vocab = 51865\nwhisper_model_load: n_audio_ctx = 1500\nwhisper_model_load: n_audio_state = 384\nwhisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.178366Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\n2026-04-09T19:54:07.178441Z INFO screenpipe_audio::audio_manager::device_monitor: model capabilities changed after background download; restarting central handlers\n2026-04-09T19:54:07.178636Z INFO screenpipe_audio::transcription::engine: whisper model available: \"/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin\"\n2026-04-09T19:54:07.178655Z INFO screenpipe_audio::transcription::whisper::model: whisper context: gpu acceleration enabled (Metal on macOS, Vulkan on Windows)\n2026-04-09T19:54:07.178661Z INFO screenpipe_audio::transcription::engine: loading whisper model with GPU acceleration...\nwhisper_init_from_file_with_params_no_state: loading model from '/Users/lukas/.cache/huggingface/hub/models--ggerganov--whisper.cpp/snapshots/5359861c739e955e79d9a303bcbc70fb988958b1/ggml-tiny.bin'\nwhisper_init_with_params_no_state: use gpu = 1\nwhisper_init_with_params_no_state: flash attn = 0\nwhisper_init_with_params_no_state: gpu_device = 0\nwhisper_init_with_params_no_state: dtw = 0\nwhisper_init_with_params_no_state: devices = 3\nwhisper_init_with_params_no_state: backends = 3\nwhisper_model_load: loading model\nwhisper_model_load: n_vocab = 51865\nwhisper_model_load: n_audio_ctx = 1500\nwhisper_model_load: n_audio_state = 384\nwhisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
1614245617554003222
|
3100541190118501737
|
click
|
accessibility
|
NULL
|
ORDER BY elements DESC;"
|24604|206
Dia|2884|1 ORDER BY elements DESC;"
|24604|206
Dia|2884|17
iTerm2|2087|136
Claude|2040|8
Safari|1248|10
Firefox|454|1
Activity Monitor|380|2
Slack|234|1
Control Centre|178|1
UserNotificationCenter|20|4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.role = 'block' AND e.text NOT NULL
LIMIT 30;"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'Safari' AND e.text IS NOT NULL
LIMIT 20;"
Order Room Service • HBO Max|Back
Order Room Service • HBO Max|Search
Order Room Service • HBO Max|Ukončiť prehrávanie
Order Room Service • HBO Max|Rozbaliť Epizód, 1 z 2
Order Room Service • HBO Max|Rozbaliť Tiež by sa vám mohlo páčiť, 2 z 2
Order Room Service • HBO Max|Preskočiť dozadu o 10 s
Order Room Service • HBO Max|Pozastaviť
Order Room Service • HBO Max|Preskočiť dopredu o 10 sekúnd
Order Room Service • HBO Max|Hlasitosť 100 %
Order Room Service • HBO Max|Nastavenia zvuku a titulkov
Order Room Service • HBO Max|Celá obrazovka
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|close tab
Order Room Service • HBO Max|Favourites
Order Room Service • HBO Max|Tab Group Favourites
Order Room Service • HBO Max|NAS
Order Room Service • HBO Max|Home
Order Room Service • HBO Max|Portainer
Order Room Service • HBO Max|Nginx Proxy Manager
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ # What roles exist in elements?
sqlite3 ~/.screenpipe/db.sqlite "SELECT role, COUNT(*) FROM elements GROUP BY role ORDER BY COUNT(*) DESC;"
# What are those 24k elements with no app_name?
sqlite3 ~/.screenpipe/db.sqlite "
SELECT f.window_name, COUNT(*) as cnt
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name IS NULL AND e.text IS NOT NULL
GROUP BY f.window_name
ORDER BY cnt DESC
LIMIT 10;"
# iTerm2 elements with any role
sqlite3 ~/.screenpipe/db.sqlite "
SELECT e.role, e.text
FROM elements e
JOIN frames f ON e.frame_id = f.id
WHERE f.app_name = 'iTerm2' AND e.text IS NOT NULL
LIMIT 20;"
zsh: no matches found: elements?
block|25522
AXStaticText|4681
AXButton|1364
AXLink|1123
AXRadioButton|1017
AXTextField|607
AXCell|297
AXHeading|166
AXTextArea|151
AXPopUpButton|83
AXCheckBox|59
AXComboBox|7
zsh: no matches found: app_name?
|25079
zsh: command not found: #
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
AXRadioButton|APP (-zsh)
AXRadioButton|screenpipe"
AXRadioButton|Python"
AXStaticText|⌥⌘1
AXStaticText|screenpipe"
AXTextArea|Last login: Thu Apr 9 19:52:08 on ttys007
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-18909-automated-reports-ask-jiminny) $ cd
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ npx screenpipe@latest record
detected hardware tier: Mid
checking permissions...
screen recording: ok
microphone: ok
accessibility: ok
2026-04-09T19:53:07.212588Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-04-09T19:53:08.176294Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-04-09T19:53:08.180179Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-04-09T19:53:08.180172Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-04-09T19:53:08.180644Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-04-09T19:53:08.181079Z INFO screenpipe_audio::speaker::models: initiating wespeaker_en_voxceleb_CAM++.onnx model download...
2026-04-09T19:53:08.181124Z WARN screenpipe_audio::segmentation::segmentation_manager: embedding model unavailable at startup: wespeaker_en_voxceleb_CAM++.onnx model not available yet; download started in background
2026-04-09T19:53:08.181175Z INFO screenpipe_audio::speaker::models: initiating segmentation-3.0.onnx model download...
2026-04-09T19:53:08.181183Z WARN screenpipe_audio::segmentation::segmentation_manager: segmentation model unavailable at startup: segmentation-3.0.onnx model not available yet; download started in background
2026-04-09T19:53:08.181157Z INFO screenpipe_audio::speaker::models: wespeaker_en_voxceleb_CAM++.onnx model download attempt 1/3
2026-04-09T19:53:08.181223Z WARN screenpipe_audio::audio_manager::manager: silero vad unavailable, falling back to webrtc: silero vad model not available yet; download started in background
2026-04-09T19:53:08.181225Z INFO screenpipe_audio::speaker::models: downloading wespeaker_en_voxceleb_CAM++.onnx model from [URL_WITH_CREDENTIALS] ~ $
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
|
|
835
|
20
|
7
|
2026-04-11T12:26:31.678856+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910391678_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
whisper_model_load: n_audio_head = 6
whisper_mode whisper_model_load: n_audio_head = 6
whisper_model_load: n_audio_layer = 4
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 384
whisper_model_load: n_text_head = 6
whisper_model_load: n_text_layer = 4
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 1 (tiny)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: n_langs = 99
whisper_model_load: Metal total size = 77.11 MB
whisper_model_load: model size = 77.11 MB
2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)
2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh
2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh
2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes | jq .
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":"whisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes | jq .","depth":4,"value":"whisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes | jq .","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"}]...
|
6949573146306646704
|
-8779111885514805891
|
clipboard
|
accessibility
|
NULL
|
whisper_model_load: n_audio_head = 6
whisper_mode whisper_model_load: n_audio_head = 6
whisper_model_load: n_audio_layer = 4
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 384
whisper_model_load: n_text_head = 6
whisper_model_load: n_text_layer = 4
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 1 (tiny)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: n_langs = 99
whisper_model_load: Metal total size = 77.11 MB
whisper_model_load: model size = 77.11 MB
2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)
2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh
2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh
2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes | jq .
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...
|
834
|
|
836
|
20
|
8
|
2026-04-11T12:26:36.063923+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910396063_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
whisper_model_load: n_audio_head = 6
whisper_mode whisper_model_load: n_audio_head = 6
whisper_model_load: n_audio_layer = 4
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 384
whisper_model_load: n_text_head = 6
whisper_model_load: n_text_layer = 4
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 1 (tiny)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: n_langs = 99
whisper_model_load: Metal total size = 77.11 MB
whisper_model_load: model size = 77.11 MB
2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)
2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh
2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh
2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl [URL_WITH_CREDENTIALS] ~ $
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":"whisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes | jq .\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 10805 100 10805 0 0 1966k 0 --:--:-- --:--:-- --:--:-- 2110k\n{\n \"data\": [\n {\n \"config\": {\n \"description\": \"Summarize meeting transcript with key takeaways and action items\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🤝\u0000\",\n \"name\": \"meeting-summary\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Meeting Summary\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Summarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Meeting Summary\\ndescription: \\\"Summarize meeting transcript with key takeaways and action items\\\"\\nicon: \\\"🤝\u0000\\\"\\nfeatured: false\\n---\\n\\nSummarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\\n\"\n },\n {\n \"config\": {\n \"description\": \"Where your time went — by app, project, and category\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"⏱\",\n \"name\": \"time-breakdown\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Time Breakdown\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Time Breakdown\\ndescription: \\\"Where your time went — by app, project, and category\\\"\\nicon: \\\"⏱\\\"\\nfeatured: false\\n---\\n\\nAnalyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Today's accomplishments, key moments, and unfinished work\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"📋\u0000\",\n \"name\": \"day-recap\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Day Recap\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Day Recap\\ndescription: \\\"Today's accomplishments, key moments, and unfinished work\\\"\\nicon: \\\"📋\u0000\\\"\\nfeatured: true\\n---\\n\\nAnalyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"How you use AI tools — patterns and insights\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🤖\u0000\",\n \"name\": \"ai-habits\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"AI Habits\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Search my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: AI Habits\\ndescription: \\\"How you use AI tools — patterns and insights\\\"\\nicon: \\\"🤖\u0000\\\"\\nfeatured: true\\n---\\n\\nSearch my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Create a video of your recent screen activity\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🎬\u0000\",\n \"name\": \"video-export\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Export Video Clip\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Export a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Export Video Clip\\ndescription: \\\"Create a video of your recent screen activity\\\"\\nicon: \\\"🎬\u0000\\\"\\nfeatured: false\\n---\\n\\nExport a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\\n\"\n },\n {\n \"config\": {\n \"description\": \"What you did, what's next, and any blockers\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🏢\u0000\",\n \"name\": \"standup-update\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Standup Update\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Based on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Standup Update\\ndescription: \\\"What you did, what's next, and any blockers\\\"\\nicon: \\\"🏢\u0000\\\"\\nfeatured: true\\n---\\n\\nBased on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\\n\"\n }\n ],\n \"total\": 6\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"value":"whisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes | jq .\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 10805 100 10805 0 0 1966k 0 --:--:-- --:--:-- --:--:-- 2110k\n{\n \"data\": [\n {\n \"config\": {\n \"description\": \"Summarize meeting transcript with key takeaways and action items\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🤝\u0000\",\n \"name\": \"meeting-summary\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Meeting Summary\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Summarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Meeting Summary\\ndescription: \\\"Summarize meeting transcript with key takeaways and action items\\\"\\nicon: \\\"🤝\u0000\\\"\\nfeatured: false\\n---\\n\\nSummarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\\n\"\n },\n {\n \"config\": {\n \"description\": \"Where your time went — by app, project, and category\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"⏱\",\n \"name\": \"time-breakdown\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Time Breakdown\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Time Breakdown\\ndescription: \\\"Where your time went — by app, project, and category\\\"\\nicon: \\\"⏱\\\"\\nfeatured: false\\n---\\n\\nAnalyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Today's accomplishments, key moments, and unfinished work\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"📋\u0000\",\n \"name\": \"day-recap\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Day Recap\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Day Recap\\ndescription: \\\"Today's accomplishments, key moments, and unfinished work\\\"\\nicon: \\\"📋\u0000\\\"\\nfeatured: true\\n---\\n\\nAnalyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"How you use AI tools — patterns and insights\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🤖\u0000\",\n \"name\": \"ai-habits\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"AI Habits\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Search my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: AI Habits\\ndescription: \\\"How you use AI tools — patterns and insights\\\"\\nicon: \\\"🤖\u0000\\\"\\nfeatured: true\\n---\\n\\nSearch my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Create a video of your recent screen activity\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🎬\u0000\",\n \"name\": \"video-export\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Export Video Clip\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Export a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Export Video Clip\\ndescription: \\\"Create a video of your recent screen activity\\\"\\nicon: \\\"🎬\u0000\\\"\\nfeatured: false\\n---\\n\\nExport a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\\n\"\n },\n {\n \"config\": {\n \"description\": \"What you did, what's next, and any blockers\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🏢\u0000\",\n \"name\": \"standup-update\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Standup Update\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Based on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Standup Update\\ndescription: \\\"What you did, what's next, and any blockers\\\"\\nicon: \\\"🏢\u0000\\\"\\nfeatured: true\\n---\\n\\nBased on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\\n\"\n }\n ],\n \"total\": 6\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
-2710504821594427847
|
-8435208392465220115
|
visual_change
|
accessibility
|
NULL
|
whisper_model_load: n_audio_head = 6
whisper_mode whisper_model_load: n_audio_head = 6
whisper_model_load: n_audio_layer = 4
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 384
whisper_model_load: n_text_head = 6
whisper_model_load: n_text_layer = 4
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 1 (tiny)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: n_langs = 99
whisper_model_load: Metal total size = 77.11 MB
whisper_model_load: model size = 77.11 MB
2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)
2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh
2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh
2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl [URL_WITH_CREDENTIALS] ~ $
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
|
|
837
|
20
|
9
|
2026-04-11T12:27:06.342839+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910426342_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
whisper_model_load: n_audio_head = 6
whisper_mode whisper_model_load: n_audio_head = 6
whisper_model_load: n_audio_layer = 4
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 384
whisper_model_load: n_text_head = 6
whisper_model_load: n_text_layer = 4
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 1 (tiny)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: n_langs = 99
whisper_model_load: Metal total size = 77.11 MB
whisper_model_load: model size = 77.11 MB
2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)
2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh
2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh
2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl [URL_WITH_CREDENTIALS] ~ $
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":"whisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes | jq .\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 10805 100 10805 0 0 1966k 0 --:--:-- --:--:-- --:--:-- 2110k\n{\n \"data\": [\n {\n \"config\": {\n \"description\": \"Summarize meeting transcript with key takeaways and action items\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🤝\u0000\",\n \"name\": \"meeting-summary\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Meeting Summary\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Summarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Meeting Summary\\ndescription: \\\"Summarize meeting transcript with key takeaways and action items\\\"\\nicon: \\\"🤝\u0000\\\"\\nfeatured: false\\n---\\n\\nSummarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\\n\"\n },\n {\n \"config\": {\n \"description\": \"Where your time went — by app, project, and category\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"⏱\",\n \"name\": \"time-breakdown\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Time Breakdown\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Time Breakdown\\ndescription: \\\"Where your time went — by app, project, and category\\\"\\nicon: \\\"⏱\\\"\\nfeatured: false\\n---\\n\\nAnalyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Today's accomplishments, key moments, and unfinished work\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"📋\u0000\",\n \"name\": \"day-recap\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Day Recap\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Day Recap\\ndescription: \\\"Today's accomplishments, key moments, and unfinished work\\\"\\nicon: \\\"📋\u0000\\\"\\nfeatured: true\\n---\\n\\nAnalyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"How you use AI tools — patterns and insights\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🤖\u0000\",\n \"name\": \"ai-habits\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"AI Habits\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Search my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: AI Habits\\ndescription: \\\"How you use AI tools — patterns and insights\\\"\\nicon: \\\"🤖\u0000\\\"\\nfeatured: true\\n---\\n\\nSearch my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Create a video of your recent screen activity\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🎬\u0000\",\n \"name\": \"video-export\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Export Video Clip\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Export a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Export Video Clip\\ndescription: \\\"Create a video of your recent screen activity\\\"\\nicon: \\\"🎬\u0000\\\"\\nfeatured: false\\n---\\n\\nExport a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\\n\"\n },\n {\n \"config\": {\n \"description\": \"What you did, what's next, and any blockers\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🏢\u0000\",\n \"name\": \"standup-update\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Standup Update\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Based on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Standup Update\\ndescription: \\\"What you did, what's next, and any blockers\\\"\\nicon: \\\"🏢\u0000\\\"\\nfeatured: true\\n---\\n\\nBased on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\\n\"\n }\n ],\n \"total\": 6\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"value":"whisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes | jq .\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 10805 100 10805 0 0 1966k 0 --:--:-- --:--:-- --:--:-- 2110k\n{\n \"data\": [\n {\n \"config\": {\n \"description\": \"Summarize meeting transcript with key takeaways and action items\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🤝\u0000\",\n \"name\": \"meeting-summary\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Meeting Summary\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Summarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Meeting Summary\\ndescription: \\\"Summarize meeting transcript with key takeaways and action items\\\"\\nicon: \\\"🤝\u0000\\\"\\nfeatured: false\\n---\\n\\nSummarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\\n\"\n },\n {\n \"config\": {\n \"description\": \"Where your time went — by app, project, and category\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"⏱\",\n \"name\": \"time-breakdown\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Time Breakdown\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Time Breakdown\\ndescription: \\\"Where your time went — by app, project, and category\\\"\\nicon: \\\"⏱\\\"\\nfeatured: false\\n---\\n\\nAnalyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Today's accomplishments, key moments, and unfinished work\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"📋\u0000\",\n \"name\": \"day-recap\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Day Recap\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Day Recap\\ndescription: \\\"Today's accomplishments, key moments, and unfinished work\\\"\\nicon: \\\"📋\u0000\\\"\\nfeatured: true\\n---\\n\\nAnalyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"How you use AI tools — patterns and insights\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🤖\u0000\",\n \"name\": \"ai-habits\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"AI Habits\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Search my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: AI Habits\\ndescription: \\\"How you use AI tools — patterns and insights\\\"\\nicon: \\\"🤖\u0000\\\"\\nfeatured: true\\n---\\n\\nSearch my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Create a video of your recent screen activity\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🎬\u0000\",\n \"name\": \"video-export\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Export Video Clip\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Export a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Export Video Clip\\ndescription: \\\"Create a video of your recent screen activity\\\"\\nicon: \\\"🎬\u0000\\\"\\nfeatured: false\\n---\\n\\nExport a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\\n\"\n },\n {\n \"config\": {\n \"description\": \"What you did, what's next, and any blockers\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🏢\u0000\",\n \"name\": \"standup-update\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Standup Update\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Based on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Standup Update\\ndescription: \\\"What you did, what's next, and any blockers\\\"\\nicon: \\\"🏢\u0000\\\"\\nfeatured: true\\n---\\n\\nBased on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\\n\"\n }\n ],\n \"total\": 6\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
-2710504821594427847
|
-8435208392465220115
|
visual_change
|
accessibility
|
NULL
|
whisper_model_load: n_audio_head = 6
whisper_mode whisper_model_load: n_audio_head = 6
whisper_model_load: n_audio_layer = 4
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 384
whisper_model_load: n_text_head = 6
whisper_model_load: n_text_layer = 4
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 1 (tiny)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: n_langs = 99
whisper_model_load: Metal total size = 77.11 MB
whisper_model_load: model size = 77.11 MB
2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)
2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh
2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh
2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl [URL_WITH_CREDENTIALS] ~ $
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...
|
836
|
|
841
|
20
|
13
|
2026-04-11T12:27:41.574877+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910461574_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
whisper_model_load: n_audio_head = 6
whisper_mode whisper_model_load: n_audio_head = 6
whisper_model_load: n_audio_layer = 4
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 384
whisper_model_load: n_text_head = 6
whisper_model_load: n_text_layer = 4
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 1 (tiny)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: n_langs = 99
whisper_model_load: Metal total size = 77.11 MB
whisper_model_load: model size = 77.11 MB
2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)
2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh
2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh
2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl [URL_WITH_CREDENTIALS] ~ $
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":"whisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes | jq .\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 10805 100 10805 0 0 1966k 0 --:--:-- --:--:-- --:--:-- 2110k\n{\n \"data\": [\n {\n \"config\": {\n \"description\": \"Summarize meeting transcript with key takeaways and action items\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🤝\u0000\",\n \"name\": \"meeting-summary\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Meeting Summary\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Summarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Meeting Summary\\ndescription: \\\"Summarize meeting transcript with key takeaways and action items\\\"\\nicon: \\\"🤝\u0000\\\"\\nfeatured: false\\n---\\n\\nSummarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\\n\"\n },\n {\n \"config\": {\n \"description\": \"Where your time went — by app, project, and category\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"⏱\",\n \"name\": \"time-breakdown\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Time Breakdown\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Time Breakdown\\ndescription: \\\"Where your time went — by app, project, and category\\\"\\nicon: \\\"⏱\\\"\\nfeatured: false\\n---\\n\\nAnalyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Today's accomplishments, key moments, and unfinished work\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"📋\u0000\",\n \"name\": \"day-recap\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Day Recap\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Day Recap\\ndescription: \\\"Today's accomplishments, key moments, and unfinished work\\\"\\nicon: \\\"📋\u0000\\\"\\nfeatured: true\\n---\\n\\nAnalyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"How you use AI tools — patterns and insights\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🤖\u0000\",\n \"name\": \"ai-habits\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"AI Habits\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Search my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: AI Habits\\ndescription: \\\"How you use AI tools — patterns and insights\\\"\\nicon: \\\"🤖\u0000\\\"\\nfeatured: true\\n---\\n\\nSearch my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Create a video of your recent screen activity\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🎬\u0000\",\n \"name\": \"video-export\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Export Video Clip\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Export a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Export Video Clip\\ndescription: \\\"Create a video of your recent screen activity\\\"\\nicon: \\\"🎬\u0000\\\"\\nfeatured: false\\n---\\n\\nExport a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\\n\"\n },\n {\n \"config\": {\n \"description\": \"What you did, what's next, and any blockers\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🏢\u0000\",\n \"name\": \"standup-update\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Standup Update\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Based on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Standup Update\\ndescription: \\\"What you did, what's next, and any blockers\\\"\\nicon: \\\"🏢\u0000\\\"\\nfeatured: true\\n---\\n\\nBased on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\\n\"\n }\n ],\n \"total\": 6\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"value":"whisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes | jq .\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 10805 100 10805 0 0 1966k 0 --:--:-- --:--:-- --:--:-- 2110k\n{\n \"data\": [\n {\n \"config\": {\n \"description\": \"Summarize meeting transcript with key takeaways and action items\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🤝\u0000\",\n \"name\": \"meeting-summary\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Meeting Summary\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Summarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Meeting Summary\\ndescription: \\\"Summarize meeting transcript with key takeaways and action items\\\"\\nicon: \\\"🤝\u0000\\\"\\nfeatured: false\\n---\\n\\nSummarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\\n\"\n },\n {\n \"config\": {\n \"description\": \"Where your time went — by app, project, and category\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"⏱\",\n \"name\": \"time-breakdown\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Time Breakdown\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Time Breakdown\\ndescription: \\\"Where your time went — by app, project, and category\\\"\\nicon: \\\"⏱\\\"\\nfeatured: false\\n---\\n\\nAnalyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Today's accomplishments, key moments, and unfinished work\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"📋\u0000\",\n \"name\": \"day-recap\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Day Recap\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Day Recap\\ndescription: \\\"Today's accomplishments, key moments, and unfinished work\\\"\\nicon: \\\"📋\u0000\\\"\\nfeatured: true\\n---\\n\\nAnalyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"How you use AI tools — patterns and insights\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🤖\u0000\",\n \"name\": \"ai-habits\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"AI Habits\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Search my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: AI Habits\\ndescription: \\\"How you use AI tools — patterns and insights\\\"\\nicon: \\\"🤖\u0000\\\"\\nfeatured: true\\n---\\n\\nSearch my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Create a video of your recent screen activity\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🎬\u0000\",\n \"name\": \"video-export\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Export Video Clip\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Export a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Export Video Clip\\ndescription: \\\"Create a video of your recent screen activity\\\"\\nicon: \\\"🎬\u0000\\\"\\nfeatured: false\\n---\\n\\nExport a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\\n\"\n },\n {\n \"config\": {\n \"description\": \"What you did, what's next, and any blockers\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🏢\u0000\",\n \"name\": \"standup-update\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Standup Update\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Based on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Standup Update\\ndescription: \\\"What you did, what's next, and any blockers\\\"\\nicon: \\\"🏢\u0000\\\"\\nfeatured: true\\n---\\n\\nBased on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\\n\"\n }\n ],\n \"total\": 6\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
-2710504821594427847
|
-8435208392465220115
|
click
|
accessibility
|
NULL
|
whisper_model_load: n_audio_head = 6
whisper_mode whisper_model_load: n_audio_head = 6
whisper_model_load: n_audio_layer = 4
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 384
whisper_model_load: n_text_head = 6
whisper_model_load: n_text_layer = 4
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 1 (tiny)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: n_langs = 99
whisper_model_load: Metal total size = 77.11 MB
whisper_model_load: model size = 77.11 MB
2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)
2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh
2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh
2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl [URL_WITH_CREDENTIALS] ~ $
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
|
|
842
|
20
|
14
|
2026-04-11T12:27:42.684482+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910462684_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
whisper_model_load: n_audio_head = 6
whisper_mode whisper_model_load: n_audio_head = 6
whisper_model_load: n_audio_layer = 4
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 384
whisper_model_load: n_text_head = 6
whisper_model_load: n_text_layer = 4
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 1 (tiny)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: n_langs = 99
whisper_model_load: Metal total size = 77.11 MB
whisper_model_load: model size = 77.11 MB
2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)
2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh
2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh
2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl http://localhost:3030/pipes/time-breakdown | jq .
curl http://localhost:3030/pipes/day-recap | jq .
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":"whisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes | jq .\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 10805 100 10805 0 0 1966k 0 --:--:-- --:--:-- --:--:-- 2110k\n{\n \"data\": [\n {\n \"config\": {\n \"description\": \"Summarize meeting transcript with key takeaways and action items\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🤝\u0000\",\n \"name\": \"meeting-summary\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Meeting Summary\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Summarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Meeting Summary\\ndescription: \\\"Summarize meeting transcript with key takeaways and action items\\\"\\nicon: \\\"🤝\u0000\\\"\\nfeatured: false\\n---\\n\\nSummarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\\n\"\n },\n {\n \"config\": {\n \"description\": \"Where your time went — by app, project, and category\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"⏱\",\n \"name\": \"time-breakdown\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Time Breakdown\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Time Breakdown\\ndescription: \\\"Where your time went — by app, project, and category\\\"\\nicon: \\\"⏱\\\"\\nfeatured: false\\n---\\n\\nAnalyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Today's accomplishments, key moments, and unfinished work\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"📋\u0000\",\n \"name\": \"day-recap\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Day Recap\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Day Recap\\ndescription: \\\"Today's accomplishments, key moments, and unfinished work\\\"\\nicon: \\\"📋\u0000\\\"\\nfeatured: true\\n---\\n\\nAnalyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"How you use AI tools — patterns and insights\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🤖\u0000\",\n \"name\": \"ai-habits\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"AI Habits\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Search my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: AI Habits\\ndescription: \\\"How you use AI tools — patterns and insights\\\"\\nicon: \\\"🤖\u0000\\\"\\nfeatured: true\\n---\\n\\nSearch my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Create a video of your recent screen activity\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🎬\u0000\",\n \"name\": \"video-export\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Export Video Clip\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Export a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Export Video Clip\\ndescription: \\\"Create a video of your recent screen activity\\\"\\nicon: \\\"🎬\u0000\\\"\\nfeatured: false\\n---\\n\\nExport a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\\n\"\n },\n {\n \"config\": {\n \"description\": \"What you did, what's next, and any blockers\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🏢\u0000\",\n \"name\": \"standup-update\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Standup Update\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Based on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Standup Update\\ndescription: \\\"What you did, what's next, and any blockers\\\"\\nicon: \\\"🏢\u0000\\\"\\nfeatured: true\\n---\\n\\nBased on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\\n\"\n }\n ],\n \"total\": 6\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes/time-breakdown | jq .\ncurl http://localhost:3030/pipes/day-recap | jq .","depth":4,"value":"whisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes | jq .\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 10805 100 10805 0 0 1966k 0 --:--:-- --:--:-- --:--:-- 2110k\n{\n \"data\": [\n {\n \"config\": {\n \"description\": \"Summarize meeting transcript with key takeaways and action items\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🤝\u0000\",\n \"name\": \"meeting-summary\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Meeting Summary\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Summarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Meeting Summary\\ndescription: \\\"Summarize meeting transcript with key takeaways and action items\\\"\\nicon: \\\"🤝\u0000\\\"\\nfeatured: false\\n---\\n\\nSummarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\\n\"\n },\n {\n \"config\": {\n \"description\": \"Where your time went — by app, project, and category\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"⏱\",\n \"name\": \"time-breakdown\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Time Breakdown\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Time Breakdown\\ndescription: \\\"Where your time went — by app, project, and category\\\"\\nicon: \\\"⏱\\\"\\nfeatured: false\\n---\\n\\nAnalyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Today's accomplishments, key moments, and unfinished work\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"📋\u0000\",\n \"name\": \"day-recap\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Day Recap\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Day Recap\\ndescription: \\\"Today's accomplishments, key moments, and unfinished work\\\"\\nicon: \\\"📋\u0000\\\"\\nfeatured: true\\n---\\n\\nAnalyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"How you use AI tools — patterns and insights\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🤖\u0000\",\n \"name\": \"ai-habits\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"AI Habits\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Search my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: AI Habits\\ndescription: \\\"How you use AI tools — patterns and insights\\\"\\nicon: \\\"🤖\u0000\\\"\\nfeatured: true\\n---\\n\\nSearch my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Create a video of your recent screen activity\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🎬\u0000\",\n \"name\": \"video-export\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Export Video Clip\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Export a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Export Video Clip\\ndescription: \\\"Create a video of your recent screen activity\\\"\\nicon: \\\"🎬\u0000\\\"\\nfeatured: false\\n---\\n\\nExport a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\\n\"\n },\n {\n \"config\": {\n \"description\": \"What you did, what's next, and any blockers\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🏢\u0000\",\n \"name\": \"standup-update\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Standup Update\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Based on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Standup Update\\ndescription: \\\"What you did, what's next, and any blockers\\\"\\nicon: \\\"🏢\u0000\\\"\\nfeatured: true\\n---\\n\\nBased on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\\n\"\n }\n ],\n \"total\": 6\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes/time-breakdown | jq .\ncurl http://localhost:3030/pipes/day-recap | jq .","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"}]...
|
5564327341532259539
|
-3823522372964090387
|
clipboard
|
accessibility
|
NULL
|
whisper_model_load: n_audio_head = 6
whisper_mode whisper_model_load: n_audio_head = 6
whisper_model_load: n_audio_layer = 4
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 384
whisper_model_load: n_text_head = 6
whisper_model_load: n_text_layer = 4
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 1 (tiny)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: n_langs = 99
whisper_model_load: Metal total size = 77.11 MB
whisper_model_load: model size = 77.11 MB
2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)
2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh
2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh
2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl http://localhost:3030/pipes/time-breakdown | jq .
curl http://localhost:3030/pipes/day-recap | jq .
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...
|
841
|
|
843
|
20
|
15
|
2026-04-11T12:27:46.088214+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910466088_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
whisper_model_load: n_audio_head = 6
whisper_mode whisper_model_load: n_audio_head = 6
whisper_model_load: n_audio_layer = 4
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 384
whisper_model_load: n_text_head = 6
whisper_model_load: n_text_layer = 4
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 1 (tiny)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: n_langs = 99
whisper_model_load: Metal total size = 77.11 MB
whisper_model_load: model size = 77.11 MB
2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)
2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh
2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh
2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $
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":"whisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes | jq .\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 10805 100 10805 0 0 1966k 0 --:--:-- --:--:-- --:--:-- 2110k\n{\n \"data\": [\n {\n \"config\": {\n \"description\": \"Summarize meeting transcript with key takeaways and action items\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🤝\u0000\",\n \"name\": \"meeting-summary\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Meeting Summary\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Summarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Meeting Summary\\ndescription: \\\"Summarize meeting transcript with key takeaways and action items\\\"\\nicon: \\\"🤝\u0000\\\"\\nfeatured: false\\n---\\n\\nSummarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\\n\"\n },\n {\n \"config\": {\n \"description\": \"Where your time went — by app, project, and category\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"⏱\",\n \"name\": \"time-breakdown\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Time Breakdown\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Time Breakdown\\ndescription: \\\"Where your time went — by app, project, and category\\\"\\nicon: \\\"⏱\\\"\\nfeatured: false\\n---\\n\\nAnalyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Today's accomplishments, key moments, and unfinished work\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"📋\u0000\",\n \"name\": \"day-recap\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Day Recap\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Day Recap\\ndescription: \\\"Today's accomplishments, key moments, and unfinished work\\\"\\nicon: \\\"📋\u0000\\\"\\nfeatured: true\\n---\\n\\nAnalyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"How you use AI tools — patterns and insights\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🤖\u0000\",\n \"name\": \"ai-habits\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"AI Habits\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Search my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: AI Habits\\ndescription: \\\"How you use AI tools — patterns and insights\\\"\\nicon: \\\"🤖\u0000\\\"\\nfeatured: true\\n---\\n\\nSearch my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Create a video of your recent screen activity\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🎬\u0000\",\n \"name\": \"video-export\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Export Video Clip\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Export a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Export Video Clip\\ndescription: \\\"Create a video of your recent screen activity\\\"\\nicon: \\\"🎬\u0000\\\"\\nfeatured: false\\n---\\n\\nExport a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\\n\"\n },\n {\n \"config\": {\n \"description\": \"What you did, what's next, and any blockers\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🏢\u0000\",\n \"name\": \"standup-update\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Standup Update\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Based on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Standup Update\\ndescription: \\\"What you did, what's next, and any blockers\\\"\\nicon: \\\"🏢\u0000\\\"\\nfeatured: true\\n---\\n\\nBased on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\\n\"\n }\n ],\n \"total\": 6\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes/time-breakdown | jq .\ncurl http://localhost:3030/pipes/day-recap | jq .\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 2193 100 2193 0 0 643k 0 --:--:-- --:--:-- --:--:-- 713k\n{\n \"data\": {\n \"config\": {\n \"description\": \"Where your time went — by app, project, and category\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"⏱\",\n \"name\": \"time-breakdown\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Time Breakdown\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Time Breakdown\\ndescription: \\\"Where your time went — by app, project, and category\\\"\\nicon: \\\"⏱\\\"\\nfeatured: false\\n---\\n\\nAnalyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\\n\"\n }\n}\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 1876 100 1876 0 0 1218k 0 --:--:-- --:--:-- --:--:-- 1832k\n{\n \"data\": {\n \"config\": {\n \"description\": \"Today's accomplishments, key moments, and unfinished work\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"📋\u0000\",\n \"name\": \"day-recap\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Day Recap\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Day Recap\\ndescription: \\\"Today's accomplishments, key moments, and unfinished work\\\"\\nicon: \\\"📋\u0000\\\"\\nfeatured: true\\n---\\n\\nAnalyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\\n\"\n }\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"value":"whisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes | jq .\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 10805 100 10805 0 0 1966k 0 --:--:-- --:--:-- --:--:-- 2110k\n{\n \"data\": [\n {\n \"config\": {\n \"description\": \"Summarize meeting transcript with key takeaways and action items\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🤝\u0000\",\n \"name\": \"meeting-summary\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Meeting Summary\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Summarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Meeting Summary\\ndescription: \\\"Summarize meeting transcript with key takeaways and action items\\\"\\nicon: \\\"🤝\u0000\\\"\\nfeatured: false\\n---\\n\\nSummarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\\n\"\n },\n {\n \"config\": {\n \"description\": \"Where your time went — by app, project, and category\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"⏱\",\n \"name\": \"time-breakdown\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Time Breakdown\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Time Breakdown\\ndescription: \\\"Where your time went — by app, project, and category\\\"\\nicon: \\\"⏱\\\"\\nfeatured: false\\n---\\n\\nAnalyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Today's accomplishments, key moments, and unfinished work\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"📋\u0000\",\n \"name\": \"day-recap\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Day Recap\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Day Recap\\ndescription: \\\"Today's accomplishments, key moments, and unfinished work\\\"\\nicon: \\\"📋\u0000\\\"\\nfeatured: true\\n---\\n\\nAnalyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"How you use AI tools — patterns and insights\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🤖\u0000\",\n \"name\": \"ai-habits\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"AI Habits\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Search my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: AI Habits\\ndescription: \\\"How you use AI tools — patterns and insights\\\"\\nicon: \\\"🤖\u0000\\\"\\nfeatured: true\\n---\\n\\nSearch my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Create a video of your recent screen activity\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🎬\u0000\",\n \"name\": \"video-export\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Export Video Clip\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Export a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Export Video Clip\\ndescription: \\\"Create a video of your recent screen activity\\\"\\nicon: \\\"🎬\u0000\\\"\\nfeatured: false\\n---\\n\\nExport a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\\n\"\n },\n {\n \"config\": {\n \"description\": \"What you did, what's next, and any blockers\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🏢\u0000\",\n \"name\": \"standup-update\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Standup Update\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Based on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Standup Update\\ndescription: \\\"What you did, what's next, and any blockers\\\"\\nicon: \\\"🏢\u0000\\\"\\nfeatured: true\\n---\\n\\nBased on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\\n\"\n }\n ],\n \"total\": 6\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes/time-breakdown | jq .\ncurl http://localhost:3030/pipes/day-recap | jq .\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 2193 100 2193 0 0 643k 0 --:--:-- --:--:-- --:--:-- 713k\n{\n \"data\": {\n \"config\": {\n \"description\": \"Where your time went — by app, project, and category\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"⏱\",\n \"name\": \"time-breakdown\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Time Breakdown\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Time Breakdown\\ndescription: \\\"Where your time went — by app, project, and category\\\"\\nicon: \\\"⏱\\\"\\nfeatured: false\\n---\\n\\nAnalyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\\n\"\n }\n}\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 1876 100 1876 0 0 1218k 0 --:--:-- --:--:-- --:--:-- 1832k\n{\n \"data\": {\n \"config\": {\n \"description\": \"Today's accomplishments, key moments, and unfinished work\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"📋\u0000\",\n \"name\": \"day-recap\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Day Recap\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Day Recap\\ndescription: \\\"Today's accomplishments, key moments, and unfinished work\\\"\\nicon: \\\"📋\u0000\\\"\\nfeatured: true\\n---\\n\\nAnalyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\\n\"\n }\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
2383013018574745247
|
-8471237171767443987
|
visual_change
|
accessibility
|
NULL
|
whisper_model_load: n_audio_head = 6
whisper_mode whisper_model_load: n_audio_head = 6
whisper_model_load: n_audio_layer = 4
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 384
whisper_model_load: n_text_head = 6
whisper_model_load: n_text_layer = 4
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 1 (tiny)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: n_langs = 99
whisper_model_load: Metal total size = 77.11 MB
whisper_model_load: model size = 77.11 MB
2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)
2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh
2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh
2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $
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
|
|
847
|
20
|
19
|
2026-04-11T12:28:12.664642+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910492664_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
whisper_model_load: n_audio_head = 6
whisper_mode whisper_model_load: n_audio_head = 6
whisper_model_load: n_audio_layer = 4
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 384
whisper_model_load: n_text_head = 6
whisper_model_load: n_text_layer = 4
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 1 (tiny)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: n_langs = 99
whisper_model_load: Metal total size = 77.11 MB
whisper_model_load: model size = 77.11 MB
2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)
2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh
2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh
2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $
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":"whisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes | jq .\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 10805 100 10805 0 0 1966k 0 --:--:-- --:--:-- --:--:-- 2110k\n{\n \"data\": [\n {\n \"config\": {\n \"description\": \"Summarize meeting transcript with key takeaways and action items\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🤝\u0000\",\n \"name\": \"meeting-summary\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Meeting Summary\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Summarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Meeting Summary\\ndescription: \\\"Summarize meeting transcript with key takeaways and action items\\\"\\nicon: \\\"🤝\u0000\\\"\\nfeatured: false\\n---\\n\\nSummarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\\n\"\n },\n {\n \"config\": {\n \"description\": \"Where your time went — by app, project, and category\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"⏱\",\n \"name\": \"time-breakdown\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Time Breakdown\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Time Breakdown\\ndescription: \\\"Where your time went — by app, project, and category\\\"\\nicon: \\\"⏱\\\"\\nfeatured: false\\n---\\n\\nAnalyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Today's accomplishments, key moments, and unfinished work\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"📋\u0000\",\n \"name\": \"day-recap\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Day Recap\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Day Recap\\ndescription: \\\"Today's accomplishments, key moments, and unfinished work\\\"\\nicon: \\\"📋\u0000\\\"\\nfeatured: true\\n---\\n\\nAnalyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"How you use AI tools — patterns and insights\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🤖\u0000\",\n \"name\": \"ai-habits\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"AI Habits\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Search my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: AI Habits\\ndescription: \\\"How you use AI tools — patterns and insights\\\"\\nicon: \\\"🤖\u0000\\\"\\nfeatured: true\\n---\\n\\nSearch my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Create a video of your recent screen activity\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🎬\u0000\",\n \"name\": \"video-export\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Export Video Clip\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Export a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Export Video Clip\\ndescription: \\\"Create a video of your recent screen activity\\\"\\nicon: \\\"🎬\u0000\\\"\\nfeatured: false\\n---\\n\\nExport a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\\n\"\n },\n {\n \"config\": {\n \"description\": \"What you did, what's next, and any blockers\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🏢\u0000\",\n \"name\": \"standup-update\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Standup Update\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Based on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Standup Update\\ndescription: \\\"What you did, what's next, and any blockers\\\"\\nicon: \\\"🏢\u0000\\\"\\nfeatured: true\\n---\\n\\nBased on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\\n\"\n }\n ],\n \"total\": 6\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes/time-breakdown | jq .\ncurl http://localhost:3030/pipes/day-recap | jq .\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 2193 100 2193 0 0 643k 0 --:--:-- --:--:-- --:--:-- 713k\n{\n \"data\": {\n \"config\": {\n \"description\": \"Where your time went — by app, project, and category\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"⏱\",\n \"name\": \"time-breakdown\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Time Breakdown\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Time Breakdown\\ndescription: \\\"Where your time went — by app, project, and category\\\"\\nicon: \\\"⏱\\\"\\nfeatured: false\\n---\\n\\nAnalyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\\n\"\n }\n}\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 1876 100 1876 0 0 1218k 0 --:--:-- --:--:-- --:--:-- 1832k\n{\n \"data\": {\n \"config\": {\n \"description\": \"Today's accomplishments, key moments, and unfinished work\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"📋\u0000\",\n \"name\": \"day-recap\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Day Recap\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Day Recap\\ndescription: \\\"Today's accomplishments, key moments, and unfinished work\\\"\\nicon: \\\"📋\u0000\\\"\\nfeatured: true\\n---\\n\\nAnalyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\\n\"\n }\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":4,"value":"whisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes | jq .\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 10805 100 10805 0 0 1966k 0 --:--:-- --:--:-- --:--:-- 2110k\n{\n \"data\": [\n {\n \"config\": {\n \"description\": \"Summarize meeting transcript with key takeaways and action items\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🤝\u0000\",\n \"name\": \"meeting-summary\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Meeting Summary\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Summarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Meeting Summary\\ndescription: \\\"Summarize meeting transcript with key takeaways and action items\\\"\\nicon: \\\"🤝\u0000\\\"\\nfeatured: false\\n---\\n\\nSummarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\\n\"\n },\n {\n \"config\": {\n \"description\": \"Where your time went — by app, project, and category\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"⏱\",\n \"name\": \"time-breakdown\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Time Breakdown\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Time Breakdown\\ndescription: \\\"Where your time went — by app, project, and category\\\"\\nicon: \\\"⏱\\\"\\nfeatured: false\\n---\\n\\nAnalyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Today's accomplishments, key moments, and unfinished work\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"📋\u0000\",\n \"name\": \"day-recap\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Day Recap\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Day Recap\\ndescription: \\\"Today's accomplishments, key moments, and unfinished work\\\"\\nicon: \\\"📋\u0000\\\"\\nfeatured: true\\n---\\n\\nAnalyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"How you use AI tools — patterns and insights\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🤖\u0000\",\n \"name\": \"ai-habits\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"AI Habits\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Search my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: AI Habits\\ndescription: \\\"How you use AI tools — patterns and insights\\\"\\nicon: \\\"🤖\u0000\\\"\\nfeatured: true\\n---\\n\\nSearch my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Create a video of your recent screen activity\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🎬\u0000\",\n \"name\": \"video-export\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Export Video Clip\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Export a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Export Video Clip\\ndescription: \\\"Create a video of your recent screen activity\\\"\\nicon: \\\"🎬\u0000\\\"\\nfeatured: false\\n---\\n\\nExport a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\\n\"\n },\n {\n \"config\": {\n \"description\": \"What you did, what's next, and any blockers\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🏢\u0000\",\n \"name\": \"standup-update\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Standup Update\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Based on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Standup Update\\ndescription: \\\"What you did, what's next, and any blockers\\\"\\nicon: \\\"🏢\u0000\\\"\\nfeatured: true\\n---\\n\\nBased on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\\n\"\n }\n ],\n \"total\": 6\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes/time-breakdown | jq .\ncurl http://localhost:3030/pipes/day-recap | jq .\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 2193 100 2193 0 0 643k 0 --:--:-- --:--:-- --:--:-- 713k\n{\n \"data\": {\n \"config\": {\n \"description\": \"Where your time went — by app, project, and category\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"⏱\",\n \"name\": \"time-breakdown\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Time Breakdown\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Time Breakdown\\ndescription: \\\"Where your time went — by app, project, and category\\\"\\nicon: \\\"⏱\\\"\\nfeatured: false\\n---\\n\\nAnalyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\\n\"\n }\n}\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 1876 100 1876 0 0 1218k 0 --:--:-- --:--:-- --:--:-- 1832k\n{\n \"data\": {\n \"config\": {\n \"description\": \"Today's accomplishments, key moments, and unfinished work\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"📋\u0000\",\n \"name\": \"day-recap\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Day Recap\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Day Recap\\ndescription: \\\"Today's accomplishments, key moments, and unfinished work\\\"\\nicon: \\\"📋\u0000\\\"\\nfeatured: true\\n---\\n\\nAnalyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\\n\"\n }\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","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"}]...
|
2383013018574745247
|
-8471237171767443987
|
click
|
accessibility
|
NULL
|
whisper_model_load: n_audio_head = 6
whisper_mode whisper_model_load: n_audio_head = 6
whisper_model_load: n_audio_layer = 4
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 384
whisper_model_load: n_text_head = 6
whisper_model_load: n_text_layer = 4
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 1 (tiny)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: n_langs = 99
whisper_model_load: Metal total size = 77.11 MB
whisper_model_load: model size = 77.11 MB
2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)
2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh
2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh
2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $
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
|
|
848
|
20
|
20
|
2026-04-11T12:28:13.735631+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-11/1775 /Users/lukas/.screenpipe/data/data/2026-04-11/1775910493735_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
whisper_model_load: n_audio_head = 6
whisper_mode whisper_model_load: n_audio_head = 6
whisper_model_load: n_audio_layer = 4
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 384
whisper_model_load: n_text_head = 6
whisper_model_load: n_text_layer = 4
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 1 (tiny)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: n_langs = 99
whisper_model_load: Metal total size = 77.11 MB
whisper_model_load: model size = 77.11 MB
2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)
2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh
2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh
2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl -X POST http://localhost:3030/pipes/time-breakdown/run | jq .
curl -X POST http://localhost:3030/pipes/day-recap/run | jq .
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":"whisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes | jq .\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 10805 100 10805 0 0 1966k 0 --:--:-- --:--:-- --:--:-- 2110k\n{\n \"data\": [\n {\n \"config\": {\n \"description\": \"Summarize meeting transcript with key takeaways and action items\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🤝\u0000\",\n \"name\": \"meeting-summary\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Meeting Summary\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Summarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Meeting Summary\\ndescription: \\\"Summarize meeting transcript with key takeaways and action items\\\"\\nicon: \\\"🤝\u0000\\\"\\nfeatured: false\\n---\\n\\nSummarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\\n\"\n },\n {\n \"config\": {\n \"description\": \"Where your time went — by app, project, and category\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"⏱\",\n \"name\": \"time-breakdown\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Time Breakdown\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Time Breakdown\\ndescription: \\\"Where your time went — by app, project, and category\\\"\\nicon: \\\"⏱\\\"\\nfeatured: false\\n---\\n\\nAnalyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Today's accomplishments, key moments, and unfinished work\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"📋\u0000\",\n \"name\": \"day-recap\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Day Recap\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Day Recap\\ndescription: \\\"Today's accomplishments, key moments, and unfinished work\\\"\\nicon: \\\"📋\u0000\\\"\\nfeatured: true\\n---\\n\\nAnalyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"How you use AI tools — patterns and insights\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🤖\u0000\",\n \"name\": \"ai-habits\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"AI Habits\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Search my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: AI Habits\\ndescription: \\\"How you use AI tools — patterns and insights\\\"\\nicon: \\\"🤖\u0000\\\"\\nfeatured: true\\n---\\n\\nSearch my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Create a video of your recent screen activity\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🎬\u0000\",\n \"name\": \"video-export\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Export Video Clip\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Export a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Export Video Clip\\ndescription: \\\"Create a video of your recent screen activity\\\"\\nicon: \\\"🎬\u0000\\\"\\nfeatured: false\\n---\\n\\nExport a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\\n\"\n },\n {\n \"config\": {\n \"description\": \"What you did, what's next, and any blockers\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🏢\u0000\",\n \"name\": \"standup-update\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Standup Update\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Based on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Standup Update\\ndescription: \\\"What you did, what's next, and any blockers\\\"\\nicon: \\\"🏢\u0000\\\"\\nfeatured: true\\n---\\n\\nBased on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\\n\"\n }\n ],\n \"total\": 6\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes/time-breakdown | jq .\ncurl http://localhost:3030/pipes/day-recap | jq .\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 2193 100 2193 0 0 643k 0 --:--:-- --:--:-- --:--:-- 713k\n{\n \"data\": {\n \"config\": {\n \"description\": \"Where your time went — by app, project, and category\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"⏱\",\n \"name\": \"time-breakdown\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Time Breakdown\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Time Breakdown\\ndescription: \\\"Where your time went — by app, project, and category\\\"\\nicon: \\\"⏱\\\"\\nfeatured: false\\n---\\n\\nAnalyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\\n\"\n }\n}\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 1876 100 1876 0 0 1218k 0 --:--:-- --:--:-- --:--:-- 1832k\n{\n \"data\": {\n \"config\": {\n \"description\": \"Today's accomplishments, key moments, and unfinished work\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"📋\u0000\",\n \"name\": \"day-recap\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Day Recap\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Day Recap\\ndescription: \\\"Today's accomplishments, key moments, and unfinished work\\\"\\nicon: \\\"📋\u0000\\\"\\nfeatured: true\\n---\\n\\nAnalyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\\n\"\n }\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl -X POST http://localhost:3030/pipes/time-breakdown/run | jq .\ncurl -X POST http://localhost:3030/pipes/day-recap/run | jq .","depth":4,"value":"whisper_model_load: n_audio_head = 6\nwhisper_model_load: n_audio_layer = 4\nwhisper_model_load: n_text_ctx = 448\nwhisper_model_load: n_text_state = 384\nwhisper_model_load: n_text_head = 6\nwhisper_model_load: n_text_layer = 4\nwhisper_model_load: n_mels = 80\nwhisper_model_load: ftype = 1\nwhisper_model_load: qntvr = 0\nwhisper_model_load: type = 1 (tiny)\nwhisper_model_load: adding 1608 extra tokens\nwhisper_model_load: n_langs = 99\nwhisper_model_load: Metal total size = 77.11 MB\nwhisper_model_load: model size = 77.11 MB\n2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully\nwhisper_backend_init_gpu: device 0: Metal (type: 1)\nwhisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)\nwhisper_backend_init_gpu: using Metal backend\nggml_metal_init: allocating\nggml_metal_init: found device: Apple M1\nggml_metal_init: picking default device: Apple M1\nggml_metal_init: use fusion = true\nggml_metal_init: use concurrency = true\nggml_metal_init: use graph optimize = true\nwhisper_backend_init: using BLAS backend\nwhisper_init_state: kv self size = 3.15 MB\nwhisper_init_state: kv cross size = 9.44 MB\nwhisper_init_state: kv pad size = 2.36 MB\nwhisper_init_state: compute buffer (conv) = 14.17 MB\nwhisper_init_state: compute buffer (encode) = 65.96 MB\nwhisper_init_state: compute buffer (cross) = 8.50 MB\nwhisper_init_state: compute buffer (decode) = 96.83 MB\n2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)\n2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh\n2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh\n2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXButton|Close Tab\nAXRadioButton|DOCKER\nAXRadioButton|DEV (-zsh)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes | jq .\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 10805 100 10805 0 0 1966k 0 --:--:-- --:--:-- --:--:-- 2110k\n{\n \"data\": [\n {\n \"config\": {\n \"description\": \"Summarize meeting transcript with key takeaways and action items\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🤝\u0000\",\n \"name\": \"meeting-summary\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Meeting Summary\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Summarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Meeting Summary\\ndescription: \\\"Summarize meeting transcript with key takeaways and action items\\\"\\nicon: \\\"🤝\u0000\\\"\\nfeatured: false\\n---\\n\\nSummarize the meeting transcript provided in the context. Include key takeaways and action items. If the meeting is marked as ongoing, note that and summarize what's available so far.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Meeting Summary\\nOne sentence: what this meeting was about.\\n\\n## Key Takeaways\\n- Top 3-5 important points discussed\\n- Include who said what when relevant\\n\\n## Action Items\\n- [ ] Task — assigned to whom, deadline if mentioned\\n- [ ] Task — assigned to whom\\n\\n## Decisions Made\\n- List any decisions or agreements reached\\n\\n## Open Questions\\n- Anything unresolved or needing follow-up\\n\\nKeep it concise and actionable.\\n\"\n },\n {\n \"config\": {\n \"description\": \"Where your time went — by app, project, and category\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"⏱\",\n \"name\": \"time-breakdown\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Time Breakdown\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Time Breakdown\\ndescription: \\\"Where your time went — by app, project, and category\\\"\\nicon: \\\"⏱\\\"\\nfeatured: false\\n---\\n\\nAnalyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Today's accomplishments, key moments, and unfinished work\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"📋\u0000\",\n \"name\": \"day-recap\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Day Recap\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Day Recap\\ndescription: \\\"Today's accomplishments, key moments, and unfinished work\\\"\\nicon: \\\"📋\u0000\\\"\\nfeatured: true\\n---\\n\\nAnalyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"How you use AI tools — patterns and insights\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🤖\u0000\",\n \"name\": \"ai-habits\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"AI Habits\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Search my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: AI Habits\\ndescription: \\\"How you use AI tools — patterns and insights\\\"\\nicon: \\\"🤖\u0000\\\"\\nfeatured: true\\n---\\n\\nSearch my recordings from the last 24 hours for AI tool usage. Use app_name filter for each tool separately: ChatGPT, Claude, Copilot, Cursor, Gemini, Perplexity. Use limit=5 per search, max 6 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## AI Tools Used\\n- List each tool with approximate time spent (e.g. \\\"Claude: ~45min\\\")\\n\\n## What I Used Them For\\n- For each tool: coding, writing, research, or brainstorming\\n\\n## Usage Patterns\\n- Do I switch between tools? Use them in bursts or steadily?\\n\\n## Effectiveness\\n- Which tool appeared alongside completed work vs. abandoned attempts\\n\\nIf no AI usage is found, say so clearly. End with: \\\"**Tip:** [one suggestion to use AI tools more effectively]\\\"\\n\"\n },\n {\n \"config\": {\n \"description\": \"Create a video of your recent screen activity\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"🎬\u0000\",\n \"name\": \"video-export\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Export Video Clip\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Export a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Export Video Clip\\ndescription: \\\"Create a video of your recent screen activity\\\"\\nicon: \\\"🎬\u0000\\\"\\nfeatured: false\\n---\\n\\nExport a video of my screen activity from the last 5 minutes.\\n\\nRead screenpipe skill first.\\n\\nUse the POST /frames/export endpoint with the time range and fps=1.0. Then show me the exported video file path as an inline code block so I can watch it.\\n\\nIf the export is large, suggest a lower fps or shorter time range.\\n\"\n },\n {\n \"config\": {\n \"description\": \"What you did, what's next, and any blockers\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"🏢\u0000\",\n \"name\": \"standup-update\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Standup Update\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Based on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Standup Update\\ndescription: \\\"What you did, what's next, and any blockers\\\"\\nicon: \\\"🏢\u0000\\\"\\nfeatured: true\\n---\\n\\nBased on my recordings from the last 24 hours, generate a standup update. Use limit=10 per search, max 3 searches total.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Yesterday\\n- What I worked on (name specific projects, files, tools, PRs)\\n\\n## Today\\n- What I will work on next (based on unfinished tasks and recent activity)\\n\\n## Blockers\\n- Issues I hit — errors, slow builds, waiting on someone\\n- If no blockers, write \\\"None\\\"\\n\\nKeep it under 150 words. Copy-paste ready for a team standup.\\n\"\n }\n ],\n \"total\": 6\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl http://localhost:3030/pipes/time-breakdown | jq .\ncurl http://localhost:3030/pipes/day-recap | jq .\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 2193 100 2193 0 0 643k 0 --:--:-- --:--:-- --:--:-- 713k\n{\n \"data\": {\n \"config\": {\n \"description\": \"Where your time went — by app, project, and category\",\n \"enabled\": true,\n \"featured\": false,\n \"icon\": \"⏱\",\n \"name\": \"time-breakdown\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Time Breakdown\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Time Breakdown\\ndescription: \\\"Where your time went — by app, project, and category\\\"\\nicon: \\\"⏱\\\"\\nfeatured: false\\n---\\n\\nAnalyze my app usage from today (last 12 hours). Use limit=10 per search, max 4 searches. Prefer /raw_sql with COUNT/GROUP BY queries.\\n\\nRead screenpipe skill first.\\n\\nUse this exact format with durations and percentages:\\n\\n## By Application\\n- List each app with duration and percentage, sorted by time (e.g. \\\"VS Code: 2h 15min (28%)\\\")\\n\\n## By Category\\n- Group into: coding, meetings, browsing, writing, communication, other\\n- Show hours and percentage per category\\n\\n## By Project\\n- Group related activities by project/topic. Name specific repos or tasks.\\n\\n## Productivity Score\\n- Calculate: focused_work_hours / total_hours as a percentage\\n- Focused = coding + writing. Unfocused = browsing + switching.\\n\\nEnd with: \\\"**Suggestion:** [one specific change to improve tomorrow's productivity]\\\"\\n\"\n }\n}\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 1876 100 1876 0 0 1218k 0 --:--:-- --:--:-- --:--:-- 1832k\n{\n \"data\": {\n \"config\": {\n \"description\": \"Today's accomplishments, key moments, and unfinished work\",\n \"enabled\": true,\n \"featured\": true,\n \"icon\": \"📋\u0000\",\n \"name\": \"day-recap\",\n \"schedule\": \"manual\",\n \"template\": true,\n \"title\": \"Day Recap\"\n },\n \"consecutive_failures\": 0,\n \"current_execution_id\": null,\n \"is_running\": false,\n \"last_error\": null,\n \"last_run\": null,\n \"last_success\": null,\n \"prompt_body\": \"Analyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\",\n \"raw_content\": \"---\\nschedule: manual\\nenabled: true\\ntemplate: true\\ntitle: Day Recap\\ndescription: \\\"Today's accomplishments, key moments, and unfinished work\\\"\\nicon: \\\"📋\u0000\\\"\\nfeatured: true\\n---\\n\\nAnalyze my screen and audio recordings from today (last 16 hours only). \\n\\nRead screenpipe skill first.\\n\\nUse this exact format:\\n\\n## Summary\\nOne sentence: what I mainly did today.\\n\\n## Accomplishments\\n- Top 3 things I finished, with timestamps (e.g. \\\"2:30 PM\\\")\\n- Name specific apps, files, or projects\\n\\n## Key Moments\\n- Important things I saw, said, or heard — with timestamps\\n\\n## Unfinished Work\\n- What I should continue tomorrow — name the app/file/task\\n\\n## Patterns\\n- Apps I used most, topics that came up repeatedly\\n\\nOnly report what you can verify from the data. End with: \\\"**Next step:** [most important thing to continue]\\\"\\n\"\n }\n}\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl -X POST http://localhost:3030/pipes/time-breakdown/run | jq .\ncurl -X POST http://localhost:3030/pipes/day-recap/run | jq .","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"}]...
|
-5290834076233419911
|
-8471237188947313171
|
clipboard
|
accessibility
|
NULL
|
whisper_model_load: n_audio_head = 6
whisper_mode whisper_model_load: n_audio_head = 6
whisper_model_load: n_audio_layer = 4
whisper_model_load: n_text_ctx = 448
whisper_model_load: n_text_state = 384
whisper_model_load: n_text_head = 6
whisper_model_load: n_text_layer = 4
whisper_model_load: n_mels = 80
whisper_model_load: ftype = 1
whisper_model_load: qntvr = 0
whisper_model_load: type = 1 (tiny)
whisper_model_load: adding 1608 extra tokens
whisper_model_load: n_langs = 99
whisper_model_load: Metal total size = 77.11 MB
whisper_model_load: model size = 77.11 MB
2026-04-09T19:54:07.242116Z INFO screenpipe_audio::transcription::engine: whisper model loaded successfully
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
2026-04-09T19:54:07.250010Z INFO screenpipe_audio::audio_manager::manager: transcription session created (will be reused across segments)
2026-04-09T19:54:07.250055Z INFO screenpipe_audio::audio_manager::manager: central audio-receiver handler restarted for capability refresh
2026-04-09T19:54:07.250066Z INFO screenpipe_audio::audio_manager::manager: central transcription-receiver handler restarted for capability refresh
2026-04-09T19:54:41.976071Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-1231441521457939656, trigger=visual_change)
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXButton|Close Tab
AXRadioButton|DOCKER
AXRadioButton|DEV (-zsh)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl -X POST http://localhost:3030/pipes/time-breakdown/run | jq .
curl -X POST http://localhost:3030/pipes/day-recap/run | jq .
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...
|
847
|