|
)
/* frames_fts(full_text,app_name,window_name,bro )
/* frames_fts(full_text,app_name,window_name,browser_url,id) */;
CREATE TABLE IF NOT EXISTS 'frames_fts_data'(id INTEGER PRIMARY KEY, block BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_idx'(segid, term, pgno, PRIMARY KEY(segid, term)) WITHOUT ROWID;
CREATE TABLE IF NOT EXISTS 'frames_fts_content'(id INTEGER PRIMARY KEY, c0, c1, c2, c3, c4);
CREATE TABLE IF NOT EXISTS 'frames_fts_docsize'(id INTEGER PRIMARY KEY, sz BLOB);
CREATE TABLE IF NOT EXISTS 'frames_fts_config'(k PRIMARY KEY, v) WITHOUT ROWID;
CREATE TRIGGER frames_ai AFTER INSERT ON frames
WHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''
BEGIN
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
VALUES (
NEW.id,
NEW.full_text,
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
);
END;
CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
INSERT INTO frames_fts(id, full_text, app_name, window_name, browser_url)
SELECT
NEW.id,
COALESCE(NEW.full_text, ''),
COALESCE(NEW.app_name, ''),
COALESCE(NEW.window_name, ''),
COALESCE(NEW.browser_url, '')
WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';
END;
CREATE TRIGGER frames_ad AFTER DELETE ON frames
BEGIN
DELETE FROM frames_fts WHERE id = OLD.id;
END;
CREATE INDEX idx_memories_frame_id ON memories(frame_id);
CREATE INDEX idx_elements_source_role_text
ON elements(source, role, frame_id)
WHERE text IS NOT NULL;
CREATE INDEX idx_frames_sync_id ON frames(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_audio_transcriptions_sync_id ON audio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;
CREATE INDEX idx_elements_frame_source_role ON elements(frame_id, source, role) WHERE text IS NOT NULL;
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clear
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*) as frames FROM frames GROUP BY date(timestamp) ORDER BY date(timestamp);"
2026-04-09|523
2026-04-11|197
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
iTerm2
|
-zsh
|
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', '-1 day')
AND app_name IS NOT NULL
GROUP BY app_name
ORDER BY frames 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...
|
iTerm2
|
-zsh
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelplhl-zshDOCKER• ₴1DEV (-zsh)-O $2APP (-zsh)• *3-zsh• 84-zshlukas@Lukas-Kovaliks-MacBook-Pro-JiminnyBY~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*)date(timestamp);"2026-04-0915232026-04-11|197lukas@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_minutesFROM framesWHERE date(timestamp) = date('now', '-2 day')AND app_name IS NOT NULLGROUP BY app_nameORDER BY frames DESC;"iTerm2|185113.9Dial3112.3Safaril2011.5Claude|1210.9UserNotificationCenter|410.3Control Centrel310.2Slack|210.1Activity Monitor|210.1Finder|110.1lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $|• *5100% CSat 11 Apr 15:10:29T81-zshO ₴6-zsh*7frames FROM frames GROUPBY date(timestamp)ORDER...
|
NULL
|
NULL
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp‹$0(ahl100% <7• 0-zshDOCKERO ₴1DEV (-zsh)-O $2APP (-zsh)• ₴з-zsh• 84-zsh• ₴5lukas@Lukas-Kovaliks-MacBook-Pro-JiminnyBY~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*)asdate(timestamp);"2026-04-0915232026-04-11|197lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECTapp_name, COUNT(*) as frames,ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutesFROM framesWHERE date(timestamp) = date('now', '-2 day')AND app_name IS NOT NULLGROUP BY app_nameORDER BY frames DESC;"iTerm2|185113.9Dial3112.3Safaril2011.5Claude|1210.9UserNotificationCenter1410.3Control Centrel310.2Slack|210.1Activity Monitor|210.1Finder|110.1lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ П-zshO ₴6frames FROM frames GROUPSat 11 Apr 15:10:30181-zsh*7BY date(timestamp)ORDER...
|
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...
|
iTerm2
|
-zsh
|
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...
|
iTerm2
|
-zsh
|
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...
|
iTerm2
|
-zsh
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelplhl-zshDOCKER• ₴1DEV (-zsh)O $2APP (-zsh)• *з-zsh• 84-zshlukas@Lukas-Kovaliks-MacBook-Pro-JiminnyBY~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*)date(timestamp);"2026-04-0915232026-04-11|197lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECTapp_name, COUNT(*) as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutesFROM framesWHERE date(timestamp) = date("now', '-2 day')AND app_name IS NOT NULLGROUP BY app_nameORDER BY frames DESC;"iTerm2|185113.9Dial3112.3Safaril2011.5Claude|1210.9UserNotificationCenter|410.3Control Centrel310.2Slack|210.1Activity Monitor|210.1Finder|110.1lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT browser_url, COUNT(*) as framesFROM framesWHERE date(timestamp) = date("now', '-2 day')AND browser_url IS NOT NULLGROUP BY browser_urlORDER BY frames DESCLIMIT 20;[URL_WITH_CREDENTIALS] ~/.screenpipe $• *5100% C-zsh• ₴6frames FROM frames GROUPSat 11 Apr 15:10:52T81-zsh*7BY date(timestamp)ORDER...
|
NULL
|
NULL
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp‹$0(ahl100% <7Sat 11 Apr 15:10:54• 0-zsh181DOCKERO ₴1DEV (-zsh)-O $2APP (-zsh)• *з-zsh• 84-zsh• ₴5-zshO ₴6-zsh*7lukas@Lukas-Kovaliks-MacBook-Pro-Jiminnydate(timestamp);"BY date(timestamp)BY~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*)asframes FROM frames GROUPORDER2026-04-0915232026-04-11|197lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECTapp_name, COUNT(*) as frames,ROUND(COUNT(*) * 4.5 / 60.0, 1) asest_minutesFROM framesWHERE date(timestamp) = date('now', '-2 day')AND app_name IS NOT NULLGROUP BY app_nameORDER BY frames DESC;"iTerm2|185113.9Dial3112.3Safaril2011.5Claude|1210.9UserNotificationCenter|410.3Control Centrel310.2Slack|210.1Activity Monitor|210.1Finder|110.1lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT browser_url, COUNT(*) as framesFROM framesWHERE date(timestamp) = date('now', '-2 day')AND browser_url IS NOT NULLGROUP BY browser_urlORDER BY frames DESCLIMIT 20;[URL_WITH_CREDENTIALS] ~/.screenpipe $ П...
|
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...
|
iTerm2
|
-zsh
|
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...
|
iTerm2
|
-zsh
|
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...
|
iTerm2
|
-zsh
|
NULL
|
|
ITerm2ShellEdit ViewSessionScriptsProfilesWindow ITerm2ShellEdit ViewSessionScriptsProfilesWindow Helpll.0100% C47-zshDOCKERO ₴1DEV (-zsh)O $2APP (-zsh)•*3-zshControl Centrel310.2Slack|210.1Activity Monitor|210.1Finder|110.1lukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT browser_url, COUNT(*) as framesFROM framesWHERE date(timestamp) = date('now', '-2 day')AND browser_url IS NOT NULLGROUP BY browser_urlORDER BY framesDESCLIMIT 20;• *4-[URL_WITH_CREDENTIALS] ~/.screenpipe $• *5-zsh* *6Sat 11 Apr 15:11:31-zshT81*7...
|
NULL
|
NULL
|
NULL
|
|
iTerm2Shell Edit ViewSessionScriptsProfilesWindo iTerm2Shell Edit ViewSessionScriptsProfilesWindowHelpC$Ш OOA100% C47-zshDOCKERO ₴1DEV (-zsh)O $2APP (-zsh)• *3-zshControl Centrel310.2Slack|210.1Activity Monitor|210.1Finder|110.1lukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT browser_url, COUNT(*) as framesFROM framesWHERE date(timestamp) = date('now', '-2 day')AND browser_url IS NOT NULLGROUP BY browser_urlORDER BY framesDESCLIMIT 20;• *4-[URL_WITH_CREDENTIALS] ~/.screenpipe $• *5-zshS-₴66Sat 11 Apr 15:11:31-zshT81X7...
|
NULL
|
NULL
|
NULL
|
|
iTerm2Shell Edit ViewSessionScriptsProfilesWindo iTerm2Shell Edit ViewSessionScriptsProfilesWindowHelpC$Ш OOA100% C47-zshDOCKERO ₴1DEV (-zsh)O $2APP (-zsh)• *3-zshControl Centrel310.2Slack|210.1Activity Monitor|210.1Finder|110.1lukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT browser_url, COUNT(*) as framesFROM framesWHERE date(timestamp) = date('now', '-2 day')AND browser_url IS NOT NULLGROUP BY browser_urlORDER BY framesDESCLIMIT 20;• *4-[URL_WITH_CREDENTIALS] ~/.screenpipe $• *5-zsh₴86Sat 11 Apr 15:11:32-zshT81X7...
|
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...
|
iTerm2
|
-zsh
|
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...
|
iTerm2
|
-zsh
|
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...
|
iTerm2
|
-zsh
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelplhl100% <47Sat 11 Apr 15:12:51••-zshT&1DOCKERO ₴1DEV (-zsh)O ₴2APP (-zsh)• *3-zsh• 84-zsh• *5-zshO ₴6-zsh*7WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id)WHEREsync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHEREsync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ONaudio_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 $ clearlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny:~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*) as frames FROM frames GROUP BY date(timestamp) ORDERBY date(timestamp);"2026-04-0915232026-04-111197lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $sqlite3~/.screenpipe/db.sqlite"SELECTapp_name, COUNT(*)as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) asest_minutesFROM framesWHEREdate(timestamp)= date('now', '-2 day')ANDapp_name IS NOT NULLGROUP BY app_nameORDER BY frames DESC;iTerm2|185|13.9Dial3112.3Safaril2011.5Claude |1210.9UserNotificationCenter1410.3Control Centrel310.2Slack|210.1Activity Monitor|210.1Finder|110.1lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT browser_url, COUNT(*) as framesFROM framesWHERE date(timestamp) = date('now', '-2 day')AND browser_url IS NOT NULLGROUP BY browser_urlORDER BY frames DESCLIMIT 20;[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT app_name,event_type, COUNT(*) as eventsFROM ui_eventsWHERE date(timestamp) = date('now', '-2 day')AND app_name IS NOT NULL...
|
NULL
|
NULL
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(ahl100% <7Sat 11 Apr 15:12:53-zshT81DOCKERO ₴1DEV (-zsh)O $2APP (-zsh)• ₴з-zsh• 84-zsh• ₴5-zshO ₴6-zsh*7WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id)WHEREsync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHEREsync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ONaudio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ONelements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clearlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny:~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*) as frames FROM frames GROUP BY date(timestamp) ORDERBY date(timestamp);"2026-04-0915232026-04-111197lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $sqlite3~/.screenpipe/db.sqlite"SELECTapp_name, COUNT(*)as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) asest_minutesFROM framesWHEREdate(timestamp)= date('now', '-2 day')ANDapp_name IS NOT NULLGROUP BY app_nameORDER BY frames DESC;iTerm2|185|13.9Dial3112.3Safaril2011.5Claude |1210.9UserNotificationCenter|410.3Control Centrel310.2Slack|210.1Activity Monitor|210.1Finder|110.1lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT browser_url, COUNT(*) as framesFROM framesWHERE date(timestamp) = date('now', '-2 day')AND browser_url IS NOT NULLGROUP BY browser_urlORDER BY frames DESCLIMIT 20;[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT app_name,event_type, COUNT(*) as eventsFROM ui_eventsWHERE date(timestamp) = date('now', '-2 day')AND app_name IS NOT NULL...
|
NULL
|
NULL
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(ahl100% <7Sat 11 Apr 15:12:54-zshT81DOCKERO ₴1DEV (-zsh)O $2APP (-zsh)• ₴з-zsh• 84-zsh• ₴5-zshO ₴6-zsh*7WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id)WHEREsync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHEREsync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ONaudio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ONelements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clearlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny:~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*) as frames FROM frames GROUP BY date(timestamp) ORDERBY date(timestamp);"2026-04-0915232026-04-111197lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $sqlite3~/.screenpipe/db.sqlite"SELECTapp_name, COUNT(*)as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) asest_minutesFROM framesWHEREdate(timestamp)= date('now', '-2 day')ANDapp_name IS NOT NULLGROUP BY app_nameORDER BY frames DESC;iTerm2|185|13.9Dial3112.3Safaril2011.5Claude |1210.9UserNotificationCenter|410.3Control Centrel310.2Slack|210.1Activity Monitor|210.1Finder|110.1lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT browser_url, COUNT(*) as framesFROM framesWHERE date(timestamp) = date('now', '-2 day')AND browser_url IS NOT NULLGROUP BY browser_urlORDER BY frames DESCLIMIT 20;[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT app_name,event_type, COUNT(*) as eventsFROM ui_eventsWHERE date(timestamp) = date('now', '-2 day')AND app_name IS NOT NULL...
|
NULL
|
NULL
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(ahl100% <7Sat 11 Apr 15:13:25-zshT81DOCKERO ₴1DEV (-zsh)O $2APP (-zsh)• ₴з-zsh• 84-zsh• ₴5-zshO ₴6-zsh*7WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id)WHEREsync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHEREsync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ONaudio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ONelements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clearlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny:~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*) as frames FROM frames GROUP BY date(timestamp) ORDERBY date(timestamp);"2026-04-0915232026-04-111197lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $sqlite3~/.screenpipe/db.sqlite"SELECTapp_name, COUNT(*)as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) asest_minutesFROM framesWHEREdate(timestamp)= date('now', '-2 day')ANDapp_name IS NOT NULLGROUP BY app_nameORDER BY frames DESC;iTerm2|185|13.9Dial3112.3Safaril2011.5Claude |1210.9UserNotificationCenter|410.3Control Centrel310.2Slack|210.1Activity Monitor|210.1Finder|110.1lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT browser_url, COUNT(*) as framesFROM framesWHERE date(timestamp) = date('now', '-2 day')AND browser_url IS NOT NULLGROUP BY browser_urlORDER BY frames DESCLIMIT 20;[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT app_name,event_type, COUNT(*) as eventsFROM ui_eventsWHERE date(timestamp) = date('now', '-2 day')AND app_name IS NOT NULL...
|
NULL
|
NULL
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(ahl100% <7Sat 11 Apr 15:13:55-zshT81DOCKERO ₴1DEV (-zsh)О 882APP (-zsh)• ₴з-zsh• 84-zsh• ₴5-zshO 886-zsh*7WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id)WHEREsync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHEREsync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ONaudio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ONelements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clearlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny:~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*) as frames FROM frames GROUP BY date(timestamp) ORDERBY date(timestamp);"2026-04-0915232026-04-111197lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $sqlite3~/.screenpipe/db.sqlite"SELECTapp_name, COUNT(*)as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutesFROM framesWHEREdate(timestamp)= date('now', '-2 day')ANDapp_name IS NOT NULLGROUP BY app_nameORDER BY frames DESC;iTerm2|185|13.9Dial3112.3Safaril2011.5Claude |1210.9UserNotificationCenter|410.3Control Centrel310.2Slack|210.1Activity Monitor|210.1Finder|110.1lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT browser_url, COUNT(*) as framesFROM framesWHERE date(timestamp) = date('now', '-2 day')AND browser_url IS NOT NULLGROUP BY browser_urlORDER BY frames DESCLIMIT 20;[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT app_name,event_type, COUNT(*) as eventsFROM ui_eventsWHERE date(timestamp) = date('now', '-2 day')AND app_name IS NOT NULL...
|
NULL
|
NULL
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(ahl100% <7Sat 11 Apr 15:14:26-zshT81DOCKERO ₴1DEV (-zsh)O $2APP (-zsh)• ₴з-zsh• 84-zsh• ₴5-zshO ₴6-zsh*7WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id)WHEREsync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHEREsync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ONaudio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ONelements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clearlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny:~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*) as frames FROM frames GROUP BY date(timestamp) ORDERBY date(timestamp);"2026-04-0915232026-04-111197lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $sqlite3~/.screenpipe/db.sqlite"SELECTapp_name, COUNT(*)as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) asest_minutesFROM framesWHEREdate(timestamp)= date('now', '-2 day')ANDapp_name IS NOT NULLGROUP BY app_nameORDER BY frames DESC;iTerm2|185|13.9Dial3112.3Safaril2011.5Claude |1210.9UserNotificationCenter|410.3Control Centrel310.2Slack|210.1Activity Monitor|210.1Finder|110.1lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT browser_url, COUNT(*) as framesFROM framesWHERE date(timestamp) = date('now', '-2 day')AND browser_url IS NOT NULLGROUP BY browser_urlORDER BY frames DESCLIMIT 20;[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT app_name,event_type, COUNT(*) as eventsFROM ui_eventsWHERE date(timestamp) = date('now', '-2 day')AND app_name IS NOT NULL...
|
NULL
|
NULL
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(ahl100% <7Sat 11 Apr 15:14:56-zshT81DOCKERO ₴1DEV (-zsh)O $2APP (-zsh)• ₴з-zsh• 84-zsh• ₴5-zshO ₴6-zsh*7WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id)WHEREsync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHEREsync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ONaudio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ONelements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clearlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny:~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*) as frames FROM frames GROUP BY date(timestamp) ORDERBY date(timestamp);"2026-04-0915232026-04-111197lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $sqlite3~/.screenpipe/db.sqlite"SELECTapp_name, COUNT(*)as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) asest_minutesFROM framesWHEREdate(timestamp)= date('now', '-2 day')ANDapp_name IS NOT NULLGROUP BY app_nameORDER BY frames DESC;iTerm2|185|13.9Dial3112.3Safaril2011.5Claude |1210.9UserNotificationCenter|410.3Control Centrel310.2Slack|210.1Activity Monitor|210.1Finder|110.1lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT browser_url, COUNT(*) as framesFROM framesWHERE date(timestamp) = date('now', '-2 day')AND browser_url IS NOT NULLGROUP BY browser_urlORDER BY frames DESCLIMIT 20;[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT app_name,event_type, COUNT(*) as eventsFROM ui_eventsWHERE date(timestamp) = date('now', '-2 day')AND app_name IS NOT NULL...
|
NULL
|
NULL
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(ahl100% <7Sat 11 Apr 15:15:27-zsh181DOCKERO ₴1DEV (-zsh)О 882APP (-zsh)• ₴з-zsh• 84-zsh• ₴5-zshO 886-zsh*7WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id)WHEREsync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHEREsync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ONaudio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ONelements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clearlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny:~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*) as frames FROM frames GROUP BY date(timestamp) ORDERBY date(timestamp);"2026-04-0915232026-04-111197lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $sqlite3~/.screenpipe/db.sqlite"SELECTapp_name, COUNT(*)as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutesFROM framesWHEREdate(timestamp)= date('now', '-2 day')ANDapp_name IS NOT NULLGROUP BY app_nameORDER BY frames DESC;iTerm2|185|13.9Dial3112.3Safaril2011.5Claude |1210.9UserNotificationCenter|410.3Control Centrel310.2Slack|210.1Activity Monitor|210.1Finder|110.1lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT browser_url, COUNT(*) as framesFROM framesWHERE date(timestamp) = date('now', '-2 day')AND browser_url IS NOT NULLGROUP BY browser_urlORDER BY frames DESCLIMIT 20;[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT app_name,event_type, COUNT(*) as eventsFROM ui_eventsWHERE date(timestamp) = date('now', '-2 day')AND app_name IS NOT NULL...
|
NULL
|
NULL
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(ahl100% <7Sat 11 Apr 15:15:58-zshT81DOCKERO ₴1DEV (-zsh)О 882APP (-zsh)• ₴з-zsh• 84-zsh• ₴5-zshO 886-zsh*7WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id)WHEREsync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHEREsync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ONaudio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ONelements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clearlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny:~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*) as frames FROM frames GROUP BY date(timestamp) ORDERBY date(timestamp);"2026-04-0915232026-04-111197lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $sqlite3~/.screenpipe/db.sqlite"SELECTapp_name, COUNT(*)as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutesFROM framesWHEREdate(timestamp)= date('now', '-2 day')ANDapp_name IS NOT NULLGROUP BY app_nameORDER BY frames DESC;iTerm2|185|13.9Dial3112.3Safaril2011.5Claude |1210.9UserNotificationCenter|410.3Control Centrel310.2Slack|210.1Activity Monitor|210.1Finder|110.1lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT browser_url, COUNT(*) as framesFROM framesWHERE date(timestamp) = date('now', '-2 day')AND browser_url IS NOT NULLGROUP BY browser_urlORDER BY frames DESCLIMIT 20;[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT app_name,event_type, COUNT(*) as eventsFROM ui_eventsWHERE date(timestamp) = date('now', '-2 day')AND app_name IS NOT NULL...
|
NULL
|
NULL
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(ahl100% <7Sat 11 Apr 15:16:23-zshT81DOCKERO ₴1DEV (-zsh)О 882APP (-zsh)• ₴з-zsh• 84-zsh• ₴5-zshO 886-zsh*7WHERE text IS NOT NULL;CREATE INDEX idx_frames_sync_id ON frames(sync_id)WHEREsync_id IS NOT NULL;CREATE INDEX idx_ocr_text_sync_id ON ocr_text(sync_id) WHEREsync_id IS NOT NULL;CREATE INDEX idx_audio_transcriptions_sync_id ONaudio_transcriptions(sync_id) WHERE sync_id IS NOT NULL;CREATE INDEX idx_elements_frame_source_role ONelements(frame_id, source, role) WHERE text IS NOT NULL;lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ clearlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny:~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT date(timestamp), COUNT(*) as frames FROM frames GROUP BY date(timestamp) ORDERBY date(timestamp);"2026-04-0915232026-04-111197lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $sqlite3~/.screenpipe/db.sqlite"SELECTapp_name, COUNT(*)as frames, ROUND(COUNT(*) * 4.5 / 60.0, 1) as est_minutesFROM framesWHEREdate(timestamp)= date('now', '-2 day')ANDapp_name IS NOT NULLGROUP BY app_nameORDER BY frames DESC;iTerm2|185|13.9Dial3112.3Safaril2011.5Claude |1210.9UserNotificationCenter|410.3Control Centrel310.2Slack|210.1Activity Monitor|210.1Finder|110.1lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT browser_url, COUNT(*) as framesFROM framesWHERE date(timestamp) = date('now', '-2 day')AND browser_url IS NOT NULLGROUP BY browser_urlORDER BY frames DESCLIMIT 20;[URL_WITH_CREDENTIALS] ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT app_name,event_type, COUNT(*) as eventsFROM ui_eventsWHERE date(timestamp) = date('now', '-2 day')AND app_name IS NOT 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...
|
iTerm2
|
-zsh
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelplhl100% C-zshDOCKERO ₴1DEV (-zsh)O 882APP (-zsh)|• *3WHEREdate(timestamp)'SDATE'ANDwindow_nameIS NOT NULL AND app_name IS NOT NULLGROUP BY app_name, window_name ORDER BY COUNT(*)DESC LIMIT 20;"-zsh• *4-zshechoHOURLY TIMELINE"echosqlite3 "SDB""SELECT printf('%s%-20s %3d frames', strftime('%H:00', timestamp), app_name, COUNT(*))FROM framesWHERE date(timestamp) = 'SDATE' ANDapp_name IS NOT NULLGROUP BY strftime('%H', timestamp), app_nameORDER BY strftime('%H', timestamp), COUNT(*) DESC;"echo"\nCLIPBOARD ACTIVITY"echosqlite3"SDB" "SELECTprintf('%-20s %s', app_name,SUBSTR(text_content, 1, 80))FROM ui_eventsWHEREdate(timestamp) = 'SDATE' ANDevent_type = 'clipboard' AND text_content IS NOT NULLORDER BY timestamp LIMIT 20;"echo"\ngOCR TEXT SAMPLES PER APP"echosqlite3 "SDB""SELECT printf('%-15s%s', o.app_name, SUBSTR(o.text, 1, 80))FROM ocr_text oJOINframes f ON o.frame_id = f.idWHEREdate(f.timestamp) = 'SDATE' AND o.app_name IS NOT NULL AND o.text != **GROUP BY o.app_nameORDER BY o.app_name LIMIT 15;"echo"TOTALS"echosqlite3"SDB""SELECT'Frames:' II COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';sqlite3 "SDB"SELECT 'UI Events: ' |1 COUNT(*) FROM ui_events WHERE date(timestamp) = 'SDATE';sqlite3 "SDB"SELECT 'OCR texts: ' |I COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) - 'SDATE';EOFchmod+x ~/screenpipe-day.shlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ |• 85-zsh• *6Sat 11 Apr 15:16:31-zshT81X7...
|
NULL
|
NULL
|
NULL
|
|
iTerm2ShellEdit|ViewSessionScriptsProfilesWindowHe iTerm2ShellEdit|ViewSessionScriptsProfilesWindowHelp(ahl100% <7-zshDOCKERO ₴1DEV (-zsh)О 882APP (-zsh)• ₴зWHEREdate(timestamp)'SDATE'ANDwindow_nameIS NOT NULL AND app_name IS NOT NULLGROUP BY app_name, window_name ORDER BY COUNT(*)DESC LIMIT 20;"-zsh• *4-zshechoHOURLY TIMELINE"echosqlite3 "SDB""SELECT printf('%s%-20s %3d frames', strftime("%H:00', timestamp), app_name, COUNT(*))FROM framesWHERE date(timestamp) = 'SDATE' ANDapp_name IS NOT NULLGROUP BY strftime('%H', timestamp), app_nameORDER BY strftime('%H', timestamp), COUNT(*) DESC;"echo"\nCLIPBOARD ACTIVITY"echosqlite3"SDB""SELECT printf('%-20s %s', app_name,SUBSTR(text_content, 1, 80))FROM ui_eventsWHEREdate(timestamp) = 'SDATE' ANDevent_type = 'clipboard' AND text_content IS NOT NULLORDER BY timestamp LIMIT 20;"echo"\ngOCR TEXT SAMPLES PER APP"echosqlite3 "SDB""SELECT printf('%-15s%s', o.app_name, SUBSTR(o.text, 1, 80))FROM ocr_text oJOINframes f ON o.frame_id = f.idWHEREdate(f.timestamp) = 'SDATE' AND o.app_name IS NOT NULL AND o.text != **GROUP BY o.app_nameORDER BY o.app_name LIMIT 15;"echo"TOTALS"echosqlite3"SDB""SELECT'Frames:' II COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';sqlite3 "SDB"SELECT 'UI Events: ' |1 COUNT(*) FROM ui_events WHERE date(timestamp) = 'SDATE';sqlite3 "SDB"SELECT 'OCR texts: ' |I COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) - 'SDATE';EOFchmod+x ~/screenpipe-day.shlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ П• ₴5-zshO 886Sat 11 Apr 15:16:32-zshT81X7...
|
NULL
|
NULL
|
NULL
|
|
iTerm2ShellEdit|ViewSessionScriptsProfilesWindowHe iTerm2ShellEdit|ViewSessionScriptsProfilesWindowHelp(ahl100% <7-zshDOCKERO ₴1DEV (-zsh)О 882APP (-zsh)• ₴зWHEREdate(timestamp)'SDATE'ANDwindow_nameIS NOT NULL AND app_name IS NOT NULLGROUP BY app_name, window_name ORDER BY COUNT(*)DESC LIMIT 20;"-zsh• *4-zshechoHOURLY TIMELINE"echosqlite3 "SDB""SELECT printf('%s%-20s %3d frames', strftime("%H:00', timestamp), app_name, COUNT(*))FROM framesWHERE date(timestamp) = 'SDATE' ANDapp_name IS NOT NULLGROUP BY strftime('%H', timestamp), app_nameORDER BY strftime('%H', timestamp), COUNT(*) DESC;"echo"\nCLIPBOARD ACTIVITY"echosqlite3"SDB""SELECT printf('%-20s %s', app_name,SUBSTR(text_content, 1, 80))FROM ui_eventsWHEREdate(timestamp) = 'SDATE' ANDevent_type = 'clipboard' AND text_content IS NOT NULLORDER BY timestamp LIMIT 20;"echo"\ngOCR TEXT SAMPLES PER APP"echosqlite3 "SDB""SELECT printf('%-15s%s', o.app_name, SUBSTR(o.text, 1, 80))FROM ocr_text oJOINframes f ON o.frame_id = f.idWHEREdate(f.timestamp) = 'SDATE' AND o.app_name IS NOT NULL AND o.text != **GROUP BY o.app_nameORDER BY o.app_name LIMIT 15;"echo"TOTALS"echosqlite3"SDB""SELECT'Frames:' II COUNT(*) FROM frames WHERE date(timestamp) = '$DATE';sqlite3 "SDB"SELECT 'UI Events: ' |1 COUNT(*) FROM ui_events WHERE date(timestamp) = 'SDATE';sqlite3 "SDB"SELECT 'OCR texts: ' |I COUNT(*) FROM ocr_text o JOIN frames f ON o.frame_id = f.id WHERE date(f.timestamp) - 'SDATE';EOFchmod+x ~/screenpipe-day.shlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ П• ₴5-zshO 886Sat 11 Apr 15:16:34-zshT81X7...
|
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...
|
iTerm2
|
-zsh
|
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...
|
iTerm2
|
-zsh
|
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...
|
iTerm2
|
-zsh
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zshDOCKERO ₴1DEV (-zsh)O $2APP (-zsh)drwxr-xr-x10 lukasstaff11Apr 14:52screenpipedrwxr-xr-x4 lukasstaffFeb09:35sonarlintdrwx-15 lukasstaff8Aug2025.sshdrwxr-xr-xe3lukasstaff9615Aug2025streamlitdrwx-lukasstaff17Oct2022swiftpm-rw-lukasstaff8 Apr19:14•viminfodrwx--5lukasstaff19 Jun2023vscodedrwxr-xr-x@lukasstaff9620 Jan2025- warpdrwxr-xr-xlukasstaffdrwxr-xr-x@5 lukasstaff29Apr2023. wdm26Jan13:03windsurfdrwxr-xr-x4lukasstaff24 Mar12:03yarnlukasstaff-rw-r--r--@lukasstaff30Mar10:12•yarnrc6Apr14:31.zcompdump-rw-r--r--@lukasstaff2Nov20:34-rw-r--r--@lukasstaff9Apr20:30lukasstaff•zprofile-rw-r--r--8-rw-r--r--@lukasstaffApr2022zprofile-copy15Mar2023•zprofile.pysave-rw---lukasstaff29Jun2022.zprofile.save-rw-r--r--1lukasstaff8 Apr-rw--1 lukasstaff2022zprofilees11Apr 11:12drwx-----9 lukasstaff.zsh_history6 May2025zsh_sessions-rw-r--r--@1lukasstaffdrwx-----@9lukasstaff25Jul2025.zshrc9 Apr20:08Applicationsdrwxr-xr-xe2 lukasstaff6422 Oct09:35CascadeProjectsdrwxr-xr-x4 lukasstaff27Oct09:24DEVdrwx--@5 lukasstaff11Apr14:53Desktopdrwx-7 lukasstaff26Mar14:40Documentsdrwx--41 lukasstaff8Apr20:46Downloadsdrwxr-xr-xe4 lukasstaff17 Mar20:27drwx-112 lukasstaffKeychron_Screen2 Dec09:19drwx7 lukasstaffLibrary12Feb2024Moviesdrwx-5 lukasstaffdrwx9 lukasstaff25Sep2023Music25Sep2023Picturesdrwx-3 lukasstaff968 Nov2021Postmandrwx-4 lukasstaff28 Oct2021Public-rw-r-r--@1lukasstaff15 Dec09:16Untitled 4.spfdrwx-4 lukasstaff2Jul2023Usersdrwx-lukasstaff9630Sep2022iCloud Drive (Archive)drwx-16 lukasstaff3Novdrwxr-xr-x3 lukasstaff11:35jiminny9620Mar18:47node_modulesdrwxr-xr-x4 lukasstaff21 Oct18:15raycastlukasstaff1 Mar14:26-rwxr-xr-x1 lukasstaffresponse.bin382411Apr15:16screenpipe-day.sh-rw-r--r--1 lukasstaff8620 Mar18:47yarn. locklukas@Lukas-Kovaliks-MacBook-Pro-Jiminny$• *3-zsh• *4zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381-zshlhl• 85-zsh100% C• *6Sat 11 Apr 15:17:13-zshT81*7...
|
NULL
|
NULL
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zshDOCKERdrwxr-xr-xdrwxr-xr-xdrwx-drwxr-xr-xedrwx--rw-drwx--drwxr-xr-x@drwxr-xr-xdrwxr-xr-x@drwxr-xr-xO ₴1DEV (-zsh)-О 882APP (-zsh)10 lukasstaff32011Apr 14:52screenpipe4 lukasstaff128Feb09:35sonarlint15lukasstaff4808Aug2025.sshlukasstaff9615Aug2025streamlitlukasstaff19217Oct2022swiftpmlukasstaff121838 Apr19:14•viminfolukasstaff16019Jun2023vscodelukasstaff9620 Jan2025- warplukasstaff5 lukasstaff12829Apr2023. wdm16026Jan13:03windsurf4lukasstaff12824 Mar12:03yarnlukasstaff116-rw-r--r--@-rw-r--r--@-rw-r--r--@-rw-r--r---rw-r--r--@-rW----rw-r--r---rw--drwx------rw-r--r--@drwx------@drwxr-xr-xedrwxr-xr-xdrwx--@drwx-drwx--drwxr-xr-xedrwx-drwx-drwx-drwxdrwx-drwx--rw-rdrwx-drwx-drwx-drwxr-xr-xdrwxr-xr-xlukasstaff30Mar10:12•yarnrc495186Apr14:31.zcompdumplukasstaff467582Nov20:34lukasstaff56419Apr20:30•zprofilelukasstaff14688Apr2022zprofile-copylukasstaff290015Mar2023•zprofile.pysavelukasstaff173129Jun2022.zprofile.save1lukasstaff1 lukasstaff15698 Apr2022•zprofilees2881311Apr 11:129 lukasstaff.zsh_history2886 May2025zsh_sessions1lukasstaff9lukasstaff36225Jul2025.zshrc2889 Apr20:08Applications2 lukasstaff6422 Oct09:35CascadeProjects4 lukasstaff12827Oct09:24DEV5 lukasstaff16011Apr14:53Desktop7 lukasstaff22426Mar14:40Documents41 lukasstaff13128Apr20:46Downloads4 lukasstaff112 lukasstaff12817 Mar20:27Keychron_Screen35842 Dec09:197 lukasstaffLibrary22412Feb2024Movies5 lukasstaff1609 lukasstaff25Sep2023Music28825Sep2023Pictures3 lukasstaff968 Nov2021Postman4 lukasstaff12828 Oct2021Publicr--@1lukasstaff395015 Dec09:16Untitled 4.spf4 lukasstaff1282Jul2023Userslukasstaff9630Sep2022iCloud Drive (Archive)16 lukasstaff3 lukasstaff5123Nov11:35jiminny9620Mar18:47node_modules4 lukasstaff12821 Oct18:15raycastlukasstaff1 Mar14:26-rwxr-xr-x1 lukasstaffresponse.bin382411 Apr15:16screenpipe-day.sh-rw-r--r--1 lukasstaff8620 Mar 18:47yarn.locklukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $• ₴з-zsh• 84zcompdump.Lukas-Kovaliks-MacBook-Pro-Jiminny.23381-zsh$0(ahl• ₴5-zsh100% <7O 886Sat 11 Apr 15:17:14-zsh181*7...
|
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...
|
iTerm2
|
-zsh
|
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...
|
iTerm2
|
zsh
|
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...
|
iTerm2
|
-zsh
|
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...
|
iTerm2
|
-zsh
|
NULL
|
|
17:0017:0017:0017:0017:0018:0018:0018:0018:00iTerm 17:0017:0017:0017:0017:0018:0018:0018:0018:00iTerm2ShellEdit••DOCKERO ₴1SafariClaudeUserNotificationCenterFinderControlCentreiTerm2DiaClaudeSlackCLIPBOARD ACTIVITYiTerm2DiaViewSessionScriptsProfilesWindowHelp-zshDEV (-zsh)-16 frames8 frames4 frames1 frames1 frames55 frames4 frames4 frames2 framesO $2APP (-zsh)• *з-zsh• 84-zshlhl• 85-zsh100% C• *6Sat 11 Apr 15:18:06-zshT81*7DiaDiaDiaDiaDiaDiaiTerm2claude mcp addscreenpipe -- npx -yscreenpipe-mcplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe-- npх -уlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npх -уnpm install -g @anthropic-ai/claude-codenpm install -g @anthropic-ai/claude-codenpm install -g @anthropic-ai/claude-codelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -yclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mclukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -ynpm install -g @anthropic-ai/claude-codenpm install -g @anthropic-ai/claude-codeclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mccurl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $|...
|
NULL
|
NULL
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh(ahl• ₴5100% <7Sat 11 Apr 15:18:07-zsh181*717:0017:0017:0017:0017:0018:0018:0018:0018:00DOCKERO ₴1SafariClaudeUserNotificationCenterFinderControlCentreiTerm2DiaClaudeSlackCLIPBOARD ACTIVITYiTerm2DiaDEV (-zsh)16 frames8 frames4 frames1 frames1 frames55 frames4 frames4 frames2 framesO $2APP (-zsh)• ₴з-zsh• 84-zsh-zshO ₴6DiaDiaDiaDiaDiaDiaiTerm2claude mcp addscreenpipe -- npx -yscreenpipe-mcplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe-- прх -уlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npх -уnpm install -g @anthropic-ai/claude-codenpm install -g @anthropic-ai/claude-codenpm install-g @anthropic-ai/claude-codelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -yclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mclukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -ynpm install -g @anthropic-ai/claude-codenpm install -g @anthropic-ai/claude-codeclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mccurl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ 0...
|
NULL
|
NULL
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh(ahl• ₴5100% <7Sat 11 Apr 15:18:27-zsh181X717:0017:0017:0017:0017:0018:0018:0018:0018:00DOCKERO ₴1SafariClaudeUserNotificationCenterFinderControlCentreiTerm2DiaClaudeSlackCLIPBOARD ACTIVITYiTerm2DiaDEV (-zsh)16 frames8 frames4 frames1 frames1 frames55 frames4 frames4 frames2 framesO $2APP (-zsh)• ₴з-zsh• 84-zsh-zshDiaDiaDiaDiaDiaDiaiTerm2claude mcp addscreenpipe -- npx -yscreenpipe-mcplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe-- прх -уlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npх -уnpm install -g @anthropic-ai/claude-codenpm install -g @anthropic-ai/claude-codenpm install-g @anthropic-ai/claude-codelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -yclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mclukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -ynpm install -g @anthropic-ai/claude-codenpm install -g @anthropic-ai/claude-codeclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mccurl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ 0...
|
NULL
|
NULL
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh(ahl• ₴5100% <7Sat 11 Apr 15:18:57-zshT81X717:0017:0017:0017:0017:0018:0018:0018:0018:00DOCKERO ₴1SafariClaudeUserNotificationCenterFinderControlCentreiTerm2DiaClaudeSlackCLIPBOARD ACTIVITYiTerm2DiaDEV (-zsh)16 frames8 frames4 frames1 frames1 frames55 frames4 frames4 frames2 framesO $2APP (-zsh)• ₴з-zsh• 84-zsh-zshO ₴6DiaDiaDiaDiaDiaDiaiTerm2claude mcp addscreenpipe -- npx -yscreenpipe-mcplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe-- прх -уlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npх -уnpm install -g @anthropic-ai/claude-codenpm install -g @anthropic-ai/claude-codenpm install-g @anthropic-ai/claude-codelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -yclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mclukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -ynpm install -g @anthropic-ai/claude-codenpm install -g @anthropic-ai/claude-codeclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mccurl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ 0...
|
NULL
|
NULL
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh(ahl• ₴5100% <7Sat 11 Apr 15:19:27-zsh181X717:0017:0017:0017:0017:0018:0018:0018:0018:00DOCKERO ₴1SafariClaudeUserNotificationCenterFinderControlCentreiTerm2DiaClaudeSlackCLIPBOARD ACTIVITYiTerm2DiaDEV (-zsh)16 frames8 frames4 frames1 frames1 frames55 frames4 frames4 frames2 framesO $2APP (-zsh)• ₴з-zsh• 84-zsh-zshO ₴6DiaDiaDiaDiaDiaDiaiTerm2claude mcp addscreenpipe -- npx -yscreenpipe-mcplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe-- прх -уlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npх -уnpm install -g @anthropic-ai/claude-codenpm install -g @anthropic-ai/claude-codenpm install-g @anthropic-ai/claude-codelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -yclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mclukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -ynpm install -g @anthropic-ai/claude-codenpm install -g @anthropic-ai/claude-codeclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mccurl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ 0...
|
NULL
|
NULL
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh(ahl• ₴5100% <7Sat 11 Apr 15:19:49-zsh181X717:0017:0017:0017:0017:0018:0018:0018:0018:00DOCKERO ₴1SafariClaudeUserNotificationCenterFinderControlCentreiTerm2DiaClaudeSlackCLIPBOARD ACTIVITYiTerm2DiaDEV (-zsh)16 frames8 frames4 frames1 frames1 frames55 frames4 frames4 frames2 framesO $2APP (-zsh)• ₴з-zsh• 84-zsh-zshO ₴6DiaDiaDiaDiaDiaDiaiTerm2claude mcp addscreenpipe -- npx -yscreenpipe-mcplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe-- прх -уlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npх -уnpm install -g @anthropic-ai/claude-codenpm install -g @anthropic-ai/claude-codenpm install-g @anthropic-ai/claude-codelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -yclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mclukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -ynpm install -g @anthropic-ai/claude-codenpm install -g @anthropic-ai/claude-codeclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mccurl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ 0...
|
NULL
|
NULL
|
NULL
|
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp-zsh(ahl• ₴5100% <7Sat 11 Apr 15:19:52-zsh181X717:0017:0017:0017:0017:0018:0018:0018:0018:00DOCKERO ₴1SafariClaudeUserNotificationCenterFinderControlCentreiTerm2DiaClaudeSlackCLIPBOARD ACTIVITYiTerm2DiaDEV (-zsh)16 frames8 frames4 frames1 frames1 frames55 frames4 frames4 frames2 framesO $2APP (-zsh)• ₴з-zsh• 84-zsh-zshO ₴6DiaDiaDiaDiaDiaDiaiTerm2claude mcp addscreenpipe -- npx -yscreenpipe-mcplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe-- прх -уlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npх -уnpm install -g @anthropic-ai/claude-codenpm install -g @anthropic-ai/claude-codenpm install-g @anthropic-ai/claude-codelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -yclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mclukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npx -ynpm install -g @anthropic-ai/claude-codenpm install -g @anthropic-ai/claude-codeclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mccurl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ 0...
|
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...
|
iTerm2
|
-zsh
|
NULL
|
|
iTerm2ShellEdit••DOCKER• ₴117:0017:0017:0017:0018: iTerm2ShellEdit••DOCKER• ₴117:0017:0017:0017:0018:0018:0018:0018:00ClaudeUserNotificationCenterFinderControl CentreiTerm2DiaClaudeSlackCLIPBOARD ACTIVITYiTerm2DiaViewSessionScriptsProfilesWindowHelplhl-zshDEV (-zsh)8 frames4 frames1 frames1 frames55 frames4 frames4 frames2 framesO 882APP (-zsh)• *3-zsh• 84-zsh• 85-zsh100% C• *6Sat 11 Apr 15:19:56-zshT81*7DiaDiaDiaDiaDiaDiaiTerm2{claude mcp addscreenpipe -- npx-y screenpipe-mcplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- пpх -уlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- пpх -уnpm install -g @anthropic-ai/claude-codenpm install -g @anthropic-ai/claude-codenpm install-g @anthropic-ai/claude-codelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npх -уclaude mcp addscreenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp addscreenpipe --transport stdio --scope user -- npx -y screenpipe-mclukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ claude mcp add screenpipe -- npх -уnpm install -g @anthropic-ai/claude-codenpm install -g @anthropic-ai/claude-codeclaude mcp addscreenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mcclaude mcp add screenpipe --transport stdio --scope user -- npx -y screenpipe-mccurl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ $ curl [URL_WITH_CREDENTIALS] ~ S sqlite3~/.screenpipe/db.sqlite "SELECT * FROM memories LIMIT 5;"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $|...
|
NULL
|
NULL
|
NULL
|