|
28144
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 12 pending changes Source Control (⇧⌘G) - 12 pending changes
12
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 25, Col 8
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28144
|
|
28145
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 12 pending changes Source Control (⇧⌘G) - 12 pending changes
12
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 25, Col 8
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28145
|
|
28146
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 12 pending changes Source Control (⇧⌘G) - 12 pending changes
12
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 25, Col 8
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28146
|
|
28147
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 12 pending changes Source Control (⇧⌘G) - 12 pending changes
12
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 28, Col 17
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
legacy-20260511
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
legacy-20260511|1|2
legacy-20260511|2|2
legacy-20260511|3|2
legacy-20260511|4|2
legacy-20260511|5|2
legacy-20260511|6|2
legacy-20260511|9|4
legacy-20260511|10|4
legacy-20260511|11|4
legacy-20260511|12|4
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
4009|2607
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Expand content to scroll
Thought
for 1s
The issue is clear now:
video_chunks
has 400
9 rows but only 2607 unique
(install_id, id)
combinations. Each ID appears
2-4 times, which violates the unique constraint.
This likely happened from multiple
sync runs without proper deduplication. To fix this, you need
to remove the duplicate rows before the migration can proceed:
bash
# Delete duplicates, keeping the first occurrence for each (install_id, id)
sqlite3
/volume1/screenpipe/archive.db
"
DELETE FROM video_chunks
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM video_chunks
GROUP BY install_id, id
);
"
# Verify cleanup
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) FROM video_chunks;"
sqlite3
/volume1/screenpipe/archive.db...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28147
|
|
28148
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 12 pending changes Source Control (⇧⌘G) - 12 pending changes
12
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 28, Col 17
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
legacy-20260511
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
legacy-20260511|1|2
legacy-20260511|2|2
legacy-20260511|3|2
legacy-20260511|4|2
legacy-20260511|5|2
legacy-20260511|6|2
legacy-20260511|9|4
legacy-20260511|10|4
legacy-20260511|11|4
legacy-20260511|12|4
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
4009|2607
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Expand content to scroll
Thought
for 1s
The issue is clear now:
video_chunks
has 400
9 rows but only 2607 unique
(install_id, id)
combinations. Each ID appears
2-4 times, which violates the unique constraint.
This likely happened from multiple
sync runs without proper deduplication. To fix this, you need
to remove the duplicate rows before the migration can proceed:
bash
# Delete duplicates, keeping the first occurrence for each (install_id, id)
sqlite3
/volume1/screenpipe/archive.db
"
DELETE FROM video_chunks
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM video_chunks
GROUP BY install_id, id
);
"
# Verify cleanup
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) FROM video_chunks;"
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(DISTINCT install_id || '|' || id) FROM video_chunks;"
After this
, both counts should match (2607),
and you can re-run the migration script:
bash
/volume1/screenpipe/screenpipe_fts_migrate.sh
You may
need to repeat this for other tables if they
have the same issue. The migration script
processes tables in order:
video_chunks frames elements
ocr_text ui_events meetings
(vision) then
speakers speaker_embeddings audio_chunks audio_transcriptions
audio_tags
(audio).
Feedback submitted
Your modified files:
screenpipe_sync.sh
/volume1/screenpipe
+
1
-
1
ok lets forget on install id for a while. Given the
@
screenpipe_sync.sh
why do I get error like this when ruynning the same scritp from nas. lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh 2026-05-11
[2026-05-12 20:19:37] ========================================
[2026-05-12 20:19:37] Screenpipe sync starting for: 2026-05-11
[2026-05-12 20:19:37] install_id: 2ff6574c-4272-4dbf-a20b-434b024c65fb
[2026-05-12 20:19:37] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (4.2G)
NAS mount: OK /Volumes/screenpipe
Archive DB: will be created
Frame data dir: OK (283 files, 318M)
Audio files: OK (2507 files, 267M)
[+00m00s] ▶ Counting source rows for 2026-05-11
frames: 6857
elements: 672129
ui_events: 7063
ocr_text: 2332
meetings: 1
audio_chunks: 2507
audio_transcriptions: 226
audio_tags: 0
speakers: 15 (all-time)
speaker_embeddings: 58 (all-time)
[+00m01s] ▶ Initialising tables (CREATE IF NOT EXISTS)
creating vision tables ✓ 0m00s
creating audio tables ✓ 0m01s
Error: in prepare, no such column: id
S idx_ocr_text_install_pk ON ocr_text(install_id, id);
error here ---^
Expand content to scroll
Thought
for 1s
The error occurs because the
ocr_text
table doesn't have an
id
column, but the script tries to create a
unique index on
(install_id, id)
. The script assumes all
tables have an
id
column, but
ocr_text
likely has a different primary key structure.
Let me check the ocr_text table schema in your source
database:
Searched
ocr_text in /volume1/screenpipe (*.sh)
Thought
for 2s
The error occurs because the script tries to create a unique
index on
ocr_text(install_id, id)
, but the
ocr_text
table doesn't have an
id
column. The script assumes
all tables have an
id
column as
their primary key, but
ocr_text...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28148
|
|
28149
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 12 pending changes Source Control (⇧⌘G) - 12 pending changes
12
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 28, Col 17
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
legacy-20260511
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
legacy-20260511|1|2
legacy-20260511|2|2
legacy-20260511|3|2
legacy-20260511|4|2
legacy-20260511|5|2
legacy-20260511|6|2
legacy-20260511|9|4
legacy-20260511|10|4
legacy-20260511|11|4
legacy-20260511|12|4
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
4009|2607
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Expand content to scroll
Thought
for 1s
The issue is clear now:
video_chunks
has 400
9 rows but only 2607 unique
(install_id, id)
combinations. Each ID appears
2-4 times, which violates the unique constraint.
This likely happened from multiple
sync runs without proper deduplication. To fix this, you need
to remove the duplicate rows before the migration can proceed:
bash
# Delete duplicates, keeping the first occurrence for each (install_id, id)
sqlite3
/volume1/screenpipe/archive.db
"
DELETE FROM video_chunks
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM video_chunks
GROUP BY install_id, id...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28149
|
|
28150
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 12 pending changes Source Control (⇧⌘G) - 12 pending changes
12
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 28, Col 17
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
legacy-20260511
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
legacy-20260511|1|2
legacy-20260511|2|2
legacy-20260511|3|2
legacy-20260511|4|2
legacy-20260511|5|2
legacy-20260511|6|2
legacy-20260511|9|4
legacy-20260511|10|4
legacy-20260511|11|4
legacy-20260511|12|4
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
4009|2607
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Expand content to scroll
Thought
for 1s
The issue is clear now:
video_chunks
has 400
9 rows but only 2607 unique
(install_id, id)
combinations. Each ID appears
2-4 times, which violates the unique constraint.
This likely happened from multiple
sync runs without proper deduplication. To fix this, you need
to remove the duplicate rows before the migration can proceed:
bash
# Delete duplicates, keeping the first occurrence for each (install_id, id)
sqlite3
/volume1/screenpipe/archive.db
"
DELETE FROM video_chunks
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM video_chunks
GROUP BY install_id, id
);
"
# Verify cleanup
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) FROM video_chunks;"
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(DISTINCT install_id || '|' || id) FROM video_chunks;"
After this
, both counts should match (2607),
and you can re-run the migration script:
bash
/volume1/screenpipe/screenpipe_fts_migrate.sh
You may
need to repeat this for other tables if they
have the same issue. The migration script
processes tables in order:
video_chunks frames elements
ocr_text ui_events meetings
(vision) then
speakers speaker_embeddings audio_chunks audio_transcriptions
audio_tags
(audio).
Feedback submitted
Your modified files:
screenpipe_sync.sh
/volume1/screenpipe
+
1
-
1
ok lets forget on install id for a while. Given the
@
screenpipe_sync.sh
why do I get error like this when ruynning the same scritp from nas. lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh 2026-05-11
[2026-05-12 20:19:37] ========================================
[2026-05-12 20:19:37] Screenpipe sync starting for: 2026-05-11
[2026-05-12 20:19:37] install_id: 2ff6574c-4272-4dbf-a20b-434b024c65fb
[2026-05-12 20:19:37] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (4.2G)
NAS mount: OK /Volumes/screenpipe
Archive DB: will be created
Frame data dir: OK (283 files, 318M)
Audio files: OK (2507 files, 267M)
[+00m00s] ▶ Counting source rows for 2026-05-11
frames: 6857
elements: 672129
ui_events: 7063
ocr_text: 2332
meetings: 1
audio_chunks: 2507
audio_transcriptions: 226
audio_tags: 0
speakers: 15 (all-time)
speaker_embeddings: 58 (all-time)
[+00m01s] ▶ Initialising tables (CREATE IF NOT EXISTS)
creating vision tables ✓ 0m00s
creating audio tables ✓ 0m01s
Error: in prepare, no such column: id
S idx_ocr_text_install_pk ON ocr_text(install_id, id);
error here ---^
Expand content to scroll
Thought
for 1s
The error occurs because the
ocr_text
table doesn't have an
id
column, but the script tries to create a
unique index on
(install_id, id)
. The script assumes all
tables have an
id
column, but
ocr_text
likely has a different primary key structure.
Let me check the ocr_text table schema in your source
database:
Searched
ocr_text in /volume1/screenpipe (*.sh)
Thought
for 2s
The error occurs because the script tries to create a unique
index on
ocr_text(install_id, id)
, but the
ocr_text
table doesn't have an...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28150
|
|
28151
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 12 pending changes Source Control (⇧⌘G) - 12 pending changes
12
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 28, Col 17
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
legacy-20260511
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
legacy-20260511|1|2
legacy-20260511|2|2
legacy-20260511|3|2
legacy-20260511|4|2
legacy-20260511|5|2
legacy-20260511|6|2
legacy-20260511|9|4
legacy-20260511|10|4
legacy-20260511|11|4
legacy-20260511|12|4
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
4009|2607
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Expand content to scroll
Thought
for 1s
The issue is clear now:
video_chunks
has 400
9 rows but only 2607 unique
(install_id, id)
combinations. Each ID appears
2-4 times, which violates the unique constraint.
This likely happened from multiple
sync runs without proper deduplication. To fix this, you need
to remove the duplicate rows before the migration can proceed:
bash
# Delete duplicates, keeping the first occurrence for each (install_id, id)
sqlite3
/volume1/screenpipe/archive.db
"
DELETE FROM video_chunks
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM video_chunks
GROUP BY install_id, id
);
"
# Verify cleanup
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) FROM video_chunks;"
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(DISTINCT install_id || '|' || id) FROM video_chunks;"
After this
, both counts should match (2607),
and you can re-run the migration script:
bash
/volume1/screenpipe/screenpipe_fts_migrate.sh
You may
need to repeat this for other tables if they
have the same issue. The migration script
processes tables in order:
video_chunks frames elements
ocr_text ui_events meetings
(vision) then
speakers speaker_embeddings audio_chunks audio_transcriptions
audio_tags
(audio).
Feedback submitted
Your modified files:
screenpipe_sync.sh
/volume1/screenpipe
+
1
-
1
ok lets forget on install id for a while. Given the
@
screenpipe_sync.sh
why do I get error like this when ruynning the same scritp from nas. lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh 2026-05-11
[2026-05-12 20:19:37] ========================================
[2026-05-12 20:19:37] Screenpipe sync starting for: 2026-05-11
[2026-05-12 20:19:37] install_id: 2ff6574c-4272-4dbf-a20b-434b024c65fb
[2026-05-12 20:19:37] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (4.2G)
NAS mount: OK /Volumes/screenpipe
Archive DB: will be created
Frame data dir: OK (283 files, 318M)
Audio files: OK (2507 files, 267M)
[+00m00s] ▶ Counting source rows for 2026-05-11
frames: 6857
elements: 672129
ui_events: 7063
ocr_text: 2332
meetings: 1
audio_chunks: 2507
audio_transcriptions: 226
audio_tags: 0
speakers: 15 (all-time)
speaker_embeddings: 58 (all-time)
[+00m01s] ▶ Initialising tables (CREATE IF NOT EXISTS)
creating vision tables ✓ 0m00s
creating audio tables ✓ 0m01s
Error: in prepare, no such column: id
S idx_ocr_text_install_pk ON ocr_text(install_id, id);
error here ---^
Expand content to scroll
Thought
for 1s
The error occurs because the
ocr_text
table doesn't have an
id
column, but the script tries to create a
unique index on
(install_id, id)
. The script assumes all
tables have an
id
column, but
ocr_text
likely has a different primary key structure.
Let me check the ocr_text table schema in your source
database:
Searched
ocr_text in /volume1/screenpipe (*.sh)
Thought
for 2s
The error occurs because the script tries to create a unique
index on
ocr_text(install_id, id)
, but the
ocr_text
table doesn't have an
id
column. The script assumes
all tables have an
id
column as
their primary key, but
ocr_text
likely has a different structure
.
Check the actual schema of your
ocr_text
table:
bash
sqlite3
~/.screenpipe/db.sqlite
"PRAGMA table_info(ocr_text);"
This will show what columns exist
. Based on the script's
usage,
ocr_text
likely uses
frame_id
as a foreign key and may not
have its own
id
primary key (
it might use SQLite's implicit
rowid
).
The fix would be to modify
the script to handle tables without an
id
column. Options:
Skip
the unique index for tables without
id
and use a different constraint
Use
rowid
instead of
id
for tables that don
't have an explicit
id
column
What does
the schema show for
ocr_text
?
Feedback submitted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "PRAGMA table_info(ocr_text);"
0|frame_id|INTEGER|1||0
1|text|TEXT|1||0
2|text_json|TEXT|0||0
3|app_name|TEXT|1|''|0
4|ocr_engine|TEXT|1|'unknown'|0
5|window_name|TEXT|0||0
6|focused|BOOLEAN|0|FALSE|0
7|text_length|INTEGER|0||0
8|sync_id|TEXT|0||0
9|synced_at|DATETIME|0||0
10|redacted_at|INTEGER|0||0
Expand content to scroll
Thought
for 1s
The
ocr_text
table has no
id
column - its primary key is
frame_id
. The script incorrectly
assumes all tables have an
id
column when creating the unique index.
The fix is in
screenpipe_sync.sh
around line 363
-370. The loop needs to check if the
table has an
id
column before creating the index:
bash
# Re-run install_id + index setup so freshly-created tables get them too.
for
tbl
in
"${
ALL_SYNC_TABLES
[
@
]}"
;
do
HAS_COL
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM pragma_table_info('
$tbl
') WHERE name='install_id';"
)
if
[
"
$HAS_COL
"
=
"0"
];
then
sqlite3
"
$NAS_DB
"...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28151
|
|
28155
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 12 pending changes Source Control (⇧⌘G) - 12 pending changes
12
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 28, Col 17
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
legacy-20260511
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
legacy-20260511|1|2
legacy-20260511|2|2
legacy-20260511|3|2
legacy-20260511|4|2
legacy-20260511|5|2
legacy-20260511|6|2
legacy-20260511|9|4
legacy-20260511|10|4
legacy-20260511|11|4
legacy-20260511|12|4
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
4009|2607
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Expand content to scroll
Thought
for 1s
The issue is clear now:
video_chunks
has 400
9 rows but only 2607 unique
(install_id, id)
combinations. Each ID appears
2-4 times, which violates the unique constraint.
This likely happened from multiple
sync runs without proper deduplication. To fix this, you need
to remove the duplicate rows before the migration can proceed:
bash
# Delete duplicates, keeping the first occurrence for each (install_id, id)
sqlite3
/volume1/screenpipe/archive.db
"
DELETE FROM video_chunks
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM video_chunks
GROUP BY install_id, id
);
"
# Verify cleanup
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) FROM video_chunks;"
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(DISTINCT install_id || '|' || id) FROM video_chunks;"
After this
, both counts should match (2607),
and you can re-run the migration script:
bash
/volume1/screenpipe/screenpipe_fts_migrate.sh
You may
need to repeat this for other tables if they
have the same issue. The migration script
processes tables in order:
video_chunks frames elements
ocr_text ui_events meetings
(vision) then
speakers speaker_embeddings audio_chunks audio_transcriptions
audio_tags
(audio).
Feedback submitted
Your modified files:
screenpipe_sync.sh
/volume1/screenpipe
+
1
-
1
ok lets forget on install id for a while. Given the
@
screenpipe_sync.sh
why do I get error like this when ruynning the same scritp from nas. lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh 2026-05-11
[2026-05-12 20:19:37] ========================================
[2026-05-12 20:19:37] Screenpipe sync starting for: 2026-05-11
[2026-05-12 20:19:37] install_id: 2ff6574c-4272-4dbf-a20b-434b024c65fb
[2026-05-12 20:19:37] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (4.2G)
NAS mount: OK /Volumes/screenpipe
Archive DB: will be created
Frame data dir: OK (283 files, 318M)
Audio files: OK (2507 files, 267M)
[+00m00s] ▶ Counting source rows for 2026-05-11
frames: 6857
elements: 672129
ui_events: 7063
ocr_text: 2332
meetings: 1
audio_chunks: 2507
audio_transcriptions: 226
audio_tags: 0
speakers: 15 (all-time)
speaker_embeddings: 58 (all-time)
[+00m01s] ▶ Initialising tables (CREATE IF NOT EXISTS)
creating vision tables ✓ 0m00s
creating audio tables ✓ 0m01s
Error: in prepare, no such column: id
S idx_ocr_text_install_pk ON ocr_text(install_id, id);
error here ---^
Expand content to scroll
Thought
for 1s
The error occurs because the
ocr_text
table doesn't have an
id
column, but the script tries to create a
unique index on
(install_id, id)
. The script assumes all
tables have an
id
column, but
ocr_text
likely has a different primary key structure.
Let me check the ocr_text table schema in your source
database:
Searched
ocr_text in /volume1/screenpipe (*.sh)
Thought
for 2s
The error occurs because the script tries to create a unique
index on
ocr_text(install_id, id)
, but the
ocr_text
table doesn't have an
id
column. The script assumes
all tables have an
id
column as
their primary key, but
ocr_text
likely has a different structure
.
Check the actual schema of your
ocr_text
table:
bash
sqlite3
~/.screenpipe/db.sqlite
"PRAGMA table_info(ocr_text);"
This will show what columns exist
. Based on the script's
usage,
ocr_text
likely uses
frame_id...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28155
|
|
28156
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 12 pending changes Source Control (⇧⌘G) - 12 pending changes
12
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 460, Col 1 (17469 selected)
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28156
|
|
28157
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 12 pending changes Source Control (⇧⌘G) - 12 pending changes
12
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 460, Col 1 (17469 selected)
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28157
|
|
28169
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 12 pending changes Source Control (⇧⌘G) - 12 pending changes
12
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 49, Col 17
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28169
|
|
28170
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 12 pending changes Source Control (⇧⌘G) - 12 pending changes
12
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 49, Col 17
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28170
|
|
28171
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 12 pending changes Source Control (⇧⌘G) - 12 pending changes
12
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 460, Col 1 (17469 selected)
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
legacy-20260511
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
legacy-20260511|1|2
legacy-20260511|2|2
legacy-20260511|3|2
legacy-20260511|4|2
legacy-20260511|5|2
legacy-20260511|6|2
legacy-20260511|9|4
legacy-20260511|10|4
legacy-20260511|11|4
legacy-20260511|12|4
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
4009|2607
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Expand content to scroll
Thought
for 1s
The issue is clear now:
video_chunks
has 400
9 rows but only 2607 unique
(install_id, id)
combinations. Each ID appears
2-4 times, which violates the unique constraint.
This likely happened from multiple
sync runs without proper deduplication. To fix this, you need
to remove the duplicate rows before the migration can proceed:
bash
# Delete duplicates, keeping the first occurrence for each (install_id, id)
sqlite3
/volume1/screenpipe/archive.db
"
DELETE FROM video_chunks
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM video_chunks
GROUP BY install_id, id
);
"
# Verify cleanup
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) FROM video_chunks;"
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(DISTINCT install_id || '|' || id) FROM video_chunks;"
After this
, both counts should match (2607),
and you can re-run the migration script:
bash
/volume1/screenpipe/screenpipe_fts_migrate.sh
You may
need to repeat this for other tables if they
have the same issue. The migration script
processes tables in order:
video_chunks frames elements
ocr_text ui_events meetings
(vision) then
speakers speaker_embeddings audio_chunks audio_transcriptions
audio_tags
(audio).
Feedback submitted
Your modified files:
screenpipe_sync.sh
/volume1/screenpipe
+
1
-
1
ok lets forget on install id for a while. Given the
@
screenpipe_sync.sh
why do I get error like this when ruynning the same scritp from nas. lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh 2026-05-11
[2026-05-12 20:19:37] ========================================
[2026-05-12 20:19:37] Screenpipe sync starting for: 2026-05-11
[2026-05-12 20:19:37] install_id: 2ff6574c-4272-4dbf-a20b-434b024c65fb
[2026-05-12 20:19:37] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (4.2G)
NAS mount: OK /Volumes/screenpipe
Archive DB: will be created
Frame data dir: OK (283 files, 318M)
Audio files: OK (2507 files, 267M)
[+00m00s] ▶ Counting source rows for 2026-05-11
frames: 6857
elements: 672129
ui_events: 7063
ocr_text: 2332
meetings: 1
audio_chunks: 2507
audio_transcriptions: 226
audio_tags: 0
speakers: 15 (all-time)
speaker_embeddings: 58 (all-time)
[+00m01s] ▶ Initialising tables (CREATE IF NOT EXISTS)
creating vision tables ✓ 0m00s
creating audio tables ✓ 0m01s
Error: in prepare, no such column: id
S idx_ocr_text_install_pk ON ocr_text(install_id, id);
error here ---^
Expand content to scroll
Thought
for 1s
The error occurs because the
ocr_text
table doesn't have an
id
column, but the script tries to create a
unique index on
(install_id, id)
. The script assumes all
tables have an
id
column, but
ocr_text
likely has a different primary key structure.
Let me check the ocr_text table schema in your source
database:
Searched
ocr_text in /volume1/screenpipe (*.sh)
Thought
for 2s
The error occurs because the script tries to create a unique
index on
ocr_text(install_id, id)
, but the
ocr_text
table doesn't have an
id
column. The script assumes
all tables have an
id
column as
their primary key, but
ocr_text
likely has a different structure
.
Check the actual schema of your
ocr_text
table:
bash
sqlite3
~/.screenpipe/db.sqlite
"PRAGMA table_info(ocr_text);"
This will show what columns exist
. Based on the script's
usage,
ocr_text
likely uses
frame_id
as a foreign key and may not
have its own
id
primary key (
it might use SQLite's implicit
rowid
).
The fix would be to modify
the script to handle tables without an
id
column. Options:
Skip
the unique index for tables without
id
and use a different constraint
Use
rowid
instead of
id
for tables that don
't have an explicit
id
column
What does
the schema show for
ocr_text
?
Feedback submitted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "PRAGMA table_info(ocr_text);"
0|frame_id|INTEGER|1||0
1|text|TEXT|1||0
2|text_json|TEXT|0||0
3|app_name|TEXT|1|''|0
4|ocr_engine|TEXT|1|'unknown'|0
5|window_name|TEXT|0||0
6|focused|BOOLEAN|0|FALSE|0
7|text_length|INTEGER|0||0
8|sync_id|TEXT|0||0
9|synced_at|DATETIME|0||0
10|redacted_at|INTEGER|0||0
Expand content to scroll
Thought
for 1s
The
ocr_text
table has no
id
column - its primary key is
frame_id
. The script incorrectly
assumes all tables have an
id
column when creating the unique index.
The fix is in
screenpipe_sync.sh
around line 363
-370. The loop needs to check if the
table has an
id
column before creating the index:...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28171
|
|
28172
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 12 pending changes Source Control (⇧⌘G) - 12 pending changes
12
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 460, Col 1 (17469 selected)
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
legacy-20260511
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
legacy-20260511|1|2
legacy-20260511|2|2
legacy-20260511|3|2
legacy-20260511|4|2
legacy-20260511|5|2
legacy-20260511|6|2
legacy-20260511|9|4
legacy-20260511|10|4
legacy-20260511|11|4
legacy-20260511|12|4
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
4009|2607
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Expand content to scroll
Thought
for 1s
The issue is clear now:
video_chunks
has 400
9 rows but only 2607 unique
(install_id, id)
combinations. Each ID appears
2-4 times, which violates the unique constraint.
This likely happened from multiple
sync runs without proper deduplication. To fix this, you need
to remove the duplicate rows before the migration can proceed:
bash
# Delete duplicates, keeping the first occurrence for each (install_id, id)
sqlite3
/volume1/screenpipe/archive.db
"
DELETE FROM video_chunks
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM video_chunks
GROUP BY install_id, id
);
"
# Verify cleanup
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) FROM video_chunks;"
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(DISTINCT install_id || '|' || id) FROM video_chunks;"
After this
, both counts should match (2607),
and you can re-run the migration script:
bash
/volume1/screenpipe/screenpipe_fts_migrate.sh
You may
need to repeat this for other tables if they
have the same issue. The migration script
processes tables in order:
video_chunks frames elements
ocr_text ui_events meetings
(vision) then
speakers speaker_embeddings audio_chunks audio_transcriptions
audio_tags
(audio).
Feedback submitted
Your modified files:
screenpipe_sync.sh
/volume1/screenpipe
+
1
-
1
ok lets forget on install id for a while. Given the
@
screenpipe_sync.sh
why do I get error like this when ruynning the same scritp from nas. lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh 2026-05-11
[2026-05-12 20:19:37] ========================================
[2026-05-12 20:19:37] Screenpipe sync starting for: 2026-05-11
[2026-05-12 20:19:37] install_id: 2ff6574c-4272-4dbf-a20b-434b024c65fb
[2026-05-12 20:19:37] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (4.2G)
NAS mount: OK /Volumes/screenpipe
Archive DB: will be created
Frame data dir: OK (283 files, 318M)
Audio files: OK (2507 files, 267M)
[+00m00s] ▶ Counting source rows for 2026-05-11
frames: 6857
elements: 672129
ui_events: 7063
ocr_text: 2332
meetings: 1
audio_chunks: 2507
audio_transcriptions: 226
audio_tags: 0
speakers: 15 (all-time)
speaker_embeddings: 58 (all-time)
[+00m01s] ▶ Initialising tables (CREATE IF NOT EXISTS)
creating vision tables ✓ 0m00s
creating audio tables ✓ 0m01s
Error: in prepare, no such column: id
S idx_ocr_text_install_pk ON ocr_text(install_id, id);
error here ---^
Expand content to scroll
Thought
for 1s
The error occurs because the
ocr_text
table doesn't have an
id
column, but the script tries to create a
unique index on
(install_id, id)
. The script assumes all
tables have an
id
column, but
ocr_text
likely has a different primary key structure.
Let me check the ocr_text table schema in your source
database:
Searched
ocr_text in /volume1/screenpipe (*.sh)
Thought
for 2s
The error occurs because the script tries to create a unique
index on
ocr_text(install_id, id)
, but the
ocr_text
table doesn't have an
id
column. The script assumes
all tables have an
id
column as
their primary key, but
ocr_text
likely has a different structure
.
Check the actual schema of your
ocr_text
table:
bash
sqlite3
~/.screenpipe/db.sqlite
"PRAGMA table_info(ocr_text);"
This will show what columns exist
. Based on the script's
usage,
ocr_text
likely uses
frame_id
as a foreign key and may not
have its own
id
primary key (
it might use SQLite's implicit
rowid
).
The fix would be to modify
the script to handle tables without an
id
column. Options:
Skip
the unique index for tables without
id
and use a different constraint
Use
rowid
instead of
id
for tables that don
't have an explicit
id
column
What does
the schema show for
ocr_text
?
Feedback submitted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "PRAGMA table_info(ocr_text);"
0|frame_id|INTEGER|1||0
1|text|TEXT|1||0
2|text_json|TEXT|0||0
3|app_name|TEXT|1|''|0
4|ocr_engine|TEXT|1|'unknown'|0
5|window_name|TEXT|0||0
6|focused|BOOLEAN|0|FALSE|0
7|text_length|INTEGER|0||0
8|sync_id|TEXT|0||0
9|synced_at|DATETIME|0||0
10|redacted_at|INTEGER|0||0
Expand content to scroll
Thought
for 1s
The
ocr_text
table has no
id
column - its primary key is
frame_id
. The script incorrectly
assumes all tables have an
id
column when creating the unique index.
The fix is in
screenpipe_sync.sh
around line 363
-370. The loop needs to check if the
table has an
id
column before creating the index:...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28172
|
|
28180
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 12 pending changes Source Control (⇧⌘G) - 12 pending changes
12
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 460, Col 1 (17469 selected)
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
legacy-20260511
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
legacy-20260511|1|2
legacy-20260511|2|2
legacy-20260511|3|2
legacy-20260511|4|2
legacy-20260511|5|2
legacy-20260511|6|2
legacy-20260511|9|4
legacy-20260511|10|4
legacy-20260511|11|4
legacy-20260511|12|4
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
4009|2607
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Expand content to scroll
Thought
for 1s
The issue is clear now:
video_chunks
has 400
9 rows but only 2607 unique
(install_id, id)
combinations. Each ID appears
2-4 times, which violates the unique constraint.
This likely happened from multiple
sync runs without proper deduplication. To fix this, you need
to remove the duplicate rows before the migration can proceed:
bash
# Delete duplicates, keeping the first occurrence for each (install_id, id)
sqlite3
/volume1/screenpipe/archive.db
"
DELETE FROM video_chunks
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM video_chunks
GROUP BY install_id, id
);
"
# Verify cleanup
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) FROM video_chunks;"
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(DISTINCT install_id || '|' || id) FROM video_chunks;"
After this
, both counts should match (2607),
and you can re-run the migration script:
bash
/volume1/screenpipe/screenpipe_fts_migrate.sh
You may
need to repeat this for other tables if they
have the same issue. The migration script
processes tables in order:
video_chunks frames elements
ocr_text ui_events meetings
(vision) then
speakers speaker_embeddings audio_chunks audio_transcriptions
audio_tags
(audio).
Feedback submitted
Your modified files:
screenpipe_sync.sh
/volume1/screenpipe
+
1
-
1
ok lets forget on install id for a while. Given the
@
screenpipe_sync.sh
why do I get error like this when ruynning the same scritp from nas. lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh 2026-05-11
[2026-05-12 20:19:37] ========================================
[2026-05-12 20:19:37] Screenpipe sync starting for: 2026-05-11
[2026-05-12 20:19:37] install_id: 2ff6574c-4272-4dbf-a20b-434b024c65fb
[2026-05-12 20:19:37] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (4.2G)
NAS mount: OK /Volumes/screenpipe
Archive DB: will be created
Frame data dir: OK (283 files, 318M)
Audio files: OK (2507 files, 267M)
[+00m00s] ▶ Counting source rows for 2026-05-11
frames: 6857
elements: 672129
ui_events: 7063
ocr_text: 2332
meetings: 1
audio_chunks: 2507
audio_transcriptions: 226
audio_tags: 0
speakers: 15 (all-time)
speaker_embeddings: 58 (all-time)
[+00m01s] ▶ Initialising tables (CREATE IF NOT EXISTS)
creating vision tables ✓ 0m00s
creating audio tables ✓ 0m01s
Error: in prepare, no such column: id
S idx_ocr_text_install_pk ON ocr_text(install_id, id);
error here ---^
Expand content to scroll
Thought
for 1s
The error occurs because the
ocr_text
table doesn't have an
id
column, but the script tries to create a
unique index on
(install_id, id)
. The script assumes all
tables have an
id
column, but
ocr_text
likely has a different primary key structure.
Let me check the ocr_text table schema in your source
database:
Searched
ocr_text in /volume1/screenpipe (*.sh)
Thought
for 2s
The error occurs because the script tries to create a unique
index on
ocr_text(install_id, id)
, but the
ocr_text
table doesn't have an
id
column. The script assumes
all tables have an
id
column as
their primary key, but
ocr_text
likely has a different structure
.
Check the actual schema of your
ocr_text
table:
bash
sqlite3
~/.screenpipe/db.sqlite
"PRAGMA table_info(ocr_text);"
This will show what columns exist
. Based on the script's
usage,
ocr_text
likely uses
frame_id
as a foreign key and may not
have its own
id
primary key (
it might use SQLite's implicit
rowid
).
The fix would be to modify
the script to handle tables without an
id
column. Options:
Skip
the unique index for tables without
id
and use a different constraint
Use
rowid
instead of
id
for tables that don
't have an explicit
id
column
What does
the schema show for
ocr_text
?
Feedback submitted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "PRAGMA table_info(ocr_text);"
0|frame_id|INTEGER|1||0
1|text|TEXT|1||0
2|text_json|TEXT|0||0
3|app_name|TEXT|1|''|0
4|ocr_engine|TEXT|1|'unknown'|0
5|window_name|TEXT|0||0
6|focused|BOOLEAN|0|FALSE|0
7|text_length|INTEGER|0||0
8|sync_id|TEXT|0||0
9|synced_at|DATETIME|0||0
10|redacted_at|INTEGER|0||0
Expand content to scroll
Thought
for 1s
The
ocr_text
table has no
id
column - its primary key is
frame_id...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28180
|
|
28227
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 12 pending changes Source Control (⇧⌘G) - 12 pending changes
12
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db-journal
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 39, Col 9
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28227
|
|
28228
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 12 pending changes Source Control (⇧⌘G) - 12 pending changes
12
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db-journal
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 39, Col 9
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28228
|
|
28229
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db-journal
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 39, Col 9
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
legacy-20260511
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
legacy-20260511|1|2
legacy-20260511|2|2
legacy-20260511|3|2
legacy-20260511|4|2
legacy-20260511|5|2
legacy-20260511|6|2
legacy-20260511|9|4
legacy-20260511|10|4
legacy-20260511|11|4
legacy-20260511|12|4
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
4009|2607
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Expand content to scroll
Thought
for 1s
The issue is clear now:
video_chunks
has 400
9 rows but only 2607 unique
(install_id, id)
combinations. Each ID appears
2-4 times, which violates the unique constraint.
This likely happened from multiple
sync runs without proper deduplication. To fix this, you need
to remove the duplicate rows before the migration can proceed:
bash
# Delete duplicates, keeping the first occurrence for each (install_id, id)
sqlite3
/volume1/screenpipe/archive.db
"
DELETE FROM video_chunks
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM video_chunks
GROUP BY install_id, id
);
"
# Verify cleanup
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) FROM video_chunks;"
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(DISTINCT install_id || '|' || id) FROM video_chunks;"
After this
, both counts should match (2607),
and you can re-run the migration script:
bash
/volume1/screenpipe/screenpipe_fts_migrate.sh
You may
need to repeat this for other tables if they
have the same issue. The migration script
processes tables in order:
video_chunks frames elements
ocr_text ui_events meetings
(vision) then
speakers speaker_embeddings audio_chunks audio_transcriptions
audio_tags
(audio).
Feedback submitted
Your modified files:
screenpipe_sync.sh
/volume1/screenpipe
+
1
-
1
ok lets forget on install id for a while. Given the
@
screenpipe_sync.sh
why do I get error like this when ruynning the same scritp from nas. lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh 2026-05-11
[2026-05-12 20:19:37] ========================================
[2026-05-12 20:19:37] Screenpipe sync starting for: 2026-05-11
[2026-05-12 20:19:37] install_id: 2ff6574c-4272-4dbf-a20b-434b024c65fb
[2026-05-12 20:19:37] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (4.2G)
NAS mount: OK /Volumes/screenpipe
Archive DB: will be created
Frame data dir: OK (283 files, 318M)
Audio files: OK (2507 files, 267M)
[+00m00s] ▶ Counting source rows for 2026-05-11
frames: 6857
elements: 672129
ui_events: 7063
ocr_text: 2332
meetings: 1
audio_chunks: 2507
audio_transcriptions: 226
audio_tags: 0
speakers: 15 (all-time)
speaker_embeddings: 58 (all-time)
[+00m01s] ▶ Initialising tables (CREATE IF NOT EXISTS)
creating vision tables ✓ 0m00s
creating audio tables ✓ 0m01s
Error: in prepare, no such column: id
S idx_ocr_text_install_pk ON ocr_text(install_id, id);
error here ---^
Expand content to scroll
Thought
for 1s
The error occurs because the
ocr_text
table doesn't have an
id
column, but the script tries to create a
unique index on
(install_id, id)
. The script assumes all
tables have an
id
column, but
ocr_text
likely has a different primary key structure.
Let me check the ocr_text table schema in your source
database:
Searched
ocr_text in /volume1/screenpipe (*.sh)
Thought
for 2s
The error occurs because the script tries to create a unique
index on
ocr_text(install_id, id)
, but the
ocr_text
table doesn't have an
id
column. The script assumes
all tables have an
id
column as
their primary key, but
ocr_text
likely has a different structure
.
Check the actual schema of your
ocr_text
table:
bash
sqlite3
~/.screenpipe/db.sqlite
"PRAGMA table_info(ocr_text);"
This will show what columns exist
. Based on the script's
usage,
ocr_text
likely uses
frame_id
as a foreign key and may not
have its own
id
primary key (
it might use SQLite's implicit
rowid
).
The fix would be to modify
the script to handle tables without an
id
column. Options:
Skip
the unique index for tables without
id
and use a different constraint
Use
rowid
instead of
id
for tables that don
't have an explicit
id
column
What does
the schema show for
ocr_text
?
Feedback submitted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "PRAGMA table_info(ocr_text);"
0|frame_id|INTEGER|1||0
1|text|TEXT|1||0
2|text_json|TEXT|0||0
3|app_name|TEXT|1|''|0
4|ocr_engine|TEXT|1|'unknown'|0
5|window_name|TEXT|0||0
6|focused|BOOLEAN|0|FALSE|0
7|text_length|INTEGER|0||0
8|sync_id|TEXT|0||0
9|synced_at|DATETIME|0||0
10|redacted_at|INTEGER|0||0
Expand content to scroll
Thought
for 1s
The
ocr_text
table has no
id
column - its primary key is
frame_id
. The script incorrectly
assumes all tables have an
id
column when creating the unique index.
The fix is in
screenpipe_sync.sh
around line 363
-370. The loop needs to check if the
table has an
id
column before creating the index:
bash
# Re-run install_id + index setup so freshly-created tables get them too.
for
tbl
in
"${
ALL_SYNC_TABLES
[
@
]}"
;
do
HAS_COL
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM pragma_table_info('
$tbl
') WHERE name='install_id';"
)
if
[
"
$HAS_COL
"
=
"0"
];
then
sqlite3
"
$NAS_DB
"
"ALTER TABLE
$tbl
ADD COLUMN install_id TEXT;"
fi
# Check if table has 'id' column before creating index
HAS_ID
=
$(
sqlite3
"
$NAS_DB
"
"SELECT COUNT(*) FROM pragma_table_info('
$tbl
') WHERE name='id';"
)
if
[
"
$HAS_ID
"
-gt
"0"
];
then
sqlite3
"
$NAS_DB
"
"CREATE UNIQUE INDEX IF NOT EXISTS idx_${
tbl
}_install_pk ON ${
tbl
}(install_id, id);"
else
# For tables without 'id', use rowid instead
sqlite3
"
$NAS_DB
"
"CREATE UNIQUE INDEX IF NOT EXISTS idx_${
tbl
}_install_pk ON ${
tbl
}(install_id, rowid);"
fi
done
The same fix applies
to
screenpipe_fts_migrate.sh
at line 106
. Both scripts have
the same bug.
You'll
need to switch to Code mode to apply these changes.
Feedback submitted
fix it
Expand content to scroll
Thoughts
I'll fix both scripts
to handle tables without an
id
column
.
Read
screenpipe_sync.sh and screenpipe_fts_migrate.sh
Thought
for 1s
screenpipe_sync.sh
+
8
-
1
else
# For tables without 'id', use rowid instead
sqlite3
"
$NAS_DB
"
"CREATE UNIQUE INDEX IF NOT EXISTS idx_${
tbl
}_install_pk ON ${
tbl
}(install_id, rowid);"
fi
done
screenpipe_fts_migrate.sh
+
8
-
1
else
# For tables without 'id', use rowid instead
sqlite3
"
$NAS_DB
"
"CREATE UNIQUE INDEX IF NOT EXISTS idx_${
tbl
}_install_pk ON ${
tbl
}(install_id, rowid);"
fi
fi
Thoughts
Fixed both scripts. They now check if
a table has an
id
column before creating the unique index.
If the table lacks an
id
column (like
ocr_text
), it uses
rowid
instead.
Changes made
:
screenpipe_sync.sh
(line 369-3
75): Added check for
id
column, fallback to
rowid...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28229
|
|
28230
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db-journal
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 39, Col 9
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
legacy-20260511
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
legacy-20260511|1|2
legacy-20260511|2|2
legacy-20260511|3|2
legacy-20260511|4|2
legacy-20260511|5|2
legacy-20260511|6|2
legacy-20260511|9|4
legacy-20260511|10|4
legacy-20260511|11|4
legacy-20260511|12|4
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
4009|2607
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Expand content to scroll
Thought
for 1s
The issue is clear now:
video_chunks
has 400
9 rows but only 2607 unique
(install_id, id)
combinations. Each ID appears
2-4 times, which violates the unique constraint.
This likely happened from multiple
sync runs without proper deduplication. To fix this, you need
to remove the duplicate rows before the migration can proceed:
bash
# Delete duplicates, keeping the first occurrence for each (install_id, id)
sqlite3
/volume1/screenpipe/archive.db
"
DELETE FROM video_chunks
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM video_chunks
GROUP BY install_id, id
);
"
# Verify cleanup
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) FROM video_chunks;"
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(DISTINCT install_id || '|' || id) FROM video_chunks;"
After this
, both counts should match (2607),
and you can re-run the migration script:
bash
/volume1/screenpipe/screenpipe_fts_migrate.sh
You may
need to repeat this for other tables if they
have the same issue. The migration script
processes tables in order:
video_chunks frames elements
ocr_text ui_events meetings
(vision) then
speakers speaker_embeddings audio_chunks audio_transcriptions
audio_tags
(audio).
Feedback submitted
Your modified files:
screenpipe_sync.sh
/volume1/screenpipe
+
1
-
1
ok lets forget on install id for a while. Given the
@
screenpipe_sync.sh
why do I get error like this when ruynning the same scritp from nas. lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh 2026-05-11
[2026-05-12 20:19:37] ========================================
[2026-05-12 20:19:37] Screenpipe sync starting for: 2026-05-11
[2026-05-12 20:19:37] install_id: 2ff6574c-4272-4dbf-a20b-434b024c65fb
[2026-05-12 20:19:37] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (4.2G)
NAS mount: OK /Volumes/screenpipe
Archive DB: will be created
Frame data dir: OK (283 files, 318M)
Audio files: OK (2507 files, 267M)
[+00m00s] ▶ Counting source rows for 2026-05-11
frames: 6857
elements: 672129
ui_events: 7063
ocr_text: 2332
meetings: 1
audio_chunks: 2507
audio_transcriptions: 226
audio_tags: 0
speakers: 15 (all-time)
speaker_embeddings: 58 (all-time)
[+00m01s] ▶ Initialising tables (CREATE IF NOT EXISTS)
creating vision tables ✓ 0m00s
creating audio tables ✓ 0m01s
Error: in prepare, no such column: id
S idx_ocr_text_install_pk ON ocr_text(install_id, id);
error here ---^
Expand content to scroll
Thought
for 1s
The error occurs because the
ocr_text
table doesn't have an
id
column, but the script tries to create a
unique index on
(install_id, id)
. The script assumes all
tables have an
id
column, but
ocr_text
likely has a different primary key structure.
Let me check the ocr_text table schema in your source
database:
Searched
ocr_text in /volume1/screenpipe (*.sh)
Thought
for 2s
The error occurs because the script tries to create a unique
index on
ocr_text(install_id, id)
, but the
ocr_text
table doesn't have an
id
column. The script assumes
all tables have an
id
column as
their primary key, but
ocr_text
likely has a different structure
.
Check the actual schema of your
ocr_text
table:
bash
sqlite3
~/.screenpipe/db.sqlite
"PRAGMA table_info(ocr_text);"
This will show what columns exist
. Based on the script's
usage,
ocr_text
likely uses
frame_id
as a foreign key and may not
have its own
id
primary key (
it might use SQLite's implicit
rowid
).
The fix would be to modify
the script to handle tables without an
id
column. Options:
Skip
the unique index for tables without
id
and use a different constraint
Use
rowid
instead of
id
for tables that don
't have an explicit
id
column
What does
the schema show for
ocr_text
?
Feedback submitted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "PRAGMA table_info(ocr_text);"
0|frame_id|INTEGER|1||0
1|text|TEXT|1||0
2|text_json|TEXT|0||0
3|app_name|TEXT|1|''|0
4|ocr_engine|TEXT|1|'unknown'|0
5|window_name|TEXT|0||0
6|focused|BOOLEAN|0|FALSE|0
7|text_length|INTEGER|0||0
8|sync_id|TEXT|0||0
9|synced_at|DATETIME|0||0
10|redacted_at|INTEGER|0||0
Expand content to scroll
Thought
for 1s
The
ocr_text
table has no
id
column - its primary key is
frame_id
. The script incorrectly
assumes all tables have an
id
column when creating the unique index.
The fix is in...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28230
|
|
28231
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db-journal
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 39, Col 9
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
legacy-20260511
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
legacy-20260511|1|2
legacy-20260511|2|2
legacy-20260511|3|2
legacy-20260511|4|2
legacy-20260511|5|2
legacy-20260511|6|2
legacy-20260511|9|4
legacy-20260511|10|4
legacy-20260511|11|4
legacy-20260511|12|4
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
4009|2607
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Expand content to scroll
Thought
for 1s
The issue is clear now:...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28231
|
|
28232
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db-journal
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 39, Col 9
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28232
|
|
28233
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db-journal
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 39, Col 9
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28233
|
|
28234
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db-journal
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 39, Col 9
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28234
|
|
28235
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db-journal
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 39, Col 9
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
legacy-20260511
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
legacy-20260511|1|2
legacy-20260511|2|2
legacy-20260511|3|2
legacy-20260511|4|2
legacy-20260511|5|2
legacy-20260511|6|2
legacy-20260511|9|4
legacy-20260511|10|4
legacy-20260511|11|4
legacy-20260511|12|4
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
4009|2607
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Expand content to scroll
Thought
for 1s
The issue is clear now:
video_chunks
has 400
9 rows but only 2607 unique
(install_id, id)
combinations. Each ID appears
2-4 times, which violates the unique constraint.
This likely happened from multiple
sync runs without proper deduplication. To fix this, you need
to remove the duplicate rows before the migration can proceed:
bash
# Delete duplicates, keeping the first occurrence for each (install_id, id)
sqlite3
/volume1/screenpipe/archive.db
"
DELETE FROM video_chunks
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM video_chunks
GROUP BY install_id, id
);
"
# Verify cleanup
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) FROM video_chunks;"
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(DISTINCT install_id || '|' || id) FROM video_chunks;"
After this
, both counts should match (2607),
and you can re-run the migration script:
bash
/volume1/screenpipe/screenpipe_fts_migrate.sh
You may
need to repeat this for other tables if they
have the same issue. The migration script
processes tables in order:
video_chunks frames elements
ocr_text ui_events meetings
(vision) then
speakers speaker_embeddings audio_chunks audio_transcriptions...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28235
|
|
28236
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db-journal
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 39, Col 9
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
legacy-20260511
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
legacy-20260511|1|2
legacy-20260511|2|2
legacy-20260511|3|2
legacy-20260511|4|2
legacy-20260511|5|2
legacy-20260511|6|2
legacy-20260511|9|4
legacy-20260511|10|4
legacy-20260511|11|4
legacy-20260511|12|4
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
4009|2607
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Expand content to scroll
Thought
for 1s
The issue is clear now:
video_chunks
has 400
9 rows but only 2607 unique
(install_id, id)
combinations. Each ID appears
2-4 times, which violates the unique constraint.
This likely happened from multiple
sync runs without proper deduplication. To fix this, you need
to remove the duplicate rows before the migration can proceed:
bash
# Delete duplicates, keeping the first occurrence for each (install_id, id)
sqlite3
/volume1/screenpipe/archive.db
"
DELETE FROM video_chunks
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM video_chunks
GROUP BY install_id, id
);
"
# Verify cleanup
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) FROM video_chunks;"
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(DISTINCT install_id || '|' || id) FROM video_chunks;"...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28236
|
|
28247
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 19, Col 1
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28247
|
|
28248
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 19, Col 1
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28248
|
|
28249
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 19, Col 1
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28249
|
|
28250
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 19, Col 1
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
38m
29m
25m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28250
|
|
28251
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 19, Col 1
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
1h
41m
37m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28251
|
|
28252
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 19, Col 1
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
1h
41m
37m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28252
|
|
28256
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 19, Col 1
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
1h
41m
37m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
legacy-20260511
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
legacy-20260511|1|2
legacy-20260511|2|2...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28256
|
|
28257
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 19, Col 1
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
1h
41m
37m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28257
|
|
28258
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 19, Col 1
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
1h
41m
37m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
legacy-20260511
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
legacy-20260511|1|2
legacy-20260511|2|2
legacy-20260511|3|2
legacy-20260511|4|2
legacy-20260511|5|2
legacy-20260511|6|2
legacy-20260511|9|4
legacy-20260511|10|4
legacy-20260511|11|4
legacy-20260511|12|4
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
4009|2607
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Expand content to scroll
Thought
for 1s
The issue is clear now:
video_chunks
has 400
9 rows but only 2607 unique
(install_id, id)
combinations. Each ID appears
2-4 times, which violates the unique constraint.
This likely happened from multiple
sync runs without proper deduplication. To fix this, you need
to remove the duplicate rows before the migration can proceed:
bash
# Delete duplicates, keeping the first occurrence for each (install_id, id)
sqlite3
/volume1/screenpipe/archive.db
"
DELETE FROM video_chunks
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM video_chunks
GROUP BY install_id, id
);
"
# Verify cleanup
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) FROM video_chunks;"
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(DISTINCT install_id || '|' || id) FROM video_chunks;"
After this
, both counts should match (2607),
and you can re-run the migration script:
bash
/volume1/screenpipe/screenpipe_fts_migrate.sh
You may
need to repeat this for other tables if they
have the same issue. The migration script
processes tables in order:
video_chunks frames elements
ocr_text ui_events meetings
(vision) then
speakers speaker_embeddings audio_chunks audio_transcriptions
audio_tags
(audio).
Feedback submitted
Your modified files:
screenpipe_sync.sh
/volume1/screenpipe
+
1
-
1...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28258
|
|
28259
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 19, Col 1
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
1h
41m
37m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28259
|
|
28260
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 19, Col 1
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
1h
41m
37m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
legacy-20260511
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
legacy-20260511|1|2
legacy-20260511|2|2
legacy-20260511|3|2
legacy-20260511|4|2
legacy-20260511|5|2
legacy-20260511|6|2
legacy-20260511|9|4
legacy-20260511|10|4
legacy-20260511|11|4
legacy-20260511|12|4
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
4009|2607
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Expand content to scroll
Thought
for 1s
The issue is clear now:
video_chunks
has 400
9 rows but only 2607 unique
(install_id, id)
combinations. Each ID appears
2-4 times, which violates the unique constraint.
This likely happened from multiple
sync runs without proper deduplication. To fix this, you need
to remove the duplicate rows before the migration can proceed:
bash
# Delete duplicates, keeping the first occurrence for each (install_id, id)
sqlite3
/volume1/screenpipe/archive.db
"
DELETE FROM video_chunks
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM video_chunks
GROUP BY install_id, id
);
"
# Verify cleanup
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) FROM video_chunks;"
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(DISTINCT install_id || '|' || id) FROM video_chunks;"
After this
, both counts should match (2607),
and you can re-run the migration script:
bash
/volume1/screenpipe/screenpipe_fts_migrate.sh
You may
need to repeat this for other tables if they
have the same issue. The migration script
processes tables in order:
video_chunks frames elements
ocr_text ui_events meetings
(vision) then
speakers speaker_embeddings audio_chunks audio_transcriptions
audio_tags
(audio).
Feedback submitted
Your modified files:
screenpipe_sync.sh
/volume1/screenpipe
+...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28260
|
|
28261
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 19, Col 1
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
1h
41m
37m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
legacy-20260511
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
legacy-20260511|1|2
legacy-20260511|2|2
legacy-20260511|3|2
legacy-20260511|4|2
legacy-20260511|5|2
legacy-20260511|6|2
legacy-20260511|9|4
legacy-20260511|10|4
legacy-20260511|11|4
legacy-20260511|12|4
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
4009|2607
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Expand content to scroll
Thought
for 1s
The issue is clear now:
video_chunks
has 400
9 rows but only 2607 unique
(install_id, id)
combinations. Each ID appears
2-4 times, which violates the unique constraint.
This likely happened from multiple
sync runs without proper deduplication. To fix this, you need
to remove the duplicate rows before the migration can proceed:
bash
# Delete duplicates, keeping the first occurrence for each (install_id, id)
sqlite3
/volume1/screenpipe/archive.db
"
DELETE FROM video_chunks
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM video_chunks
GROUP BY install_id, id
);
"
# Verify cleanup
sqlite3...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28261
|
|
28262
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 19, Col 1
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
1h
1m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, it fails.
This likely happened from a previous sync that added
data without proper deduplication. Let me check the database to identify the duplicates:
Searched
sqlite3 in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already
has
install_id
data with duplicate
(install_id, id)
combinations. When
the script tries to create a unique index on these columns, SQLite rejects
it due to existing duplicates.
This likely happened
from a previous sync or partial migration. To diagnose,
you need to check the database:
bash
# Check what install_id values exist in video_chunks
sqlite3
/volume1/screenpipe/archive.db
"SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
# Find the duplicate (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
# Check total rows vs unique (install_id, id) combinations
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
The fix depends on what
you find:
If duplicates have the same actual data
: Delete the duplicates keeping
one row per
(install_id, id)
If duplicates are from different syncs with different data
: You may need to use
INSERT OR REPLACE
logic or consolidate
the data
The migration script assumes clean data where
(install_id, id)
is unique. Your
database has pre-existing install_id
data that violates this assumption.
Feedback submitted
Your recent terminal commands:
$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT DISTINCT install_id FROM video_chunks LIMIT 10;"
legacy-20260511
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
sqlite3 /volume1/screenpipe/archive.db "SELECT install_id, id, COUNT(*) FROM video_chunks GROUP BY install_id, id HAVING COUNT(*) > 1 LIMIT 10;"
legacy-20260511|1|2
legacy-20260511|2|2
legacy-20260511|3|2
legacy-20260511|4|2
legacy-20260511|5|2
legacy-20260511|6|2
legacy-20260511|9|4
legacy-20260511|10|4
legacy-20260511|11|4
legacy-20260511|12|4
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$ sqlite3 /volume1/screenpipe/archive.db "SELECT COUNT(*) as total, COUNT(DISTINCT install_id || '|' || id) as unique_combos FROM video_chunks;"
4009|2607
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Expand content to scroll
Thought
for 1s
The issue is clear now:
video_chunks
has 400
9 rows but only 2607 unique
(install_id, id)
combinations. Each ID appears
2-4 times, which violates the unique constraint.
This likely happened from multiple
sync runs without proper deduplication. To fix this, you need
to remove the duplicate rows before the migration can proceed:
bash
# Delete duplicates, keeping the first occurrence for each (install_id, id)
sqlite3
/volume1/screenpipe/archive.db
"
DELETE FROM video_chunks
WHERE rowid NOT IN (
SELECT MIN(rowid)
FROM video_chunks
GROUP BY install_id, id
);
"
# Verify cleanup
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(*) FROM video_chunks;"
sqlite3
/volume1/screenpipe/archive.db
"SELECT COUNT(DISTINCT install_id || '|' || id) FROM video_chunks;"
After this
, both counts should match (2607),
and you can re-run the migration script:
bash
/volume1/screenpipe/screenpipe_fts_migrate.sh
You may
need to repeat this for other tables if they
have the same issue. The migration script
processes tables in order:
video_chunks frames elements
ocr_text ui_events meetings
(vision) then
speakers speaker_embeddings audio_chunks audio_transcriptions
audio_tags
(audio).
Feedback submitted...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28262
|
|
28263
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 23, Col 71
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
1h
1m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across
reinstalls)
Creates
_installs
registry table
Re
builds FTS (full-text search) tables with new
schema
Optional but recommended
- running
this on the NAS is
5-10x faster than letting
screenpipe_sync.sh
do
it inline
Idempotent (safe to re-run)
2.
screenpipe_sync.sh
- Daily sync script:
Copies
SQLite data from Mac (
~/.screenpipe/db.sqlite
) to NAS (
/Volumes/screenpipe/archive.db
)
Syncs vision tables (frames
, elements, OCR, UI events) and audio
tables (chunks, transcriptions, speakers)
Copies frame
data files and audio MP4s via rs
ync
Uses
install_id
(UUID) to handle multiple screenpipe installations
safely
Schema-drift tolerant (auto-add
s new columns)
Run per
date:
./screenpipe_sync.sh
(y
esterday) or
./screenpipe_sync.sh 2026-05-12
Current NAS State
Current NAS
State
archive.db
- 12.9 GB (main
archive)
archive.db-bak
- 11.1
GB (backup)
archive.db.bak-pre-installid
- 12
.9 GB (pre-migration backup)
db.sqlite
- 3.7 GB (appears
to be source DB already copied?)
data/
- empty (will hold
frame data by date)
logs/
- contains sync logs
Your Plan
Your
Plan
Run
screenpipe_fts_migrate.sh
first to update the schema quickly on the NAS, then
run
screenpipe_sync.sh
daily to increment
ally move data from Mac to
NAS. This makes sense - the migration is the
heavy operation, then daily syncs are lightweight
.
Does this match your understanding
, or do you have questions about any part
?
Feedback submitted
Your modified files:
screenpipe_fts_migrate.sh
/volume1/screenpipe
+
1
-
1
Your recent terminal commands:
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
$ /volume1/screenpipe/screenpipe_fts_migrate.sh
@
terminal:bash
why is there erro like that?
Expand content to scroll
Thought
for 1s
The
error occurs because the
video_chunks
table already has
install_id
but contains duplicate
(install_id, id)
combinations, violating the unique constraint the script is trying to create.
Let
me check the database state to diagnose:
Searched
video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because there are
duplicate
(install_id, id)
combinations in the
video_chunks
table, violating the unique constraint the
script is trying to create.
Let me check the database state to understand
the duplicates:
Searched
sqlite3.*video_chunks in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table already has
install_id
data, but there are duplicate
(install_id, id)
combinations. The script tries to create a unique index on these
columns, which fails due to the duplicates.
Let me check
the database to identify the duplicates:
Searched
SELECT.*install_id.*FROM in /volume1/screenpipe (*.sh)
Thought
for 1s
The error occurs because the
video_chunks
table
already has
install_id
data with duplicate
(install_id, id)
combinations. When the script tries to create a unique index on these
columns, SQLite rejects it due to the
duplicates.
This likely happened from a previous sync
or partial migration. Let me check the
database to see the duplicate data:
Searched
install_id in /volume1/screenpipe (*.sh)
Thought
for 1s...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28263
|
|
28264
|
Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘ Explorer (⌥⌘E)
Search (⇧⌘F)
Source Control (⇧⌘G) - 13 pending changes
13
Codemaps
DeepWiki
Run and Debug
Remote Explorer
Extensions (⇧⌘X)
Testing
Explorer
Explorer
Explorer Section: screenpipe [SSH: nas]
Explorer Section: screenpipe [SSH: nas]
screenpipe [SSH: nas]
#recycle
app
data
logs
pipes
.gitignore
app_settings.json
archive.db
archive.db-bak
U
archive.db.bak-pre-installid
U
db.sqlite
db.sqlite-shm
db.sqlite-wal
screenpipe_fts_migrate.sh
U
screenpipe_sync_updated.sh
U
screenpipe_sync.sh
screenpipe.db
Outline Section
Outline
Outline
Timeline Section
Timeline
Timeline
remote SSH: nas
SSH: nas
screenpipe (Git) - master*, Checkout Branch/Tag...
master*
screenpipe (Git) - Synchronize Changes
No Problems
0
0
Forwarded Ports: 41257
1
Notifications
Windsurf - Settings
Teams, Daily: 0% quota used · Weekly: 68% quota used
Shell Script
LF
UTF-8
Spaces: 2
Ln 23, Col 71
Screen Reader Optimized
AUDIO_TABLES=(speakers speaker_embeddings audio_chunks audio_transcriptions audio_tags), 2 of 103 found for 'audio', at 47:1
Command Succeeded
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Adm1n@DXP4800PLUS-B5F8:/volume1/screenpipe$
Terminal 1 environment is stale, run the 'Show Environment Information' command for more information
501 x 10
$ echo 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 3e61f38a-b75b-4ae2-bc31-9b0ce5db0968 exit
Terminal 2 environment is stale, run the 'Show Environment Information' command for more information
This read-only terminal is managed by Cascade
501 x 10
Data Migration and Sync Review
1h
1m
get familiar with the project. The idea is to copy the data from mac to nas (here). I am tryign to update the database using
@
screenpipe_fts_migrate.sh
and then run
@
screenpipe_sync.sh
for a day to move the data. Review and see is you understand everything.
Expand content to scroll
Thought
for 1s
I'll read the two scripts and
explore the project structure to understand the data migration
setup.
Thoughts
Read
screenpipe_fts_migrate.sh and screenpipe_sync.sh
Analyzed
/volume1/screenpipe
Thought
for 2s
I understand the setup. Here's my analysis
:
Project Overview
Project Overview
You're migrating Screen
pipe data from Mac to NAS. The workflow:
1.
screenpipe_fts_migrate.sh
- One-time database schema migration:
Adds
install_id
column to all
synced tables (prevents ID collisions across...
|
Windsurf
|
screenpipe [SSH: nas] — screenpipe_sync_updated.sh screenpipe [SSH: nas] — screenpipe_sync_updated.sh — Untracked...
|
NULL
|
28264
|
|
14919
|
whisper_backend_init_gpu: found GPU device 0: Meta whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-10T23:27:31.985285Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-10T23:27:41.489329Z ERROR screenpipe_audio::core::stream: an error occurred on the audio stream: device disconnected
2026-05-10T23:27:42.161846Z INFO screenpipe_audio::audio_manager::device_monitor: system default input changed to: MacBook Pro Microphone (input)
2026-05-10T23:27:42.163527Z INFO screenpipe_audio::device::device_manager: starting recording for device: MacBook Pro Microphone (input)
2026-05-10T23:27:42.164408Z INFO screenpipe_audio::audio_manager::device_monitor: switched to new system default input: MacBook Pro Microphone (input)
2026-05-10T23:27:42.164471Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for MacBook Pro Microphone (input) (wired / 30s segments)
2026-05-10T23:27:42.164492Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for MacBook Pro Microphone (input)
2026-05-10T23:27:42.881174Z INFO screenpipe_audio::core::run_record_and_transcribe: stopped recording for soundcore AeroClip (input)
2026-05-10T23:27:43.285854Z INFO screenpipe_audio::transcription::handle_new_transcript: device soundcore AeroClip (input) skipping duplicate transcript (entire content overlaps with previous)
2026-05-10T23:27:58.189174Z INFO screenpipe_audio::audio_manager::device_monitor: system default input changed to: soundcore AeroClip (input)
2026-05-10T23:27:58.190264Z INFO screenpipe_audio::device::device_manager: starting recording for device: soundcore AeroClip (input)
2026-05-10T23:27:58.190299Z INFO screenpipe_audio::audio_manager::device_monitor: switched to new system default input: soundcore AeroClip (input)
2026-05-10T23:27:58.190324Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for soundcore AeroClip (input) (bluetooth / 30s segments)
2026-05-10T23:27:58.190332Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for soundcore AeroClip (input)
2026-05-10T23:27:58.203316Z INFO screenpipe_audio::core::run_record_and_transcribe: stopped recording for MacBook Pro Microphone (input)
2026-05-10T23:28:32.063312Z ERROR screenpipe_audio::core::stream: an error occurred on the audio stream: device disconnected
2026-05-10T23:28:32.531328Z INFO screenpipe_audio::audio_manager::device_monitor: system default input changed to: MacBook Pro Microphone (input)
2026-05-10T23:28:32.531913Z INFO screenpipe_audio::device::device_manager: starting recording for device: MacBook Pro Microphone (input)
2026-05-10T23:28:32.531933Z INFO screenpipe_audio::audio_manager::device_monitor: switched to new system default input: MacBook Pro Microphone (input)
2026-05-10T23:28:32.532003Z INFO screenpipe_audio::core::run_record_and_transcribe: stopped recording for soundcore AeroClip (input)
2026-05-10T23:28:32.708770Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for MacBook Pro Microphone (input) (wired / 30s segments)
2026-05-10T23:28:32.708807Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for MacBook Pro Microphone (input)
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-10T23:51:42.401532Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
tip: sign in for higher AI quotas + cloud sync:
screenpipe login
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T02:54:23.501609Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
tip: get the screenpipe desktop app for the full experience
https://screenpi.pe
2026-05-11T07:21:22.702849Z INFO screenpipe_audio::audio_manager::device_monitor: system default input changed to: soundcore AeroClip (input)
2026-05-11T07:21:22.703351Z ERROR screenpipe_audio::audio_manager::device_monitor: failed to start new default input soundcore AeroClip (input): device soundcore AeroClip (input) not found (will back off)
2026-05-11T07:21:22.704671Z WARN screenpipe_audio::audio_manager::device_monitor: [DEVICE_RECOVERY] no input device running (attempt 1), starting default: soundcore AeroClip (input)
2026-05-11T07:21:22.704693Z WARN screenpipe_audio::audio_manager::device_monitor: [DEVICE_RECOVERY] failed to start input device soundcore AeroClip (input) (attempt 1): device soundcore AeroClip (input) not found
2026-05-11T07:21:23.587900Z INFO screenpipe_audio::core::run_record_and_transcribe: stopped recording for MacBook Pro Microphone (input)
2026-05-11T07:21:24.708381Z WARN screenpipe_audio::audio_manager::device_monitor: [DEVICE_RECOVERY] no input device running (attempt 2), starting default: soundcore AeroClip (input)
2026-05-11T07:21:24.708451Z WARN screenpipe_audio::audio_manager::device_monitor: [DEVICE_RECOVERY] failed to start input device soundcore AeroClip (input) (attempt 2): device soundcore AeroClip (input) not found
2026-05-11T07:21:26.711922Z WARN screenpipe_audio::audio_manager::device_monitor: [DEVICE_RECOVERY] no input device running (attempt 3), starting default: soundcore AeroClip (input)
2026-05-11T07:21:26.712001Z WARN screenpipe_audio::audio_manager::device_monitor: [DEVICE_RECOVERY] failed to start input device soundcore AeroClip (input) (attempt 3): device soundcore AeroClip (input) not found
2026-05-11T07:21:28.723900Z WARN screenpipe_audio::audio_manager::device_monitor: [DEVICE_RECOVERY] no input device running (attempt 4), starting default: soundcore AeroClip (input)
2026-05-11T07:21:28.726974Z INFO screenpipe_audio::device::device_manager: starting recording for device: soundcore AeroClip (input)
2026-05-11T07:21:28.727134Z INFO screenpipe_audio::audio_manager::device_monitor: [DEVICE_RECOVERY] input device restored, device=soundcore AeroClip (input)
2026-05-11T07:21:28.972503Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for soundcore AeroClip (input) (bluetooth / 30s segments)
2026-05-11T07:21:28.972538Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for soundcore AeroClip (input)
tip: wire screenpipe into claude with one command:
claude mcp add screenpipe -- npx -y screenpipe-mcp
then ask claude to build a pipe that tracks who you are, your todos, and how you spend your time from your screen activity
2026-05-11T07:54:37.325769Z INFO screenpipe_en...
|
iTerm2
|
screenpipe"
|
NULL
|
14919
|
|
14926
|
whisper_init_state: kv cross size = 9.44 MB
whi whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-10T23:27:31.985285Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-10T23:27:41.489329Z ERROR screenpipe_audio::core::stream: an error occurred on the audio stream: device disconnected
2026-05-10T23:27:42.161846Z INFO screenpipe_audio::audio_manager::device_monitor: system default input changed to: MacBook Pro Microphone (input)
2026-05-10T23:27:42.163527Z INFO screenpipe_audio::device::device_manager: starting recording for device: MacBook Pro Microphone (input)
2026-05-10T23:27:42.164408Z INFO screenpipe_audio::audio_manager::device_monitor: switched to new system default input: MacBook Pro Microphone (input)
2026-05-10T23:27:42.164471Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for MacBook Pro Microphone (input) (wired / 30s segments)
2026-05-10T23:27:42.164492Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for MacBook Pro Microphone (input)
2026-05-10T23:27:42.881174Z INFO screenpipe_audio::core::run_record_and_transcribe: stopped recording for soundcore AeroClip (input)
2026-05-10T23:27:43.285854Z INFO screenpipe_audio::transcription::handle_new_transcript: device soundcore AeroClip (input) skipping duplicate transcript (entire content overlaps with previous)
2026-05-10T23:27:58.189174Z INFO screenpipe_audio::audio_manager::device_monitor: system default input changed to: soundcore AeroClip (input)
2026-05-10T23:27:58.190264Z INFO screenpipe_audio::device::device_manager: starting recording for device: soundcore AeroClip (input)
2026-05-10T23:27:58.190299Z INFO screenpipe_audio::audio_manager::device_monitor: switched to new system default input: soundcore AeroClip (input)
2026-05-10T23:27:58.190324Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for soundcore AeroClip (input) (bluetooth / 30s segments)
2026-05-10T23:27:58.190332Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for soundcore AeroClip (input)
2026-05-10T23:27:58.203316Z INFO screenpipe_audio::core::run_record_and_transcribe: stopped recording for MacBook Pro Microphone (input)
2026-05-10T23:28:32.063312Z ERROR screenpipe_audio::core::stream: an error occurred on the audio stream: device disconnected
2026-05-10T23:28:32.531328Z INFO screenpipe_audio::audio_manager::device_monitor: system default input changed to: MacBook Pro Microphone (input)
2026-05-10T23:28:32.531913Z INFO screenpipe_audio::device::device_manager: starting recording for device: MacBook Pro Microphone (input)
2026-05-10T23:28:32.531933Z INFO screenpipe_audio::audio_manager::device_monitor: switched to new system default input: MacBook Pro Microphone (input)
2026-05-10T23:28:32.532003Z INFO screenpipe_audio::core::run_record_and_transcribe: stopped recording for soundcore AeroClip (input)
2026-05-10T23:28:32.708770Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for MacBook Pro Microphone (input) (wired / 30s segments)
2026-05-10T23:28:32.708807Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for MacBook Pro Microphone (input)
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-10T23:51:42.401532Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
tip: sign in for higher AI quotas + cloud sync:
screenpipe login
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T02:54:23.501609Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
tip: get the screenpipe desktop app for the full experience
[URL_WITH_CREDENTIALS] ~/.screenpipe/data $ 2026-05-11T07:55:11.700985Z INFO screenpipe_engine::ui_recorder: UI recording session ended: 851f2de1-d8f5-4b4a-b008-420703e8e4b2
2026-05-11T07:55:11.701373Z INFO screenpipe: shutdown complete
ggml_metal_free: deallocating
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ 2026-05-11T07:55:27.408897Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)
2026-05-11T07:55:32.412685Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ 2026-05-11T08:08:48.291500Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)
2026-05-11T09:04:13.378932Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh
2.9G .
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ alias sp-start
sp-start='npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ npx screenpipe@latest record
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-05-11T09:06:14.511481Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
microphone: ok
accessibility: ok
2026-05-11T09:06:14.591827Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-05-11T09:06:16.007353Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-05-11T09:06:16.008982Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-05-11T09:06:16.009480Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-05-11T09:06:16.029339Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-05-11T09:06:16.029396Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-05-11T09:06:16.402389Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-05-11T09:06:16.402461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-05-11T09:06:16.402480Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-05-11T09:06:16.402564Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-05-11T09:06:16.402590Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-05-11T09:06:16.405899Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-05-11T09:06:16.406247Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-05-11T09:06:16.406815Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-05-11T09:06:16.406896Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-05-11T09:06:16.406969Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-05-11T09:06:16.407056Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-0...
|
iTerm2
|
screenpipe"
|
NULL
|
14926
|
|
14927
|
whisper_init_state: kv cross size = 9.44 MB
whi whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-10T23:27:31.985285Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-10T23:27:41.489329Z ERROR screenpipe_audio::core::stream: an error occurred on the audio stream: device disconnected
2026-05-10T23:27:42.161846Z INFO screenpipe_audio::audio_manager::device_monitor: system default input changed to: MacBook Pro Microphone (input)
2026-05-10T23:27:42.163527Z INFO screenpipe_audio::device::device_manager: starting recording for device: MacBook Pro Microphone (input)
2026-05-10T23:27:42.164408Z INFO screenpipe_audio::audio_manager::device_monitor: switched to new system default input: MacBook Pro Microphone (input)
2026-05-10T23:27:42.164471Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for MacBook Pro Microphone (input) (wired / 30s segments)
2026-05-10T23:27:42.164492Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for MacBook Pro Microphone (input)
2026-05-10T23:27:42.881174Z INFO screenpipe_audio::core::run_record_and_transcribe: stopped recording for soundcore AeroClip (input)
2026-05-10T23:27:43.285854Z INFO screenpipe_audio::transcription::handle_new_transcript: device soundcore AeroClip (input) skipping duplicate transcript (entire content overlaps with previous)
2026-05-10T23:27:58.189174Z INFO screenpipe_audio::audio_manager::device_monitor: system default input changed to: soundcore AeroClip (input)
2026-05-10T23:27:58.190264Z INFO screenpipe_audio::device::device_manager: starting recording for device: soundcore AeroClip (input)
2026-05-10T23:27:58.190299Z INFO screenpipe_audio::audio_manager::device_monitor: switched to new system default input: soundcore AeroClip (input)
2026-05-10T23:27:58.190324Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for soundcore AeroClip (input) (bluetooth / 30s segments)
2026-05-10T23:27:58.190332Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for soundcore AeroClip (input)
2026-05-10T23:27:58.203316Z INFO screenpipe_audio::core::run_record_and_transcribe: stopped recording for MacBook Pro Microphone (input)
2026-05-10T23:28:32.063312Z ERROR screenpipe_audio::core::stream: an error occurred on the audio stream: device disconnected
2026-05-10T23:28:32.531328Z INFO screenpipe_audio::audio_manager::device_monitor: system default input changed to: MacBook Pro Microphone (input)
2026-05-10T23:28:32.531913Z INFO screenpipe_audio::device::device_manager: starting recording for device: MacBook Pro Microphone (input)
2026-05-10T23:28:32.531933Z INFO screenpipe_audio::audio_manager::device_monitor: switched to new system default input: MacBook Pro Microphone (input)
2026-05-10T23:28:32.532003Z INFO screenpipe_audio::core::run_record_and_transcribe: stopped recording for soundcore AeroClip (input)
2026-05-10T23:28:32.708770Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for MacBook Pro Microphone (input) (wired / 30s segments)
2026-05-10T23:28:32.708807Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for MacBook Pro Microphone (input)
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-10T23:51:42.401532Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
tip: sign in for higher AI quotas + cloud sync:
screenpipe login
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T02:54:23.501609Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
tip: get the screenpipe desktop app for the full experience
[URL_WITH_CREDENTIALS] ~/.screenpipe/data $ 2026-05-11T07:55:11.700985Z INFO screenpipe_engine::ui_recorder: UI recording session ended: 851f2de1-d8f5-4b4a-b008-420703e8e4b2
2026-05-11T07:55:11.701373Z INFO screenpipe: shutdown complete
ggml_metal_free: deallocating
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ 2026-05-11T07:55:27.408897Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)
2026-05-11T07:55:32.412685Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ 2026-05-11T08:08:48.291500Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)
2026-05-11T09:04:13.378932Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh
2.9G .
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ alias sp-start
sp-start='npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ npx screenpipe@latest record
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-05-11T09:06:14.511481Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
microphone: ok
accessibility: ok
2026-05-11T09:06:14.591827Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-05-11T09:06:16.007353Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-05-11T09:06:16.008982Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-05-11T09:06:16.009480Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-05-11T09:06:16.029339Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-05-11T09:06:16.029396Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-05-11T09:06:16.402389Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-05-11T09:06:16.402461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-05-11T09:06:16.402480Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-05-11T09:06:16.402564Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-05-11T09:06:16.402590Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-05-11T09:06:16.405899Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-05-11T09:06:16.406247Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-05-11T09:06:16.406815Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-05-11T09:06:16.406896Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-05-11T09:06:16.406969Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-05-11T09:06:16.407056Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-0...
|
iTerm2
|
screenpipe"
|
NULL
|
14927
|
|
14932
|
whisper_init_state: kv cross size = 9.44 MB
whi whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-10T23:27:31.985285Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-10T23:27:41.489329Z ERROR screenpipe_audio::core::stream: an error occurred on the audio stream: device disconnected
2026-05-10T23:27:42.161846Z INFO screenpipe_audio::audio_manager::device_monitor: system default input changed to: MacBook Pro Microphone (input)
2026-05-10T23:27:42.163527Z INFO screenpipe_audio::device::device_manager: starting recording for device: MacBook Pro Microphone (input)
2026-05-10T23:27:42.164408Z INFO screenpipe_audio::audio_manager::device_monitor: switched to new system default input: MacBook Pro Microphone (input)
2026-05-10T23:27:42.164471Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for MacBook Pro Microphone (input) (wired / 30s segments)
2026-05-10T23:27:42.164492Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for MacBook Pro Microphone (input)
2026-05-10T23:27:42.881174Z INFO screenpipe_audio::core::run_record_and_transcribe: stopped recording for soundcore AeroClip (input)
2026-05-10T23:27:43.285854Z INFO screenpipe_audio::transcription::handle_new_transcript: device soundcore AeroClip (input) skipping duplicate transcript (entire content overlaps with previous)
2026-05-10T23:27:58.189174Z INFO screenpipe_audio::audio_manager::device_monitor: system default input changed to: soundcore AeroClip (input)
2026-05-10T23:27:58.190264Z INFO screenpipe_audio::device::device_manager: starting recording for device: soundcore AeroClip (input)
2026-05-10T23:27:58.190299Z INFO screenpipe_audio::audio_manager::device_monitor: switched to new system default input: soundcore AeroClip (input)
2026-05-10T23:27:58.190324Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for soundcore AeroClip (input) (bluetooth / 30s segments)
2026-05-10T23:27:58.190332Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for soundcore AeroClip (input)
2026-05-10T23:27:58.203316Z INFO screenpipe_audio::core::run_record_and_transcribe: stopped recording for MacBook Pro Microphone (input)
2026-05-10T23:28:32.063312Z ERROR screenpipe_audio::core::stream: an error occurred on the audio stream: device disconnected
2026-05-10T23:28:32.531328Z INFO screenpipe_audio::audio_manager::device_monitor: system default input changed to: MacBook Pro Microphone (input)
2026-05-10T23:28:32.531913Z INFO screenpipe_audio::device::device_manager: starting recording for device: MacBook Pro Microphone (input)
2026-05-10T23:28:32.531933Z INFO screenpipe_audio::audio_manager::device_monitor: switched to new system default input: MacBook Pro Microphone (input)
2026-05-10T23:28:32.532003Z INFO screenpipe_audio::core::run_record_and_transcribe: stopped recording for soundcore AeroClip (input)
2026-05-10T23:28:32.708770Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for MacBook Pro Microphone (input) (wired / 30s segments)
2026-05-10T23:28:32.708807Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for MacBook Pro Microphone (input)
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-10T23:51:42.401532Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
tip: sign in for higher AI quotas + cloud sync:
screenpipe login
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T02:54:23.501609Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
tip: get the screenpipe desktop app for the full experience
[URL_WITH_CREDENTIALS] ~/.screenpipe/data $ 2026-05-11T07:55:11.700985Z INFO screenpipe_engine::ui_recorder: UI recording session ended: 851f2de1-d8f5-4b4a-b008-420703e8e4b2
2026-05-11T07:55:11.701373Z INFO screenpipe: shutdown complete
ggml_metal_free: deallocating
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ 2026-05-11T07:55:27.408897Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)
2026-05-11T07:55:32.412685Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ 2026-05-11T08:08:48.291500Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)
2026-05-11T09:04:13.378932Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh
2.9G .
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ alias sp-start
sp-start='npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ npx screenpipe@latest record
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-05-11T09:06:14.511481Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
microphone: ok
accessibility: ok
2026-05-11T09:06:14.591827Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-05-11T09:06:16.007353Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-05-11T09:06:16.008982Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-05-11T09:06:16.009480Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-05-11T09:06:16.029339Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-05-11T09:06:16.029396Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-05-11T09:06:16.402389Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-05-11T09:06:16.402461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-05-11T09:06:16.402480Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-05-11T09:06:16.402564Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-05-11T09:06:16.402590Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-05-11T09:06:16.405899Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-05-11T09:06:16.406247Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-05-11T09:06:16.406815Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-05-11T09:06:16.406896Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-05-11T09:06:16.406969Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-05-11T09:06:16.407056Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-0...
|
iTerm2
|
screenpipe"
|
NULL
|
14932
|
|
14939
|
whisper_init_state: compute buffer (cross) = 8 whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-10T23:27:31.985285Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-10T23:27:41.489329Z ERROR screenpipe_audio::core::stream: an error occurred on the audio stream: device disconnected
2026-05-10T23:27:42.161846Z INFO screenpipe_audio::audio_manager::device_monitor: system default input changed to: MacBook Pro Microphone (input)
2026-05-10T23:27:42.163527Z INFO screenpipe_audio::device::device_manager: starting recording for device: MacBook Pro Microphone (input)
2026-05-10T23:27:42.164408Z INFO screenpipe_audio::audio_manager::device_monitor: switched to new system default input: MacBook Pro Microphone (input)
2026-05-10T23:27:42.164471Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for MacBook Pro Microphone (input) (wired / 30s segments)
2026-05-10T23:27:42.164492Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for MacBook Pro Microphone (input)
2026-05-10T23:27:42.881174Z INFO screenpipe_audio::core::run_record_and_transcribe: stopped recording for soundcore AeroClip (input)
2026-05-10T23:27:43.285854Z INFO screenpipe_audio::transcription::handle_new_transcript: device soundcore AeroClip (input) skipping duplicate transcript (entire content overlaps with previous)
2026-05-10T23:27:58.189174Z INFO screenpipe_audio::audio_manager::device_monitor: system default input changed to: soundcore AeroClip (input)
2026-05-10T23:27:58.190264Z INFO screenpipe_audio::device::device_manager: starting recording for device: soundcore AeroClip (input)
2026-05-10T23:27:58.190299Z INFO screenpipe_audio::audio_manager::device_monitor: switched to new system default input: soundcore AeroClip (input)
2026-05-10T23:27:58.190324Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for soundcore AeroClip (input) (bluetooth / 30s segments)
2026-05-10T23:27:58.190332Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for soundcore AeroClip (input)
2026-05-10T23:27:58.203316Z INFO screenpipe_audio::core::run_record_and_transcribe: stopped recording for MacBook Pro Microphone (input)
2026-05-10T23:28:32.063312Z ERROR screenpipe_audio::core::stream: an error occurred on the audio stream: device disconnected
2026-05-10T23:28:32.531328Z INFO screenpipe_audio::audio_manager::device_monitor: system default input changed to: MacBook Pro Microphone (input)
2026-05-10T23:28:32.531913Z INFO screenpipe_audio::device::device_manager: starting recording for device: MacBook Pro Microphone (input)
2026-05-10T23:28:32.531933Z INFO screenpipe_audio::audio_manager::device_monitor: switched to new system default input: MacBook Pro Microphone (input)
2026-05-10T23:28:32.532003Z INFO screenpipe_audio::core::run_record_and_transcribe: stopped recording for soundcore AeroClip (input)
2026-05-10T23:28:32.708770Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for MacBook Pro Microphone (input) (wired / 30s segments)
2026-05-10T23:28:32.708807Z INFO screenpipe_audio::core::run_record_and_transcribe: screen locked, pausing audio recording for MacBook Pro Microphone (input)
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-10T23:51:42.401532Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
tip: sign in for higher AI quotas + cloud sync:
screenpipe login
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T02:54:23.501609Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
tip: get the screenpipe desktop app for the full experience
[URL_WITH_CREDENTIALS] ~/.screenpipe/data $ 2026-05-11T07:55:11.700985Z INFO screenpipe_engine::ui_recorder: UI recording session ended: 851f2de1-d8f5-4b4a-b008-420703e8e4b2
2026-05-11T07:55:11.701373Z INFO screenpipe: shutdown complete
ggml_metal_free: deallocating
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ 2026-05-11T07:55:27.408897Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)
2026-05-11T07:55:32.412685Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ sp-status
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ 2026-05-11T08:08:48.291500Z INFO screenpipe_engine::sleep_monitor: Screen locked (CGSession safety-net poll)
2026-05-11T09:04:13.378932Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh
2.9G .
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ alias sp-start
sp-start='npx screenpipe@latest record --disable-audio --ignored-windows "Boosteroid"'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ npx screenpipe@latest record
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-05-11T09:06:14.511481Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
microphone: ok
accessibility: ok
2026-05-11T09:06:14.591827Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-05-11T09:06:16.007353Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-05-11T09:06:16.008982Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-05-11T09:06:16.009480Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-05-11T09:06:16.029339Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-05-11T09:06:16.029396Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-05-11T09:06:16.402389Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-05-11T09:06:16.402461Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-05-11T09:06:16.402480Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-05-11T09:06:16.402564Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-05-11T09:06:16.402590Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-05-11T09:06:16.405899Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-05-11T09:06:16.406247Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-05-11T09:06:16.406815Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-05-11T09:06:16.406896Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-05-11T09:06:16.406969Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-05-11T09:06:16.407056Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-05-11T09:06:16.407076Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (...
|
iTerm2
|
screenpipe"
|
NULL
|
14939
|
|
21087
|
2026-05-11T19:55:41.050300Z INFO screenpipe_engin 2026-05-11T19:55:41.050300Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.2MB → 0.4MB (6.1x), 10 JPEGs deleted
2026-05-11T19:55:41.940193Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.9MB → 0.3MB (6.4x), 10 JPEGs deleted
tip: wire screenpipe into claude with one command:
claude mcp add screenpipe -- npx -y screenpipe-mcp
then ask claude to build a pipe that tracks who you are, your todos, and how you spend your time from your screen activity
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T19:56:35.278909Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T19:58:37.834427Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T20:00:40.424221Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-11T20:00:42.183237Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 22 eligible frames
2026-05-11T20:00:43.461244Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.2MB → 0.4MB (6.1x), 10 JPEGs deleted
2026-05-11T20:00:44.432338Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.9MB → 0.3MB (6.4x), 10 JPEGs deleted
tip: install a starter bundle of pipes:
screenpipe install https://screenpi.pe/start.json
2026-05-11T20:02:18.870768Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)
2026-05-11T20:02:18.927472Z INFO screenpipe_audio::core::run_record_and_transcribe: screen unlocked — rebuilding stream for MacBook Pro Microphone (input) (avoids zombie-callback state observed after sleep/wake on macOS, Windows, and Linux)
2026-05-11T20:02:18.981757Z WARN screenpipe_audio::audio_manager::manager: recording for device MacBook Pro Microphone (input) exited with error: stream rebuild required after screen unlock for MacBook Pro Microphone (input) (recovery is automatic via device_monitor)
2026-05-11T20:02:20.964004Z WARN screenpipe_audio::audio_manager::device_monitor: [DEVICE_RECOVERY] detected stale recording handle for MacBook Pro Microphone (input), cleaning up for restart
2026-05-11T20:02:20.964175Z INFO screenpipe_audio::device::device_manager: Stopping device: MacBook Pro Microphone (input)
2026-05-11T20:02:21.415539Z INFO screenpipe_audio::device::device_manager: starting recording for device: MacBook Pro Microphone (input)
2026-05-11T20:02:21.415697Z INFO screenpipe_audio::audio_manager::device_monitor: restarted with system default device: MacBook Pro Microphone (input)
2026-05-11T20:02:21.415980Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for MacBook Pro Microphone (input) (wired / 30s segments)
2026-05-11T20:02:21.813264Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)
2026-05-11T20:02:24.656924Z INFO screenpipe_engine::event_driven_capture: invalidating persistent streams after unlock/wake for monitor 1
2026-05-11T20:02:24.684324Z WARN sqlx::query: summary="SELECT DISTINCT app_name, window_name, …" db.statement="\n\nSELECT\n DISTINCT app_name,\n window_name,\n browser_url\nFROM\n frames\nWHERE\n timestamp > datetime('now', '-30 seconds')\n AND app_name IS NOT NULL\n AND window_name IS NOT NULL\n" rows_affected=1 rows_returned=197 elapsed=5.061547s
2026-05-11T20:02:26.657137Z INFO sck_rs::stream_manager: stopped 2 persistent stream(s)
2026-05-11T20:02:30.621870Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 0 excluded)
2026-05-11T20:02:34.637496Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 0 excluded)
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T20:02:44.001643Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-11T20:03:30.479471Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5826347064466025141, trigger=visual_change)
2026-05-11T20:03:52.131531Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5425790139218707027, trigger=click)
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T20:04:45.978554Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-11T20:05:05.168645Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 89.5ms elapsed (expected 5.3ms) → inserting 84.2ms silence (8080 samples)
2026-05-11T20:05:16.224790Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4930168029133975798, trigger=click)
2026-05-11T20:05:27.444659Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 187.9ms elapsed (expected 5.3ms) → inserting 182.6ms silence (17527 samples)
2026-05-11T20:05:46.190016Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=1 rows_returned=18 elapsed=1.745995375s
2026-05-11T20:05:46.191257Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 18 eligible frames
2026-05-11T20:05:47.142521Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 8 frames, 1.8MB → 0.4MB (4.9x), 8 JPEGs deleted
2026-05-11T20:05:48.203203Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 8 frames, 1.5MB → 0.3MB (5.1x), 8 JPEGs deleted
tip: sign in for higher AI quotas + cloud sync:
screenpipe login
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T20:06:48.489458Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T20:08:50.983819Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-11T20:10:48.583599Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found d...
|
iTerm2
|
screenpipe"
|
NULL
|
21087
|
|
21088
|
2026-05-11T19:55:41.050300Z INFO screenpipe_engin 2026-05-11T19:55:41.050300Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.2MB → 0.4MB (6.1x), 10 JPEGs deleted
2026-05-11T19:55:41.940193Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.9MB → 0.3MB (6.4x), 10 JPEGs deleted
tip: wire screenpipe into claude with one command:
claude mcp add screenpipe -- npx -y screenpipe-mcp
then ask claude to build a pipe that tracks who you are, your todos, and how you spend your time from your screen activity
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T19:56:35.278909Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T19:58:37.834427Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T20:00:40.424221Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-11T20:00:42.183237Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 22 eligible frames
2026-05-11T20:00:43.461244Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.2MB → 0.4MB (6.1x), 10 JPEGs deleted
2026-05-11T20:00:44.432338Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.9MB → 0.3MB (6.4x), 10 JPEGs deleted
tip: install a starter bundle of pipes:
screenpipe install https://screenpi.pe/start.json
2026-05-11T20:02:18.870768Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)
2026-05-11T20:02:18.927472Z INFO screenpipe_audio::core::run_record_and_transcribe: screen unlocked — rebuilding stream for MacBook Pro Microphone (input) (avoids zombie-callback state observed after sleep/wake on macOS, Windows, and Linux)
2026-05-11T20:02:18.981757Z WARN screenpipe_audio::audio_manager::manager: recording for device MacBook Pro Microphone (input) exited with error: stream rebuild required after screen unlock for MacBook Pro Microphone (input) (recovery is automatic via device_monitor)
2026-05-11T20:02:20.964004Z WARN screenpipe_audio::audio_manager::device_monitor: [DEVICE_RECOVERY] detected stale recording handle for MacBook Pro Microphone (input), cleaning up for restart
2026-05-11T20:02:20.964175Z INFO screenpipe_audio::device::device_manager: Stopping device: MacBook Pro Microphone (input)
2026-05-11T20:02:21.415539Z INFO screenpipe_audio::device::device_manager: starting recording for device: MacBook Pro Microphone (input)
2026-05-11T20:02:21.415697Z INFO screenpipe_audio::audio_manager::device_monitor: restarted with system default device: MacBook Pro Microphone (input)
2026-05-11T20:02:21.415980Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for MacBook Pro Microphone (input) (wired / 30s segments)
2026-05-11T20:02:21.813264Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)
2026-05-11T20:02:24.656924Z INFO screenpipe_engine::event_driven_capture: invalidating persistent streams after unlock/wake for monitor 1
2026-05-11T20:02:24.684324Z WARN sqlx::query: summary="SELECT DISTINCT app_name, window_name, …" db.statement="\n\nSELECT\n DISTINCT app_name,\n window_name,\n browser_url\nFROM\n frames\nWHERE\n timestamp > datetime('now', '-30 seconds')\n AND app_name IS NOT NULL\n AND window_name IS NOT NULL\n" rows_affected=1 rows_returned=197 elapsed=5.061547s
2026-05-11T20:02:26.657137Z INFO sck_rs::stream_manager: stopped 2 persistent stream(s)
2026-05-11T20:02:30.621870Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 0 excluded)
2026-05-11T20:02:34.637496Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 0 excluded)
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T20:02:44.001643Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-11T20:03:30.479471Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5826347064466025141, trigger=visual_change)
2026-05-11T20:03:52.131531Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5425790139218707027, trigger=click)
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T20:04:45.978554Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-11T20:05:05.168645Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 89.5ms elapsed (expected 5.3ms) → inserting 84.2ms silence (8080 samples)
2026-05-11T20:05:16.224790Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4930168029133975798, trigger=click)
2026-05-11T20:05:27.444659Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 187.9ms elapsed (expected 5.3ms) → inserting 182.6ms silence (17527 samples)
2026-05-11T20:05:46.190016Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=1 rows_returned=18 elapsed=1.745995375s
2026-05-11T20:05:46.191257Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 18 eligible frames
2026-05-11T20:05:47.142521Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 8 frames, 1.8MB → 0.4MB (4.9x), 8 JPEGs deleted
2026-05-11T20:05:48.203203Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 8 frames, 1.5MB → 0.3MB (5.1x), 8 JPEGs deleted
tip: sign in for higher AI quotas + cloud sync:
screenpipe login
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T20:06:48.489458Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T20:08:50.983819Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-11T20:10:48.583599Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found d...
|
iTerm2
|
screenpipe"
|
NULL
|
21088
|
|
21089
|
2026-05-11T19:55:41.940193Z INFO screenpipe_engin 2026-05-11T19:55:41.940193Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.9MB → 0.3MB (6.4x), 10 JPEGs deleted
tip: wire screenpipe into claude with one command:
claude mcp add screenpipe -- npx -y screenpipe-mcp
then ask claude to build a pipe that tracks who you are, your todos, and how you spend your time from your screen activity
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T19:56:35.278909Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T19:58:37.834427Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T20:00:40.424221Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-11T20:00:42.183237Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 22 eligible frames
2026-05-11T20:00:43.461244Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.2MB → 0.4MB (6.1x), 10 JPEGs deleted
2026-05-11T20:00:44.432338Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 1.9MB → 0.3MB (6.4x), 10 JPEGs deleted
tip: install a starter bundle of pipes:
screenpipe install https://screenpi.pe/start.json
2026-05-11T20:02:18.870768Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)
2026-05-11T20:02:18.927472Z INFO screenpipe_audio::core::run_record_and_transcribe: screen unlocked — rebuilding stream for MacBook Pro Microphone (input) (avoids zombie-callback state observed after sleep/wake on macOS, Windows, and Linux)
2026-05-11T20:02:18.981757Z WARN screenpipe_audio::audio_manager::manager: recording for device MacBook Pro Microphone (input) exited with error: stream rebuild required after screen unlock for MacBook Pro Microphone (input) (recovery is automatic via device_monitor)
2026-05-11T20:02:20.964004Z WARN screenpipe_audio::audio_manager::device_monitor: [DEVICE_RECOVERY] detected stale recording handle for MacBook Pro Microphone (input), cleaning up for restart
2026-05-11T20:02:20.964175Z INFO screenpipe_audio::device::device_manager: Stopping device: MacBook Pro Microphone (input)
2026-05-11T20:02:21.415539Z INFO screenpipe_audio::device::device_manager: starting recording for device: MacBook Pro Microphone (input)
2026-05-11T20:02:21.415697Z INFO screenpipe_audio::audio_manager::device_monitor: restarted with system default device: MacBook Pro Microphone (input)
2026-05-11T20:02:21.415980Z INFO screenpipe_audio::core::run_record_and_transcribe: starting continuous recording for MacBook Pro Microphone (input) (wired / 30s segments)
2026-05-11T20:02:21.813264Z INFO screenpipe_engine::sleep_monitor: Screen unlocked (CGSession safety-net poll)
2026-05-11T20:02:24.656924Z INFO screenpipe_engine::event_driven_capture: invalidating persistent streams after unlock/wake for monitor 1
2026-05-11T20:02:24.684324Z WARN sqlx::query: summary="SELECT DISTINCT app_name, window_name, …" db.statement="\n\nSELECT\n DISTINCT app_name,\n window_name,\n browser_url\nFROM\n frames\nWHERE\n timestamp > datetime('now', '-30 seconds')\n AND app_name IS NOT NULL\n AND window_name IS NOT NULL\n" rows_affected=1 rows_returned=197 elapsed=5.061547s
2026-05-11T20:02:26.657137Z INFO sck_rs::stream_manager: stopped 2 persistent stream(s)
2026-05-11T20:02:30.621870Z INFO sck_rs::stream_manager: persistent SCK stream started for display 2 (3008x1253, 2fps, 0 excluded)
2026-05-11T20:02:34.637496Z INFO sck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900, 2fps, 0 excluded)
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T20:02:44.001643Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-11T20:03:30.479471Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-5826347064466025141, trigger=visual_change)
2026-05-11T20:03:52.131531Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-5425790139218707027, trigger=click)
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T20:04:45.978554Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-11T20:05:05.168645Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 89.5ms elapsed (expected 5.3ms) → inserting 84.2ms silence (8080 samples)
2026-05-11T20:05:16.224790Z INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=4930168029133975798, trigger=click)
2026-05-11T20:05:27.444659Z WARN screenpipe_audio::core::source_buffer: [MacBook Pro Microphone (input)] large gap on wired device: 187.9ms elapsed (expected 5.3ms) → inserting 182.6ms silence (17527 samples)
2026-05-11T20:05:46.190016Z WARN sqlx::query: summary="SELECT id, snapshot_path, device_name, …" db.statement="\n\nSELECT\n id,\n snapshot_path,\n device_name,\n timestamp\nFROM\n frames\nWHERE\n snapshot_path IS NOT NULL\n AND timestamp < ?1\nORDER BY\n device_name,\n timestamp ASC\nLIMIT\n 5000\n" rows_affected=1 rows_returned=18 elapsed=1.745995375s
2026-05-11T20:05:46.191257Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 18 eligible frames
2026-05-11T20:05:47.142521Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 8 frames, 1.8MB → 0.4MB (4.9x), 8 JPEGs deleted
2026-05-11T20:05:48.203203Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: 8 frames, 1.5MB → 0.3MB (5.1x), 8 JPEGs deleted
tip: sign in for higher AI quotas + cloud sync:
screenpipe login
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T20:06:48.489458Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T20:08:50.983819Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
2026-05-11T20:10:48.583599Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 2 eligible frames
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = ...
|
iTerm2
|
screenpipe"
|
NULL
|
21089
|
|
21773
|
ggml_metal_init: allocating
ggml_metal_init: found ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T22:27:49.369341Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
whisper_backend_init_gpu: device 0: Metal (type: 1)
whisper_backend_init_gpu: found GPU device 0: Metal (type: 1, cnt: 0)
whisper_backend_init_gpu: using Metal backend
ggml_metal_init: allocating
ggml_metal_init: found device: Apple M1
ggml_metal_init: picking default device: Apple M1
ggml_metal_init: use fusion = true
ggml_metal_init: use concurrency = true
ggml_metal_init: use graph optimize = true
whisper_backend_init: using BLAS backend
whisper_init_state: kv self size = 3.15 MB
whisper_init_state: kv cross size = 9.44 MB
whisper_init_state: kv pad size = 2.36 MB
whisper_init_state: compute buffer (conv) = 14.17 MB
whisper_init_state: compute buffer (encode) = 65.96 MB
whisper_init_state: compute buffer (cross) = 8.50 MB
whisper_init_state: compute buffer (decode) = 96.83 MB
ggml_metal_free: deallocating
2026-05-11T22:29:51.512607Z INFO screenpipe_audio::audio_manager::manager: reconciliation: transcribed 50 orphaned chunks
tip: get the screenpipe desktop app for the full experience
[URL_WITH_CREDENTIALS] record
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ npx screenpipe@latest record
detected hardware tier: Mid
warning: parakeet is not supported on this platform, using whisper-tiny instead
2026-05-12T09:21:07.201625Z INFO screenpipe_engine::auth_key: api auth: key resolved via secret store
checking permissions...
screen recording: ok
microphone: ok
accessibility: ok
2026-05-12T09:21:07.328817Z INFO screenpipe_screen::monitor::macos_version: Detected macOS version: 14.6
2026-05-12T09:21:10.020463Z INFO screenpipe_engine::sleep_monitor: Starting macOS sleep/wake monitor
2026-05-12T09:21:10.024711Z INFO screenpipe_engine::sleep_monitor: Screen lock/unlock observers registered (CFNotificationCenter)
2026-05-12T09:21:10.025571Z INFO screenpipe_engine::sleep_monitor: Display reconfiguration watcher registered (CGDisplayRegisterReconfigurationCallback)
2026-05-12T09:21:10.055207Z INFO screenpipe_engine::permission_monitor: permission monitor started screen=true mic=true accessibility=true keychain=true
2026-05-12T09:21:10.055275Z INFO screenpipe: meeting detector enabled — independent of transcription mode
2026-05-12T09:21:10.666779Z INFO screenpipe: API server listening on [IP_ADDRESS]:3030 (localhost only)
2026-05-12T09:21:10.666832Z INFO screenpipe: API auth enabled — run `screenpipe auth token` to view your key
2026-05-12T09:21:10.666681Z INFO screenpipe_engine::power::manager: power manager started (poll interval: 10s)
2026-05-12T09:21:10.666983Z INFO screenpipe_engine::vision_manager::manager: Starting VisionManager
2026-05-12T09:21:10.666647Z INFO screenpipe_engine::snapshot_compaction: snapshot compaction worker started (min_age=600s, poll=300s)
2026-05-12T09:21:10.673969Z INFO screenpipe_core::pipes: loaded pipe: day-recap
2026-05-12T09:21:10.675449Z INFO screenpipe_core::pipes: loaded pipe: standup-update
2026-05-12T09:21:10.676236Z INFO screenpipe_core::pipes: loaded pipe: ai-habits
2026-05-12T09:21:10.676638Z INFO screenpipe_core::pipes: loaded pipe: time-breakdown
2026-05-12T09:21:10.677056Z INFO screenpipe_core::pipes: loaded pipe: video-export
2026-05-12T09:21:10.677293Z INFO screenpipe_core::pipes: loaded pipe: meeting-summary
2026-05-12T09:21:10.677398Z INFO screenpipe_core::pipes: loaded 6 pipes from "/Users/lukas/.screenpipe/pipes"
_
__________________ ___ ____ ____ (_____ ___
/ ___/ ___/ ___/ _ \/ _ \/ __ \ / __ \/ / __ \/ _ \
(__ / /__/ / / __/ __/ / / / / /_/ / / /_/ / __/
/____/\___/_/ \___/\___/_/ /_/ / .___/_/ .___/\___/
/_/ /_/
power AI by everything you've seen, said or heard
open source | runs locally | developer friendly
┌────────────────────────┬────────────────────────────────────┐
│ setting │ value │
├────────────────────────┼────────────────────────────────────┤
│ audio chunk duration │ 30 seconds │
│ port │ 3030 │
│ audio disabled │ false │
│ vision disabled │ false │
│ pause on DRM content │ false │
│ audio engine │ Parakeet │
│ vad engine │ Silero │
│ data directory │ /Users/lukas/.screenpipe │
│ debug mode │ false │
│ telemetry │ true │
│ use pii removal │ true │
│ use all monitors │ true │
│ ignored windows │ [] │
│ included windows │ [] │
│ cloud sync │ disabled │
│ auto-destruct pid │ 0 │
│ deepgram key │ not set │
│ api auth │ enabled │
│ encrypt secrets │ disabled │
│ retention days │ 14 │
│ retention mode │ media-only (keep transcripts) │
├────────────────────────┼────────────────────────────────────┤
│ languages │ │
│ │ all languages │
├────────────────────────┼────────────────────────────────────┤
│ monitors │ │
│ │ id: 1 │
│ │ id: 2 │
├────────────────────────┼────────────────────────────────────┤
│ audio devices │ │
│ │ MacBook Pro Microphone (input) │
│ │ System Audio (output) │
└────────────────────────┴────────────────────────────────────┘
you are using local processing. all your data stays on your computer.
warning: telemetry is enabled. only error-level data will be sent.
to disable, use the --disable-telemetry flag.
check latest changes here: https://github.com/screenpipe/screenpipe/releases
2026-05-12T09:21:10.684547Z INFO screenpipe_core::pipes: pipe scheduler started (generation 2)
2026-05-12T09:21:10.686111Z INFO screenpipe: starting UI event capture
2026-05-12T09:21:10.696691Z WARN screenpipe: pi agent install failed: bun not found — install from https://bun.sh
2026-05-12T09:21:10.705742Z INFO screenpipe_engine::power::manager: initial power profile: Performance (on_ac=true, battery=Some(100))
2026-05-12T09:21:10.712331Z INFO screenpipe_engine::ui_recorder: Starting UI event capture
2026-05-12T09:21:10.753596Z INFO screenpipe_engine::ui_recorder: UI recording session started: eee53fe6-52d6-4c4e-a7e5-11ede410f444
2026-05-12T09:21:10.753638Z INFO screenpipe_engine::calendar_speaker_id: speaker identification: started (user_name=<not set>)
2026-05-12T09:21:10.753679Z INFO screenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-05-11 06:21:10.753677 UTC to 2026-05-12 06:21:10.753677 UTC)
2026-05-12T09:21:10.754945Z INFO screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)
2026-05-12T09:21:10.764596Z INFO screenpipe_engine::server: Server listening on [IP_ADDRESS]:3030
2026-05-12T09:21:10.771437Z INFO screenpipe_connect::mdns: mdns: advertising screenpipe on port 3030
2026-05-12T09:21:15.451981Z WARN sqlx::query: summary="SELECT f.id, f.timestamp, f.offset_index, …" db.statement="\n\nSELECT\n f.id,\n f.timestamp,\n f.offset_index,\n COALESCE(\n SUBSTR(f.full_text, 1, 200),\n SUBSTR(f.accessibility_text, 1, 200),\n (\n SELECT\n SUBSTR(ot.text, 1, 200)\n FROM\n ocr_text ot\n WHERE\n ot.frame_id = f.id\n LIMIT\n 1\n )\n ) as text,\n COALESCE(\n f.app_name,\n (\n SELECT\n ot.app_name\n FROM\n ocr_text ot\n WHERE\n ot.frame_id = f.id\n LIMIT\n 1\n )\n ) as app_name,\n COALESCE(\n f.window_name,\n (\n SELECT\n ot.window_name\n FROM\n ocr_text ot\n WHERE\n ot.frame_id = f.id\n LIMIT\n 1\n )\n ) as window_name,\n COALESCE(vc.device_name, f.device_name) as screen_device,\n COALESCE(vc.file_path, f.snapshot_path) as video_path,\n COALESCE(vc.fps, 0.033) as chunk_fps,\n f.browser_url,\n f.machine_id\nFROM\n ...
|
iTerm2
|
screenpipe"
|
NULL
|
21773
|